中断系统在单片机系统中起着十分重要的作用。一个功能强大的中断系统能大大提高单片机处理随机事件的能力,提高效率,增强系统的实时性。
4.3.2.1 中断概述
中断概念的出现,是计算机系统结构设计中的重大变革。中断技术实质上是一种资源共享技术。单片机的中断系统包括其硬件结构和软件编程。
(1)中断系统需要解决的问题。
1)当单片机内部或外部有中断申请时,CPU能及时响应中断,停下正在执行的任务,转去处理中断服务子程序,中断服务处理后能回到原断点处继续处理原先的任务。
2)当有多个中断源同时申请中断时,应先响应优先级高的中断源,实现中断优先级的控制。
3)当优先级低的中断源正在享用中断服务时,若优先级比它高的中断源也申请中断,要求能停下优先级低的中断源的服务程序,转去执行更高优先级中断源的服务程序,实现中断嵌套,并能逐级正确返回原断点处。
(2)中断的主要功能。
1)实现CPU与外部设备的速度协调。由于应用系统的许多外部设备速度较慢,可以通过中断的方法来协调快速CPU与慢速外部设备之间的工作。
2)实现实时控制。在单片机中,依靠中断技术能实现实时控制。实时控制要求计算机能及时完成被控对象随机提出的分析和计算任务。在自动控制系统中,要求各控制参量随机向计算机发出请求,CPU必须做出快速响应、及时处理。
3)实现故障的及时发现及处理。单片机应用中由于外界的干扰、硬件或软件设计中存在问题等因素,在实际运行中会出现硬件故障、运算错误、程序运行故障等,有了中断技术,CPU就能及时发现故障并自动处理。
4)实现人机交互。比如通过键盘向单片机发出中断请求,可以实时干预计算机的工作。
4.3.2.2 51单片机中断系统结构
51单片机中断系统的结构如图4-12所示,由5个中断请求源INT0、T0、INT1、T1、TI/RI;中断标志寄存器(TCON);中断允许寄存器(IE);全局中断允许;中断优先级寄存器(IP)和查询硬件等组成。通过对各种寄存器的读/写来控制单片机的中断类型、中断开/关和中断源的优先级。
图4-12 51单片机中断系统结构
(1)中断请求。
1)外部中断请求源。
外部中断源有外部中断0(INT0)和外部中断1(INT1),经由外部引脚P3.2、P3.3引入。在特殊功能寄存器TCON中有4位是与外部中断有关的位,如表4-9所列。
表4-9 TCON寄存器结构
IT0:INT0触发方式控制位,可由软件进行置位和复位。IT0=0时,INT0为低电平触发方式;IT0=1时,INT0为负跳变触发方式。
IE0:INT0中断请求标志位。当有外部的中断请求时,该位置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。
IT1、IE1的用途和IT0,IE0相似。
TR0:定时/计数器0的开闭控制位,当为1时定时/计数器打开,为0时关闭。
TR1:与TR0相似。
TF0:定时/计数器T0的溢出中断标记。当定时/计数器T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。
TF1:与TF0相似。
2)内部中断请求源。
内部中断请求源包括定时/计数器0、定时/计数器1以及串口中断。在特殊功能寄存器TCON中有4位与定时/计数器0、定时/计数器1有关,在SCON中有两位与串口中断有关,如表4-10所列。
表4-10 SCON寄存器结构
RI、TI:串行口发送、接收中断。
(2)中断允许寄存器IE。
在51单片机中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的,如表4-11所列。
表4-11 IE寄存器结构
EX0:外部中断0中断控制位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。
ET0:定时/计数器T0中断控制位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
EX1:外部中断1中断控制位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
ET1:定时/计数器T1中断控制位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
ES:串行口中断控制位。ES=1,允许串行口中断;ES=0,屏蔽串行口中断。
EA:中断总控制位。EA=1,CPU开放所有中断;EA=0,CPU禁止所有中断。
要设置允许外部中断0、1允许,其他不允许,则IE的值如表4-12所列,即IE=85H。
表4-12 IE=85H
(3)中断优先级寄存器IP。
51单片机采用了自然优先级和人工设置高、低优先级的策略。当CPU处理低优先级中断,又发生更高级中断时,此时中断处理过程如图4-13所示。
上电时,中断优先级寄存器IP被清零,每个中断源都处于同一个优先级,这时若其中几个中断同时产生中断请求,则CPU按照片内硬件优先级链路的顺序即自然优先级响应中断。硬件优先级由高到低的顺序如表4-13所列。
图4-13 中断优先级流程图
表4-13 51单片机中断级别
(www.daowen.com)
在某些特殊情况下,如果希望某个中断源有更高的优先级,则可以通过程序人工地设置高、低优先级。中断优先级由中断优先级寄存器IP来设置,见表4-14。
表4-14 IP寄存器结构
IP中某位设为1,则相应的中断就是高优先级;否则,就是低优先级。但在同一个优先级下,中断响应的顺序和自然优先一样。
PX0:外部中断0优先级控制位。PX0=1,声明外部中断0为高优先级中断;PX0=0,定义外部中断0为低优先级中断。
PT0:定时/计数器0优先级控制位。PT0=1,声明定时/计数器0为高优先级中断;PT0=0,
定义定时/计数器0为低优先级中断。
PX1:外部中断1优先级控制位。PX1=1,声明外部中断1为高优先级中断;PX1=0,定义外中断1为低优先级中断。
PT1:定时/计数器1优先级控制位。PT1=1,声明定时/计数器1为高优先级中断;PT1=0,定义定时/计数器1为低优先级中断。
PS:串行口中断优先级控制位。PS=1,声明串行口中断为高优先级中断;PS=0,串行口定义为低优先级中断。
4.3.2.3 51单片机中断响应过程
一个中断源的中断请求被响应的条件如下:
①总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。
②该中断源发出中断请求,即该中断源对应的中断请求标志为1。
③该中断源的中断允许位=1,即该中断被允许。
④无同级或更高级中断正在被服务。
中断响应就是对中断源提出的中断请求的接受。当CPU查询到有效的中断请求时,一旦满足上述条件,紧接着就进行中断响应。CPU响应中断时,先置位相应的优先级状态触发器(该触发器指出开始处理的中断优先级别);然后执行一条硬件子程序调用,清零中断请求源申请标志(TI和RI除外);接着把程序计数器的内容压入堆栈(但不保护PSW),将被响应的中断服务程序的入口地址送至程序计数器。各中断源服务程序的入口地址见表4-15。
CPU响应中断是有条件的,并不是查询到的所有中断请求都能被立即响应。CPU响应中断的条件如下:
①有申请的中断为高优先级中断。
②现行指令周期为最后一个机器周期。
③正在执行的指令不是中断返回指令或者是对IE寄存器、IP寄存器的写操作指令,如果是,则还需执行一条指令。
表4-15 中断入口地址表
CPU响应中断的过程可归纳如下:
①置位相应的优先级状态触发器,阻止低级中断。
②清零中断请求源申请标志(串行口中断除外)。
③把程序计数器的内容入栈(保护断点)。
④把相应的中断入口地址送至程序计数器。
⑤执行中断子程序。
⑥遇到指令RETI时,先清零优先级状态触发器,从栈顶弹出两字节送至程序计数器,返回主程序。
4.3.2.4 外部中断的响应时间
使用外部中断时,有时需考虑从外部中断请求有效(外部中断请求标志置1)到转向中断入口地址所需要的响应时间。
外部中断的最短响应时间为3个机器周期,最长响应时间为8个机器周期。
4.3.2.5 外部中断的触发方式选择
外部中断有两种触发方式:电平触发方式和边沿触发方式。
(1)电平触发方式。
若外部中断定义为电平触发方式,则外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化,这能提高CPU对外部中断请求的响应速度。当外部中断源被设定为电平触发方式时,在中断服务程序返回之前,外部中断请求输入必须无效(即外部中断请求输入已由低电平变为高电平);否则返回主程序后会再次响应中断。所以电平触发方式适合于外部中断以低电平输入,且中断服务程序能清除外部中断请求源(即外部中断输入电平又变为高电平)的情况。
(2)边沿触发方式。
若外部中断定义为边沿触发方式,则外部中断申请触发器能锁存外部中断输入线上的负跳变。即便是暂时不能响应,中断请求标志也不会丢失。在这种方式下,如果相继连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则中断申请触发器置1,直到CPU响应此中断时,该标志才清零。这样就不会丢失中断,但输入的负脉冲宽度至少保持12个时钟周期(若晶振频率为6 MHZ,则为2μs)才能被CPU采样到。外部中断的边沿触发方式适合于以负脉冲形式输入的外部中断请求。
4.3.2.6 中断请求的撤除
CPU响应中断请求,转向中断服务程序执行,在其执行中断返回指令(RETI)之前,中断请求信号必须撤除,否则会因再一次引起中断而出错。
中断请求撤除的方式有以下3种。
(1)由单片机内部硬件自动复位。
对于定时器/计数器T0、T1的溢出中断和采用跳变触发方式的外部中断请求,在CPU响应中断后,由内部硬件自动清除。中断标志TF0和TF1、IE0和IE1,由硬件自动撤除(硬件置位,硬件清除)。
(2)需用软件清除相应标志。
对于串行接收发送中断请求,在CPU响应中断后,必须在中断服务程序中应用软件清除RI、TI中断标志,才能撤除中断(硬件置位,软件清除)。
(3)采用外加硬件结合软件清除中断请求。
对于采用电平触发方式的外部中断请求,中断标志的撤除是自动的,但中断请求信号的低电平可能继续存在,在以后机器周期采样时又会把已清零的IE0、IE1标志重新置1,再次申请中断。为保证在CPU响应中断后执行返回指令前,撤除中断请求,必须考虑另外的措施,保证在中断响应后把中断请求信号从低电平强制变为高电平。
4.3.2.7 外部中断应用
例4-2 根据例4-1原理图,设计系统功能:控制按键S1(外部中断0接口),观察P1口连接的灯的状态。
代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。