📄 renew.asm
字号:
;********************RENEW********************
;本程序实现中断服务程序执行或子程序返回之后对W,STATRS,FSR,PCLATH四个寄存器
;的恢复。
;入口参数:已保存在SAVEW,SAVES,SAVEF中的相关数据
;出口参数:W,STATUS,FSR
;占用资源:020H,021H,022H,02FFH,0A0H
;说明 : 1.对于SAVEW,每个块中都必须保留一个寄存器,且其地址码都必须为20H;
; 2.若用16F870/1/2/6/7,也可将SAVEW定义为070H-07FH之间的其中一个寄
; 存器,这样只用BANK0中的一个寄存器即可.
IFNDEF RENEW1
#DEFINE RENEW1
SAVEW EQU 02CH
SAVEST EQU 02DH
SAVEFSR EQU 02EH
SAVEPH EQU 02FH
RENEW CLRF STATUS
MOVF SAVEPH,W ;经过W转移
MOVWF PCLATH ;恢复PCLATH内容
MOVF SAVEFSR,W
MOVWF FSR ;恢复FSR
SWAPF SAVEST,W ;将STATUS_TEMP寄存器高低半字节交换后放入W
MOVWF STATUS ;把W内容移动到STATUS寄存器,
;(同时也把当前体恢复到原先的体上)
SWAPF SAVEW,F ;将W_TEMP内容高低半字节交换后放回
SWAPF SAVEW,W ;再次将W_TEMP内容高低半字节交换后放入W
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -