MCS-51中断响应及中断处理过程

MCS-51中断响应及中断处理过程

一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。

image-20220811233415178

一、 中断请求

中断请求中断源(或者通过接口电路)向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语言学习路线嵌入式#
全部评论
好多年都没用51了
1 回复 分享
发布于 2022-08-12 19:28

相关推荐

点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
09-27 10:54
重庆大学 C++
人已微死:致敬传奇耐测王。
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
点赞 3 评论
分享
牛客网
牛客企业服务