姓名:郝津锐 学号:19020100179 学院:电子工程学院
转自:http://news.eeworld.com.cn/mcu/2018/ic-news071640358.html
【嵌牛导读】本文探讨了单片机中的外部中断原理与常见方式
【嵌牛鼻子】单片机外部中断
【嵌牛提问】单片机的外部中断是什么,有什么作用
【嵌牛正文】
单片机在自主运行时一般是在执行一个死循环程序,在没有外界干预(输入信号)时它基本处于一个封闭状态,例如电子时钟会按时、分、秒的规律自主运行并通过输出设备把时间显示出来。在不需要对它进行调校时它不需要外部干预,自主封闭地运行。如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。但事情往往不会如此简单,在时钟刚刚上电或时钟需要重新校准.甚至时钟被带到不同时区的时候,就需要重新对时钟进行调校,这时就要求时钟必须具有调校功能。因此单片机系统往往又不会是一个单纯的封闭系统.它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原因。
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置两个触发寄存器,同时在中断屏蔽寄存器的相应位写1允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置l。在挂起寄存器的对应位写1,将清除该中断请求。如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置两个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求。当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置1。通过在软件中断/事件寄存器写1,也可以通过软件产生中断/事件请求。
STC89C5X系列单片机提供了4个外部中断:外部中断O(INTO)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。
51单片机的外部中断有两种模式:电平触发模式和跳变沿触发模式
当选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断;当选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。
这两者之间的区别在于电平触发模式时,中断标志寄存器不锁存电平中断请求信号,单片机把每个周期的S5P2采样外部中断口的电平逻辑直接赋值到中断标志寄存器,标志寄存器对于请求信号来说是透明的,这样当中断请求被阻塞而没有得到及时响应时,将被丢失。
换言之,就是要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
而使用边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。
因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。