×
单片机 > 单片机程序设计 > 详情

51单片机第二讲(定时器中断)

发布时间:2021-12-22 发布时间:
|

1.中断的概念

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生);

CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);

待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。

2.中断的优先级

51单片机里一共有5个中断源,分别是外部中断0,定时器0,外部中断1,定时器1,串口中断,中断优先级从大到小分别是0,1,2,3,4。


3.中断的优点

分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。


4.外部中断

外部中断0是定义在P3.2口,外部中断1是定义在P3.3口

TCON的中断标志(控制寄存器):

IT0(TCON.0),外部中断0触发方式控制位。

当IT0=0时,为电平触发方式。

当IT0=1时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断0中断请求标志位。

IT1(TCON.2),外部中断1触发方式控制位。

IE1(TCON.3),外部中断1中断请求标志位。

TR0(TCON.4):T0运行控制位,其功能与TR1类同。

TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止

TF1(TCON.7),定时/计数器T1溢出中断请求标志位。


外部中断初始化:


void bsp_Int0_Init(void)//外部中断0

{

IT0 = 1; //设置边沿触发方式 等于0是电平触发方式

EX0 = 1; //开外部中断,在中断寄存器里

EA = 1; //开总中断

}


void bsp_Int1_Init(void)//外部中断1

{

IT1 = 1;

EX1 = 1;

EA = 1;

}


void ISR_INT0(void) interrupt 0//中断处理函数

{

P1 = 0x55;

}


void ISR_INT1(void) interrupt 2

{

P1 = 0xaa;

}


5.定时器中断

工作方式寄存器TMOD:

GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。(默认情况下等于0不要设置)。


C/T:定时/计数模式选择位。=0为定时模式;=1为计数模式。


M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。(正常情况旋方式1,即M1M0=01)。


中断寄存器:

EA是总中断

ET0是定时器0中断

EX0是外部中断0

ET1是定时器1中断

EX1是外部中断1


void Timer0_Init(void)

{

TMOD |= 0x01;//设置定时器为工作方式1 C/T位为1的时候是计数器模式,为0的时候是定时器模式,前四位是定时器1,后四位是定时器0

TL0 = (65536 - 1000)%256; //装初值,低8位

TH0 = (65536 - 1000)/256; //高8位

ET0 = 1; //开定时器的中断

TR0 = 1; //开定时器

EA = 1; //开总中断

}


void Timer0(void) interrupt 1

{

TL0 = (65536 - 1000)%256; //装初值,低8位//初值是1000即1ms

TH0 = (65536 - 1000)/256; //高8位

count++;

if(count == 1000)

{

count = 0;

LED = ~LED;//LED一秒钟闪烁一次

}

}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些