既然进了中断就一定得出中断,也就是说一定会返回断点的。如果你不想让程序顺序执行,可以在中断程序中设一个标志位,出了中断后先判断标志位的情况来决定程序执行的顺序。合理的安排程序的逻辑结构就好了。
1、关中断:进入不可再次响应中断的状态,由硬件自动实现。因为接下去要保存断点,保存现场。在保存现场过程中,即使有更高级的中断源电请中断,CPU也不应该响应;否则如果现场保存不完整,在中断服务程序结束之后,也就不能正确地恢复现场并执行现行程序。
2、保存断点保存现场:为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来。
3、判别中断源转入中断服务程序:在多个中断源同时请求中断的情况下,本次实际响应的只能是优先权最高的那个中断源。所以需要进一步判刚中断源,并转入相应的中断服务程序入口。4、开中断:执行中断服务程序,开中断将允许更高级中断请求得到相应。实现中断嵌套。
5、执行中断服务程序:不同中断源的中断服务程序是不同的,实际有效的中断处理工作是在此程序段中实现的。
6、退出中断:在退出时,又应该进入不可中断状态,即关中断,恢复现场,恢复断点,然后开中断,返回原程序执行即可。
① 响应中断请求。当 CPU 正在执行主程序时,如果接收到中断源发出的中断请求信号,就会响应中断请求,停止主程序,开始执行中断。
② 保护断点。为了在执行完中断后能返回主程序,在执行中断时,会将主程序的下一条指令的地址(又称断点地址)保存到数据存储器(RAM)的堆栈中。
③ 寻找中断入口地址。保护好断点后,CPU开始寻找中断入口地址(又称矢量地址),中断入口地址存放着相应的中断子程序,不同的中断源对应着不同的中断入口地址。MCS-51系列单片机5个中断源对应的中断入口地址见表
④ 执行中断子程序。CPU寻找到中断入口地址后,就开始执行中断入口地址处的中断子程序。由于几个中断入口地址之间只有8个单元空间(表中如0003H~000BH相隔8个单元),较小的中断子程序(程序只有一两条指令)可以写在这里,较大的中断子程序无法写入,通常的做法是将子程序写在其他位置,而在中断入口地址单元只写一条跳转指令,由该指令跳转到中断子程序。
⑤ 中断返回。执行完中断子程序后,就会返回到主程序,返回的方法是从RAM的堆栈中取出之前保存的断点地址,然后执行该地址处的主程序,从而返回到主程序。
关闭中断标识,重要数据入栈, 处理中断服务功能, 数据出栈, 恢复中断标识, 开中断。
初始化中断类型码n对应的中断向量表,指向对应的中断服务程序;中断前要开中断,中断标志I置1。当执行完中断服务程序,当执行到中断子程序最后一条指令IRET时,自动地,先后d出IP、CS、PSW。自动开中断了,并返回到断点处继续往下执行。
以上就是关于单片机 中断之后 怎么才能不返回断点全部的内容,包括:单片机 中断之后 怎么才能不返回断点、如何恢复现场如何返回计算机组成原理、已达中断点如何处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)