9_3a.c

来自「51事例原代码 事例多多 应该对初学者很有用」· C语言 代码 · 共 37 行

C
37
字号
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 + =
减小字号Ctrl + -
显示快捷键?