1.中断响应
中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。
(1)中断响应条件。
CPU响应中断的条件有:
a.有中断源发出中断请求。
b.中断总允许位EA=1。
c.申请中断的中断源允许。
满足以上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。
a.CPU正在响应同级或高优先级的中断。
b.当前指令未执行完。
c.正在执行中断返回指令或访问专用寄存器IE和IP的指令。
若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询;否则,CPU在下一机器周期响应中断。
CPU在每个机器周期的S5P2期间查询每个中断源,并设置相应的标志位,在下一机器周期S6期间按优先级顺序查询每个中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级进行中断处理。(www.xing528.com)
(2)中断响应过程。
中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。首先,中断系统通过硬件自动生成长调用指令(LCALL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其他寄存器的内容),然后将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。51系列单片机各中断源的入口地址由硬件事先设定,其分配情况如表6-1所示。要特别强调的是,在使用Keil C51时,C51中断服务程序函数的后面应该具有关键字“interrupt”和对应的中断号,中断服务函数的中断号如表6-1中中断号所示。
表6-1 中断入口地址和中断编号
2.中断处理
中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,一般包括两部分内容:一是保护现场,二是完成中断源请求的服务。
通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其他一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序的混乱。因此,在进入中断服务程序后,一般要先保护现场,然后执行中断处理程序,在中断返回之前再恢复现场。
3.中断返回
中断返回是指中断服务完后,单片机返回原来断开的位置(即断点),继续执行原来的程序。在使用C51编程时,中断服务程序在编译时会自动添加中断返回指令和堆栈操作。
中断处理过程如图6-4所示。
图6-4 中断处理过程流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。