首页 理论教育 中断服务子程序流程-单片微机原理及接口技术的中断服务流程

中断服务子程序流程-单片微机原理及接口技术的中断服务流程

时间:2023-11-02 理论教育 版权反馈
【摘要】:单片机响应中断后,就进入中断服务程序。中断服务程序的基本流程如图6-6所示。下面对中断服务程序执行过程中的一些问题进行说明。为了使中断服务程序的执行不破坏这些数据或状态,以免在中断返回后影响主程序的运行,要把寄存器或存储单元中的数据送入堆栈保存起来,这就是现场保护。中断处理中断处理是中断服务程序的主体,设计者应根据任务的具体要求编写中断处理部分的程序。

中断服务子程序流程-单片微机原理及接口技术的中断服务流程

中断服务程序从中断入口地址开始执行,直到返回指令RETI为止(结束)。单片机响应中断后,就进入中断服务程序。中断服务程序的基本流程如图6-6所示。下面对中断服务程序执行过程中的一些问题进行说明。

(1)现场保护和现场恢复

所谓现场是指中断时刻单片机中某些寄存器和存储器单元中的数据或状态。为了使中断服务程序的执行不破坏这些数据或状态,以免在中断返回后影响主程序的运行,要把寄存器或存储单元中的数据送入堆栈保存起来,这就是现场保护。现场保护一定要位于中断处理程序的起始处。中断处理结束时,在返回主程序前,需要把保存的现场内容从堆栈中弹出,以恢复那些寄存器或存储器单元中原有的内容,这就是现场恢复。现场恢复一定要位于中断处理程序的后面。单片机的现场保护和现场恢复使用的主要堆栈操作指令是PUSH direct和POP direct。至于要保护哪些内容,应该由用户根据中断处理程序的具体情况来决定。

(2)关中断和开中断

图6-6中现场保护和现场恢复前关中断,是为了防止此时有高优先级的中断进入,避免现场被破坏。在保护现场之后开中断,是允许有高优先级的中断进入;中断返回前开中断,是为下一次的中断做准备。这样做的结果是,中断处理可以被打断,实现两级中断嵌套,且原来的现场保护和恢复不受影响。

978-7-111-51881-5-Chapter06-33.jpg

图6-6 中断服务程序的基本流程

但有的时候,一个重要的中断在执行时,不允许被其他的中断所打断,对此可在进入中断服务子程序后先关中断,屏蔽其他中断请求,待中断处理完成后再开中断。这样,就需要将图6-6中的“中断处理”步骤前后的“开中断”和“关中断”两个过程去掉。(www.xing528.com)

(3)中断处理

中断处理是中断服务程序的主体,设计者应根据任务的具体要求编写中断处理部分的程序。

(4)中断返回

中断服务程序的最后一条指令必须是中断返回指令RETI,RETI指令是中断服务程序结束的标志。CPU执行该指令后,由栈顶弹出断点地址送到PC指针,清除中断标志和优先级状态触发器,返回被中断的程序继续执行。

根据图6-6所示的中断服务程序流程,假设只需对PSW寄存器和累加器A进行现场保护,编写一个典型的中断服务程序如下:

978-7-111-51881-5-Chapter06-34.jpg

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

我要反馈