首页 理论教育 单片机原理与接口技术-设计实训成果

单片机原理与接口技术-设计实训成果

时间:2023-11-16 理论教育 版权反馈
【摘要】:中断服务程序的设计要考虑以下几个因素。;外部中断0处理程序…2 现场保护和工作寄存器分区中断服务程序中要使用与主程序有关的寄存器,因此CPU在中断之前要保护这些寄存器的内容,即要“保护现场”,而在中断返回时又要使它们恢复原值,即“恢复现场”。但是,对于某些不允许被中断的服务程序来说,也可以在CPU响应中断后用CLR指令对IE寄存器某些位清0来禁止相应高优先级中断源的中断。

单片机原理与接口技术-设计实训成果

中断服务程序的设计要考虑以下几个因素。

1 中断程序入口及安排

由表4-6可见,两相邻中断服务程序的入口地址之间只相距8B,而一般服务程序长度都会超过8B,这样就必须在中断入口地址处安排一条跳转指令,将程序转移到别的存储空间,以避免和下一个中断地址相冲突。程序结构如下:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT0

ORG 000BH

LJMP T0

ORG 0030H

MAIN:…;主程序

INT0:…;外部中断0处理程序

RETI

T0:;T0中断处理程序

RETI

…(www.xing528.com)

2 现场保护和工作寄存器分区

中断服务程序中要使用与主程序有关的寄存器,因此CPU在中断之前要保护这些寄存器的内容,即要“保护现场”,而在中断返回时又要使它们恢复原值,即“恢复现场”。同时为了避免中断程序与主程序中所用的工作寄存器R0~R7冲突,一般将主程序和不同的中断源之间使用不同的寄存器组,故常用的中断服务程序结构如下:

SERV:PUSH PSW;保护程序状态字和中断子程序前所选的寄存器组

PUSH ACC;保护累加器A

PUSH B;保护寄存器B

PUSH DPL;保护数据指针低字节

PUSH DPH;保护数据指针高字节

SETB RS0;选择寄存器组1

CLR RS1

…;中断处理程序

POP DPH;恢复现场

POP DPL

POP B

POP ACC

POP PSW

RETI;中断返回

要注意PUSH和POP指令必须成对使用。否则,可能会使保存在堆栈中的数据丢失,或使中断不能正确返回。此外,只有在中断程序中要使用的寄存器内容才需要加以保护。

3 高优先级中断源的中断禁止(如有需要)

单片机具有两级中断优先级,可实现两级中断嵌套。高优先级的中断请求可以中断低优先级的中断处理。但是,对于某些不允许被中断的服务程序来说,也可以在CPU响应中断后用CLR指令(或其他指令)对IE寄存器某些位清0来禁止相应高优先级中断源的中断。

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

我要反馈