中断是指计算机暂时停止原程序执行转而响应需要服务的紧急事件(执行中断服务程序),并在服务完后自动返回原程序执行的过程。
中断由中断源产生,中断源在需要时可以向CPU提出 “ 中断请求 ” 。 “ 中断请求 ” 通常是一种电信号, CPU一旦对这个电信号进行检测和响应便可自动转入该中断源的中断服务程序执行,并在执行完后自动返回原程序继续执行,中断源不同中断服务程序的功能也不同。
1.1采用中断控制方式的优点
(1)可以提高CPU的工作效率
(2)可以提高实时数据的处理时效
1.2中断源
中断源是指引起中断的设备、部件或事件。通常,中断源有以下几种:
(1)外部设备中断源
(2)控制对象中断源
(3)故障中断
(4)定时脉冲中断源
1.3中断优先级与中断嵌套
(1)中断优先级:一个CPU总会有若干中断源,但在同一瞬间,CPU只能响应其中的一个中断请求,为了避免在同一瞬间若干个中断源请求中断而带来的混乱,必须给每个中断源的中断请求设定一个中断优先级,CPU先响应中断优先级高的中断请求。
(2)中断嵌套:在某一瞬间,CPU因响应某一中断源的中断请求而正在执行其它的中断服务程序时,若有中断优先级更高的中断源提出中断请求,那它可以把正在执行的中断服务程序停下来,转而响应和处理中断优先权更高中断源的中断请求,等到处理完后再转回来继续执行原来的中断服务程序,这就是中断嵌套。
1.4中断系统功能
(1)进行中断优先级排队
(2)实现中断嵌套
(3)自动响应中断
(4)实现中断返回
2、MCS-51 单片机中断系统
(1)外部中断INT0、INT1
输入/输出设备的中断请求,系统故障的中断请求等都可以作为外部中断源,从引脚INT0或INT1输入。
外部中断请求INT0、INT1的两种触发方式:
电平触发及跳沿触发,由TCON的ITO位及IT1位选择。
ITO(IT1)= “ 0 ” 时,为 INT0、INT1电平触发方式,CPU响应中断后要采取措施撤消中断请求信号,使INT0或INT1恢复高电平。
ITO(IT1)= “ 1 ” 时为跳沿触发方式,当 INT0或INT1引脚上出现负跳变时,该负跳变经边沿检测器使IEO(TCON.1)或IE1(TCON.3)置1,向CPU申请中断。CPU响应中断转入中断服务程序时,由硬件自动清除IEO或IE1。
(2)定时器/计数器0、l溢出中断
定时器/计数器计数溢出时,由硬件分别置TF0 = “ 1 ” 或 TF1 = “ 1 ” ,向 CPU申请中断。CPU响应中断转入中断服务程序时,由硬件自动清除TFO或TF1。
(3)串行口中断
串行口中断由单片机内部串行口中断源产生。串行口中断分为单行口发送中断和串行口接收中断两种。在串行口进行发送/接收数据时,每当发送/接收完一组数据,使串行口控制寄存器 SCON中的 RI = “ 1 ” 或 TI = “ 1 ” ,并向 CPU发出串行口中断请求,CPU响应串行口中断后转入中断服务程序执行。由于RI和TI作为一个中断源,所以需要在中断服务程序中安排一段对RI和TI中断标志位状态的判断程序,以区分发生了接收中断请求还是发送中断请求,而且必须用软件清除TI和RI。
3、中断控制寄存器的设置
3.1中断允许控制
MCS - 51单片机有 5个(8052有 6个)中断源, 为了使每个中断源都能独立地被允许或禁止, 以便用户能灵活使用, CPU内部在每个中断信号的通道中设置了一个中断允许触发器, 它控制CPU能否响应中断。只有对应的中断允许触发器被使能(置“1”),相应的中断才能得到相应。
中断允许控制寄存器IE (0A8H)
EA |
- |
- |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
EX0:外部中断0允许位
ET0:定时器/计数器0中断允许位
EX1:外部中断1允许位
ET1:定时器/计数器1中断允许位
ES : 串行口中断允许位
EA :中断总允许位
3.2中断优先级控制寄存器IP(0B8H)
- |
- |
- |
PS |
PT1 |
PX1 |
PT0 |
PX0 |
PX0:外部中断0允许位
PT0:定时器/计数器0中断允许位
PX1:外部中断1允许位
PT1:定时器/计数器1中断允许位
PS:串行口中断允许位
同一级中的5个中断源的优先顺序是:
/INT0中断
T0溢出中断
/INT1中断
T1溢出中断
串口中断
MCS-51系列单片机的中断响应顺序:
CPU同时接收到几个中断请求时,首先响应优先权最高的中断请求。正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现二级中断嵌套。正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。
各中断源优先级的设置要注意各个要求服务的中断事件的轻重缓急和中断服务程序的执行时间。原则是:紧急事件和处理时间短的中断优先级别高。
3.4 中断服务程序
中断服务程序入口地址:
五个中断源: 入口地址
外部中断0(/INT0) 0003H
T0溢出中断 000BH
外部中断1(/INT1) 0013H
T1溢出中断 001BH
串口中断 0023H