📄 1_5_1a.c
字号:
void power_fail(void) interrupt 0 //断电保护中断服务子程序
{
#pragma ASM
CLR EA //不允许其它中断
JB power_flag,elc1 //如果已经断电保护过,则不再保护
MOV stackb,SP //设置断电保护堆栈区
MOV SP,#0B1H
PUSH PSW //保护PSW
PUSH IE //保护IE
PUSH DPH //保护DPH
PUSH DPL //保护DPL
PUSH B //保护B
PUSH ACC //保护ACC
PUSH 00H //保护R0~R7
PUSH 01H
PUSH 02H
PUSH 03H
PUSH 04H
PUSH 05H
PUSH 06H
PUSH 07H
MOV C,disflag //保护disflag
MOV disflag1,C
CLR tr2_flag
JNB TR2,elc0 //保护TR2
SETB tr2_flag
elc0: SETB power_flag //建立断电保护标记
elc1: MOV P2,#80H //为降低功耗,使输出线为低电平
MOV P0,#00H
MOV P1,#00H
MOV P3,#00H
MOV PCON,#02H //使单片机进入低功耗状态
#pragma ENDASM
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -