您的位置:首页 > 其它

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

2018-01-28 19:03 337 查看
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一秒钟闪烁一次
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: