📄 9_3a.c
字号:
void power_fail(void) interrupt 0 //断电保护中断服务子程序
{
#pragma ASM //嵌入汇编语言
CLR EA //禁止再次中断
JB power_flag,elc1 //若已经断电保护过,则不再重复保护,跳过
MOV stackb,SP
MOV SP,#0C1H
PUSH PSW //PSW-->0xC2
PUSH IE //IE-->0xC3
PUSH DPH //DPH-->0xC4
PUSH DPL //DPL-->0xC5
PUSH B //B-->0xC6
PUSH ACC //ACC-->0xC7
PUSH 00H //保护R0寄存器
PUSH 01H //保护R1寄存器
PUSH 02H //保护R2寄存器
PUSH 03H //保护R3寄存器
PUSH 04H //保护R4寄存器
PUSH 05H //保护R5寄存器
PUSH 06H //保护R6寄存器
PUSH 07H //保护R7寄存器
. //保护其它需要保护的标记和数据
.
.
.
.
.
elc0: SETB power_flag //建立断电保护标记
elc1: MOV P2,#80H //把外部RAM的 ?C?S引脚拉高成高电平状态,
//其余引脚均为低电平
MOV P0,#00H //P0、P1、P3口均保持低电平输出状态,降低功耗
MOV P1,#00H
MOV P3,#00H
MOV PCON,#02H //使单片机进入掉电模式,低功耗状态
#pragma ENDASM
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -