欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-13 17:32:12
...

1.中断的概念
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。
51单片机第二讲(定时器中断)
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的中断标志(控制寄存器):
51单片机第二讲(定时器中断)
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:
51单片机第二讲(定时器中断)
GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。(默认情况下等于0不要设置)。
C/T:定时/计数模式选择位。=0为定时模式;=1为计数模式。
M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。(正常情况旋方式1,即M1M0=01)。
中断寄存器:
51单片机第二讲(定时器中断)
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一秒钟闪烁一次
    }
}
相关标签: 中断 定时器