【摘要】:CPU响应中断请求后,就立即转入执行中断服务程序。同时,中断服务程序完成后,就需把保存的现场内容从堆栈中弹出,恢复寄存器和存储单元的原有内容,这就是现场恢复。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。
CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。
1.保护现场
中断是在执行其他任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原来的程序时,知道原来的程序在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。
如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会使程序运行紊乱,程序跑飞,自然使单片机不能正常工作。
PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL
而在C语言中程序会自动保护现场。在使用中不用对现场进行人为保护和恢复。(www.xing528.com)
2.中断服务程序
既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。
3.中断返回
执行完中断服务程序后,必然要返回,中断返回就是程序从中断服务程序转回到原工作程序上来。同时,中断服务程序完成后,就需把保存的现场内容从堆栈中弹出,恢复寄存器和存储单元的原有内容,这就是现场恢复。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。在汇编语言中典型的中断返回语句如下(恢复现场的语句与保护现场的语句遵循后进先出规则):
POP DPL恢复现场
POP DPH
POP PSW
POP ACC
RETI返回
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。