应广PFS122单片机比较器测供电电源VDD电压带临界点消抖处理
有朋友不会加临界点消抖处理,我将其加上了,供大家学习参考,不多说了,上代码:
#include “extern.h”
BIT LED : PA.3;
BIT GPCC6_Com_Out : gpcc.6;
BIT flag_getBat;
#define flag_Com !GPCC6_Com_Out
void Gpc_Init(void);
void GetBat(void);
/****************************************************/
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=5V;
$ LED Out, High;
Gpc_Init();
while (1)
{
GetBat();
if(flag_getBat)
LED = 0;
else
LED = 1;
.delay 4000*10;
}
}
//
void Gpc_Init(void)
{
GPCC = 0B_1_0_0_0_010_0; //比较器控制寄存器
GPCS = 0B_0_0_00__0000; //比较器选择寄存器
}
//
void GetBat (void)
{
/设置模式为Case 3,检测3V/
GPCS = 0B_0_0_10__0111; //比较器选择寄存器 3V Case:3
.delay 10;
/3V比较的时候临界点消抖//
byte Icnt = 60;
byte Shake = 0;
//由于比较器在比较临界点时会发生抖动,因此需要判断多次
while(Icnt–)
{
if(flag_Com) //正输入大于负输入
{
Shake++; //符合次数增加
}
else //正输入小于负输入
{
nop;
}
byte Delay = 20; //延时一段时间
while(Delay–)
{
nop;
}
}
//
if (Shake > 35)
{
/电压低于3V,执行LED低电平/
flag_getBat=1;
}
else//LED高电平
{
flag_getBat=0;
}
}
/加QQ群:1065214078****/
代码实际运行拍图: