单片机的中断现场保护

2018-12-25 19:07严成武
电子技术与软件工程 2018年8期
关键词:服务程序累加器寄存器

文/严成武

1 中断现场保护概念

如果在中断服务程序中要占用一些寄存器进行运算,而在主程序中这些寄存器也是很重要的,为了二者互不干扰,所以在进入中断服务程序时就要保存寄存器的数值,以便在从中断返回后继续正常的往下执行,这种保存寄存器数值的过程就是现场保护。

2 中断现场保护要求

在单片机运行程序时,一般要用到多个寄存器,特别是累加器、状态寄存器等等,中断服务程序是属于一种处理突发性事件的程序,在正常运行程序任意时刻都可以插入进来的程序。所以,在进入中断程序时,可能累加器保存着数据,这时中断程序也要用累加器,如果不保存,到退出中断时,原来的数据已经变了,这样就不知会发生什么状况了。

本文以义隆电子EM78P451型号单片机为例,说明中断现场保护实现的方法。在EM78P451的硬件结构中,有3个很重要的特殊功能寄存器,分别为:

(1)累加器A。用于内部数据传输。

(2)状态寄存器R3。保存单片机的各种状态位和选择ROM的当前页。

(3)RAM选择寄存器R4。选择RAM的BANK区。

通常,在使用EM78P451时,主程序和中断服务程序都会用到这3个寄存器。因此,进入中断程序时,需要先将这3个寄存器保存到普通RAM中;在退出中断程序时,要将保存的值恢复到这3个寄存器中。

3 指令功能及现场保护要求分析

由于EM78P451没有象51系列单片机那样的PUSH、POP指令,所以我们要用一段程序来实现类似的功能。

又写作“笼罗”。《晋书·刘元海载记》:“及元海僣号,人谓元达曰,‘往刘公相屈,君蔑而不顾,今称号龙飞,君其惧乎?’元达曰,‘彼人姿度卓荦,有笼罗宇宙之志,吾固知之久矣。’”又写作“笼落”。《说文·竹部》:“笯,鸟笼也。”《楚辞·九章》:“凤皇在笯兮。王逸注云,‘笯,笼落也。’”《方言》:“笯,笼,南楚江沔之闲谓之篣。”以上“笼络”“笼罗”“笼落”皆有“包罗、覆盖”之义。

要实现将这3个寄存器保存到普通RAM中,必须要用到数据传送指令,而EM78P451中的所有数据传送指令都要用到累加器A。因此,我们第一步必须先保存累加器A。而EM78P451中的绝大部分数据传送指令在运行的过程中会改变状态寄存器R3的数据,所以在保护好状态寄存器R3之前禁止使用会改变状态寄存器R3的指令 。数据传送指令不会改变选择寄存器R4的值,可放在最后保存。

综上所述,我们应首先用一条不会改变状态寄存器R3的指令,将累加器A保存到普通RAM中;然后,再保存状态寄存器R3;最后,保存选择寄存器R4。

恢复现场的过程则与保护现场的过程相反。

4 中断现场保护实现方法

4.1 保护现场

语句1:MOV TEMP_A,A ;保存累加器A,这条指令不影响R3的值

语句2:SWAPA R3 ;将R3高低4位交换,并传送到A

语句3:MOV TEMP_R3,A ;保存R3

语句4:MOV A,R4 ;将R 4传送到A语句5:MOV TEMP_ R4,A ;保存R4

4.2 恢复现场

语句1:MOV A,TEMP_R4 ;将之前保存的R 4值传送到A

语句2:MOV R4,A ;恢复R4的值

语句3:SWAPA TEMP_R3 ;将之前保存的R3的值,高低4位交换,并传送到A

语句4:MOV R3,A ;恢复R3的值

语句5:SWAP TEMP_A ;将之前保存的A的值,高低4位交换,这条指令不影响R3的值

语句6:SWAPA TEMP_A ;将之前保存的A的值再高低4位交换,并恢复A的值,这条指令不影响R3的值

这样,就完整地实现EM78P451单片机的中断现场保护功能。

5 结束语

文章在对EM78P451单片机的中断现场保护要求和指令功能进行了分析之后,提出了一种简单、可靠的单片机中断现场保护方法,并给出了具体的保护现场和恢复现场的程序。文章使用的方法具有通用性和易用性,并在基于义隆电子EM78P451型号单片机的中断服务程序中得到应用,取得了良好的效果,对单片机的程序开发具有实际的参考价值。

参考文献

[1]徐惠民,安德宁编著.单片微型计算机[M].北京邮电学院出版社,2013.

[2]马忠梅编著.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2014.

猜你喜欢
服务程序累加器寄存器
密码累加器研究进展及应用
SylixOS系统的中断嵌套机制研究与实现
基于C#的进程守护程序的设计
Lite寄存器模型的设计与实现
Fpga的信号发生器设计原理
分簇结构向量寄存器分配策略研究*
水利工程施工监理服务程序及质量控制
用于时间延迟积分型图像传感器的流水采样列级运放共享累加器*
高速数模转换器AD9779/AD9788的应用
一种可重构线性反馈移位寄存器设计