首页 理论教育 单片机响应中断的条件及过程

单片机响应中断的条件及过程

时间:2023-10-17 理论教育 版权反馈
【摘要】:设定该限制的目的是只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。若由于上述条件的阻碍,中断请求未能得到响应,当条件消失该中断标志不再有效时,那么该中断将不被响应。也就是说,中断标志曾经有效,但未获得响应,查询过程在下一个机器周期重新进行。中断响应过程的前3步是由中断系统内部自动完成的,而中断服务程序则要由用户编写完成。

单片机响应中断的条件及过程

1.中断响应的条件

一个中断源的中断请求要被响应,必须满足以下必要条件:

(1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。

(2)该中断源发出中断请求,即该中断源对应的中断请求标志位为1。

(3)该中断源的中断允许位为1,即该中断被允许。

(4)无同级或更高级中断正在被服务。

中断响应是CPU对中断源提出的中断请求的接收,当CPU查询到有效中断请求时,若满足上述条件,就立刻进行中断响应。

并不是查询到的所有中断请求都能被立刻响应,当遇到下列3种情况之一时,硬件将受阻,CPU不会响应中断:

(1)CPU正在处理同级或更高优先级的中断。

(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。设定该限制的目的是只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。

(3)正在执行的指令是RETI或是访问IE或IP的指令。因为按照51单片机中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。

若由于上述条件的阻碍,中断请求未能得到响应,当条件消失该中断标志不再有效时,那么该中断将不被响应。也就是说,中断标志曾经有效,但未获得响应,查询过程在下一个机器周期重新进行。

2.中断响应过程

CPU响应中断的过程如下:

(1)根据中断请求源的优先级高低,将对应的优先级状态触发器置1(以阻断后来的同级或低级的中断请求)。

(2)清除内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)

(3)执行一条长调用指令(LCALL addr16),把程序计数器PC的内容压入堆栈保存,再将被响应的中断服务程序入口地址送入PC。这里的addr16就是程序存储区中相应的中断服务程序入口地址,可结合第2章2.2.2(MCS-51单片机的程序存储器配置)进行理解。

(4)执行中断服务程序。

中断响应过程的前3步是由中断系统内部自动完成的,而中断服务程序则要由用户编写完成。编写中断服务程序时应注意以下两点:(www.xing528.com)

①由于51单片机相邻的两个中断入口间只相隔8字节,一般情况下难以存放一个完整的中断服务程序。因此,通常在中断入口地址处放置一条无条件转移指令,使程序执行转向在其他地址存放的中断服务程序入口。

②硬件长调用指令(LCALL)只是将PC寄存器内的断点地址压入堆栈保护,而对其它寄存器的内容并不做保护处理。所以,在中断服务程序中,首先要用软件保护现场,在中断服务之后、中断返回前恢复现场,以防止中断返回后丢失源寄存器的内容。

3.中断响应时间

由中断响应条件可知,CPU不是在任何情况下都对中断请求立即响应的,而且不同的情况对中断响应的时间也不同,下面以外部中断为例,说明中断响应时间。

外部中断请求信号电平在每个机器周期的S5P2期间,经反相锁存到IE0或IE1标志位,CPU在下一个机器周期才会查询到这些值,这时如果满足响应条件,CPU响应中断时,以两个机器周期的时间由硬件电路完成中断服务程序的调用,以转到相应的中断服务入口。这样,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需3个机器周期。

如果在请求中断时,CPU正在处理最长指令(如乘、除法指令),则额外等待时间增加3个机器周期;若正在执行RETI或访问IE、IP指令,则额外等待时间又增加2个机器周期。

综合估算,若系统中只有一个中断源,则响应时间为3~8个机器周期。

4.中断请求的撤销

某个中断请求被响应后,就存在着一个中断请求的撤销问题。下面按中断请求源的类型分别说明中断请求的撤销。

(1)定时/计数器中断请求的撤销。

定时/计数器中断请求被响应时,硬件会自动把中断请求标志位(TF0或TF1)清零,因此定时/计数器中断请求是自动撤销的。

(2)外部中断请求的撤销。

①边沿触发方式外部中断请求的撤销。

边沿触发方式的外部中断请求被响应时,硬件会自动把中断请求标志位(IE0或IE1)清零,同时,由于边沿信号随后消失,所以边沿触发方式的外部中断请求也是自动撤销的。

②电平触发方式外部中断请求的撤销。

电平触发方式的外部中断请求被响应时,对于电平方式外部中断请求的撤销,硬件会自动把中断请求标志位(IE0或IE1)清零,但中断请求信号的低电平可能继续存在,在以后的机器周期采样时,又会把已清零的IE0或IE1标志位重新置1.因此,要彻底解决电平触发方式外部中断请求的撤销,除了标志位清零之外,必要时还需在中断响应后把中断请求信号输入引脚从低电平强制改为高电平,为此需在系统中增加外围电路来实现。

③串行口中断请求的撤销。

串行口中断请求被响应时,串行口中断的标志位TI和RI不会自动清零,因为在响应串行口的中断请求后,CPU还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以,串行口中断请求的撤销只能用软件的方法,在中断服务程序中进行,即用软件在中断服务程序中把串行口中断标志位TI、RI清零。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈