位置:51电子网 » 技术资料 » 显示光电

执行中断服务子程序

发布时间:2016/7/14 20:48:46 访问次数:913

   中断服务子程序是中断的主体。程序的具体内容由用户编程决定,不同的中断在不同的应用场合下, EPL3012-222MLC中断服务子程序的内容不同。

   中断发生后,在主程序执行时,很多计算的中间结果都是使用内部寄存器来保存的,在主程序和中断服务子程序中很可能会用到同一个寄存器,比如我们最常用到的累加器ACC,在转去执行中断服务子程序时,ACC中的值为38H,而在中断服务子程序中,我们同样也使用到了累加器ACC,如果在中断返回时,此时累加器ACC中的值为56H,那么返回主程序后,就会导致主程序运行出错。因此在中断服务子程序的开始,需要把这些公用寄存器的内容进行保护,这就是保护现场。保护现场和保护断点十分类似,所不同的是,保护断点是硬件自动完成的,而保护现场则需要用户编写程序来实现。其中保护现场除了利用堆栈来进行保护外,还有一种比较有效的方法就是切换工作寄存器组,我们已经知道80C51有4组工作寄存器组,当中断发生后,在执行中断服务子程序之前,可以先切换到同主程序不同工作寄存器组,在执行完中断服务子程序后,再切换回主程序使用的工作寄存器组。

   中断返回

  执行完中断子程序后,返回断点处继续执行主程序。在80C51单片机中,就是执行RETI指令,这时,前面保护的断点就会从堆栈中弹出,送入程序计数器PC中,继续主程序的执行。


   中断服务子程序是中断的主体。程序的具体内容由用户编程决定,不同的中断在不同的应用场合下, EPL3012-222MLC中断服务子程序的内容不同。

   中断发生后,在主程序执行时,很多计算的中间结果都是使用内部寄存器来保存的,在主程序和中断服务子程序中很可能会用到同一个寄存器,比如我们最常用到的累加器ACC,在转去执行中断服务子程序时,ACC中的值为38H,而在中断服务子程序中,我们同样也使用到了累加器ACC,如果在中断返回时,此时累加器ACC中的值为56H,那么返回主程序后,就会导致主程序运行出错。因此在中断服务子程序的开始,需要把这些公用寄存器的内容进行保护,这就是保护现场。保护现场和保护断点十分类似,所不同的是,保护断点是硬件自动完成的,而保护现场则需要用户编写程序来实现。其中保护现场除了利用堆栈来进行保护外,还有一种比较有效的方法就是切换工作寄存器组,我们已经知道80C51有4组工作寄存器组,当中断发生后,在执行中断服务子程序之前,可以先切换到同主程序不同工作寄存器组,在执行完中断服务子程序后,再切换回主程序使用的工作寄存器组。

   中断返回

  执行完中断子程序后,返回断点处继续执行主程序。在80C51单片机中,就是执行RETI指令,这时,前面保护的断点就会从堆栈中弹出,送入程序计数器PC中,继续主程序的执行。


相关技术资料
7-14执行中断服务子程序
相关IC型号
EPL3012-222MLC
暂无最新型号

热门点击

 

推荐技术资料

按钮与灯的互动实例
    现在赶快去看看这个目录卞有什么。FGA15N120AN... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!