低功耗对于电子产品的重要性不言而喻,电表也不例外。在停电的时候,为了保证外部电池的使用年限不低于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;
}
转载自原文链接, 如需删除请联系管理员。
原文链接:低电压检测,转载请注明来源!