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

MCS51单片机的外部中断触发方式

发布时间:2020-06-04 发布时间:
|
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。


这个原理很好理解。但应用时需要特别注意的几点:


1)电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。


2)边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。


3)中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。


4)选择电平触发还是边沿触发方式应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。

 

传统的MCS51单片机有两个外部中断,有低电平和下降沿两种触发方式。通过特殊功能寄存器TCON的状态,可以配置中断的触发方式。

    当处于低电平触发方式时,CPU在每个机械周期内进行电平采样,当采样到的电平为低时,将中断标记IE1(IE0)置1,表示正在向CPU请求中断。需要注意的是,IE1(IE0)的值必须通过软件在中断服务程序中清除,否则会再次进入中断。如下:

       #include

       void main(void)

       {

              EA  = 1;//总线开中断

              EX0 = 1;//外部中断0使能

              IT0 = 0;//低电平触发方式

              while(1);

        }

       void INTR0(void) interrupt 0 unsing 0 //中断服务程序

       {

              P1_1 =  ~P1_1;

              IE0 = 0;//软件清除标志位

        }

    低电平触发方式下,中断标志寄存器不会锁存中断请求信号,也就是说,要确保低电平触发的中断被执行。需要保持低电平直至该中断服务程序开始执行;而边沿触发方式下,中断标志寄存器会所锁存,同时中断标志位也会在中断服务程序执行完毕之后,由硬件清除。在使用电平触发时,如不希望出现重复程序进入中断的现象,应在中断执行完毕后关闭中断允许。



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

热门文章 更多
如何为单片机选择合适的负载电容