您的位置:网站首页 > 电器维修资料网 > 正文 >
响应中断请求的条件
★★★★★【文章导读】:响应中断请求的条件具体内容是:一个中断源的中断请求被响应,必须满足以下必要条件:(1)总中断允许开关接通,即ie寄存器中的中断总允许位ea=1。(2)该中断源发出中断请求,即该中断源对应的中断请求标志为1。(3)该中断源的中断允许位=1,即该中断被…
来源: 日期:2013-12-18 13:59:51 人气:标签:
一个中断源的中断请求被响应,必须满足以下必要条件:
(1)总中断允许开关接通,即ie寄存器中的中断总允许位ea=1。
(2)该中断源发出中断请求,即该中断源对应的中断请求标志为1。
(3)该中断源的中断允许位=1,即该中断被允许。
(4)无同级或更高级中断正在被服务。
中断响应就是cpu对中断源提出的中断请求的接受。当cpu查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。
中断响应的主要过程是首先由硬件自动生成一条长调用指令“lcall addr16”。这里的addr16就是程序存储区中相应的中断人口地址。例如,对于外部中断1的响应,硬件自动生成的长调用指令为
生成lcall指令后,紧接着就由cpu执行该指令。首先将程序计数器pc的内容压入堆栈以保护断点,再将中断入口地址装入pc,使程序转向响应中断请求的中断人口地址。各中断源服务程序的入口地址是固定的,见下表。
中断入口地址表
表中,两个中断入口间只相隔8字节,一般情况下难以安放一个完整的中断服务程序。因此,通常总是在中断入口地址处放置一条无条件转移指令,使程序执行转向在其他地址存放的中断服务程序人口。
中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁:
(1)cpu正在处理同级或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态触发器置1(该触发器指出cpu所处理的中断优先级别),从而封锁了低级中断请求和同级中断请求。
(2)所查询的机器周期不是当前正在执行指令的 后一个机器周期。设定这个限制的目的是只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。
(3)正在执行的指令是reti或是访问ie或ip的指令。因为按照at89s51中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。
如果存在上述三种情况之一,cpu将丢弃中断查询结果,不能对中断进行响应。
【看看这篇文章在百度的收录情况】
相关文章
- 上一篇: AT89S51中断系统结构
- 下一篇: 单片机学习基本知识