应广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群:943506996****/
代码实际运行拍图:
|