低功耗对于电子产品的重要性不言而喻,电表也不例外。在停电的时候,为了保证外部电池的使用年限不低于5年,需要进入低功耗模式;最大程度的降低电路的电流,使得断电时板上电流不大于15uA。为了保证在停电时可以进行及时进入低功耗模式,需要判断电表何时掉电。NEC的UPD78F0527
自带低电压检测电路。有两种方式检测电源是否低电压;①
比较电源电压(VDD)
和检测电压( VLVI)
;②
通过EXLVI脚的输入电压与检测电压(VEXLVI=1.21V
)比较,并产生内部中断信号或内部复位信号。通过配置寄存器选择何种方式以及产生何种信号。
//低电压检测初始化,配置寄存器选择模式
void LVI_Init(
void)
{
unsigned int i;
LVION =
0;
//Stop LVI
LVIMK =
1 ;
//Disabled interrupt signal
LVISEL =
1;
//Set EXLVI enabled, Vexlvi=1.21v
PM12
.0 =
1;
//Set P12.0 input mode
LVIMD =
0;
//Set LVI interrupt mode
LVIPR =
1;
//Set LVI interrupt low priority
LVIIF =
0;
//Clear the interrupt flag
LVION =
1;
//Start LVI
for(i=
0; i <
50; i++)
//延时等待开启比较器稳定
{
NOP();
}
}
//低电压检测,return=true为低电压,return=flash为正常电压,配合主程序while循环连续检测10次,都为低电压时判断掉电
Bool
Power_CheckVLow(
void)
{
static U8 Count=
0, Count1=
0;
static Bool State=FALSE;
LVION=
1;
if(LVIF)
//LVIF为低电压检测寄存器(LVIM)第0位,为只读位
{ //电压低
Count1=
0;
if(Count <
10)
{
Count++;
}
else
{
State = TRUE;
}
}
else
{ //电压正常
Count =
0;
if(Count1 <
10)
{
Count1++;
}
else
{
State = FALSE;
}
}
return State;
}