MCS-51中断响应及中断处理过程
MCS-51中断响应及中断处理过程
一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。
一、 中断请求
中断请求是中断源(或者通过接口电路)向CPU发出请求中断的信号。
一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向CPU发出信号,请求CPU中断。
中断请求信号可以是电平信号,也可以是脉冲信号。应该一直保持到CPU做出反应。
二、 中断响应
中断响应是在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。
1.CPU的中断响应条件
(1) 有中断源发出中断申请;
(2) 中断总允许位EA=1,即CPU允许所有中断源申请中断;
(3) 申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。
-
有下列任何一种情况存在,中断响应都会受到阻断:
-
CPU正在执行一个同级或高一级的中断服务程序;
-
当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前,任何中断请求都得不到响应;
-
正在执行的指令是返回(RETI)指令或者对专用寄存器IE、IP进行读/写的指令,此时,在执行RETI或者读写IE或IP之后,不会马上响应中断请求。
-
由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。
2.中断响应过程
单片机响应中断时,先置位相应的优先级状态触发器(该触发器指示CPU开始处理的中断的优先级别,它为1屏蔽所有同级中断 ),然后执行一条硬件子程序调用,使程序转移到相应的入口:清零中断请求标志(RI、TI除外),由硬件将PC当前值压栈(不保护PSW),将中断服务程序入口地址送PC。
MCS-51中断入口地址和中断输入引脚是一一对应的,从哪个中断输入引脚进入的中断请求,它的中断服务程序入口地址一定是某个固定值。如从INT0(P3.2)引脚进入的中断请求,转向的中断入口地址是0003H单元。
三、中断处理
中断处理(又称中断服务)程序从入口地址开始执行,直到返回指令“RETI”为止,这个过程称为中断处理。
一般包括保护现场和处理中断源的请求及恢复现场三部分内容。
一般累加器、PSW寄存器和一些其它寄存器需要保护。
四、 中断返回
中断返回是指执行完中断服务程序后,程序返回到断点,继续执行原来的程序。
中断返回由专门的中断返回指令“RETI”实现。
CPU执行RETI指令后,先清零响应中断时置位的优先级状态触发器,然后从堆栈中弹出两个字节到PC,CPU从原来中断处重新执行被中断的程序。
各中断源入口地址间只有几个字节,无法放下中断服务程序,一般在这几个字节中放一条转移指令。
五、中断响应时间
不同的情况对中断响应的时间不同:
-
最短的响应时间,需要3个机器周期。
-
如果遇到中断受阻的情况,响应时间会更 长一些。
-
如果有两个以上中断源同时申请中断,则响应时间将更长。
六、 中断请求的撤除
CPU响应某中断请求后,在中断返回前,应撤消该中断请求。
-
定时器0或1溢出中断,CPU在响应中断后,中断请求自动撤除。
-
边沿激活的外部中断,CPU在响应中断后,硬件自动清除有关的中断请求 。
-
串行口中断,CPU响应中断后,靠软件来清除相应的标志。
电平激活的外部中断撤除方法较复杂。
#嵌入式##C语言学习路线嵌入式#