[code]
//********************************************************************************//
//功能名称:防掉电
//功能编号:000002
//适应芯片:适用于所有芯片
//--------------------------------------------------------------------------------//
//程序说明:
//防低电压复位,上电后程序功能无法继续运行
//注意事项:
//1.案例为PMS154C,其他芯片原理都相同
//********************************************************************************//
#include"extern.h"
.RAMADR 0x00 //RAM的初始地址设为0x00
word Point;
byteReast1;
byteReast2;
.RAMADR SYSTEM
//=========================
//设置你的变量,如:
//bitnum1;
//bytenum2;
//wordnum3;
//...
//=========================
//清RAM
CleanUp_RAMMacro
{
Point = _SYS(RAM_SIZE)-1;
A = 0x00;
do
{
*Point = A;
}while(--Point$0);
}
EndM
voidFPPA0 (void)
{
.ADJUST_ICSYSCLK=IHRC/8, IHRC=16MHz, VDD=5V;
//若工作中出现电压突然降低导致复位现象,则不初始化,保持复位前的所有RAM
if(Reast1==0x01 && Reast2==0x02)
{
nop;
}
else//初次上电清RAM,并给两个复位信号,进行判断下次上电是停电还是低电压
{
//===================
CleanUp_RAM;//清RAM
//设置你需要初始化的程序
//===================
Reast1 = 0x01;
Reast2 = 0x02;
}
//复位后会保留RAM的值,但是寄存器的值会清零,需要重新设置
//寄存器设置,IO端口、T16寄存器,比较器寄存器等
//PAC = 0xFF;
while (1)
{
nop;
}
}
voidInterrupt (void)
{
pushaf;
if (Intrq.T16)
{//T16 Trig
//User can add code
Intrq.T16=0;
//...
}
popaf;
}
[/code]
//********************************************************************************//
//功能名称:防掉电
//功能编号:000002
//适应芯片:适用于所有芯片
//--------------------------------------------------------------------------------//
//程序说明:
//防低电压复位,上电后程序功能无法继续运行
//注意事项:
//1.案例为PMS154C,其他芯片原理都相同
//********************************************************************************//
#include"extern.h"
.RAMADR 0x00 //RAM的初始地址设为0x00
word Point;
byteReast1;
byteReast2;
.RAMADR SYSTEM
//=========================
//设置你的变量,如:
//bitnum1;
//bytenum2;
//wordnum3;
//...
//=========================
//清RAM
CleanUp_RAMMacro
{
Point = _SYS(RAM_SIZE)-1;
A = 0x00;
do
{
*Point = A;
}while(--Point$0);
}
EndM
voidFPPA0 (void)
{
.ADJUST_ICSYSCLK=IHRC/8, IHRC=16MHz, VDD=5V;
//若工作中出现电压突然降低导致复位现象,则不初始化,保持复位前的所有RAM
if(Reast1==0x01 && Reast2==0x02)
{
nop;
}
else//初次上电清RAM,并给两个复位信号,进行判断下次上电是停电还是低电压
{
//===================
CleanUp_RAM;//清RAM
//设置你需要初始化的程序
//===================
Reast1 = 0x01;
Reast2 = 0x02;
}
//复位后会保留RAM的值,但是寄存器的值会清零,需要重新设置
//寄存器设置,IO端口、T16寄存器,比较器寄存器等
//PAC = 0xFF;
while (1)
{
nop;
}
}
voidInterrupt (void)
{
pushaf;
if (Intrq.T16)
{//T16 Trig
//User can add code
Intrq.T16=0;
//...
}
popaf;
}
[/code]