#include "guangshi.h" uint8_t bizohi=0; #define AC_SAMPLE_TIME 100 // 采样时间窗口 #define AC_CHANGE_THRESHOLD 5 // 最小变化次数阈值 static uint8_t last_ac_status = 0; static uint8_t change_count = 0; static uint32_t sample_timer = 0; void Check_Power_Source(void) { uint8_t current_ac = Read_MainPower(); // 检测电平变化 if(current_ac != last_ac_status) { change_count++; last_ac_status = current_ac; } sample_timer++; // 采样时间窗口到达后判断 if(sample_timer >= AC_SAMPLE_TIME) { // 如果在采样窗口内检测到足够的变化次数,说明交流电存在 if(change_count >= AC_CHANGE_THRESHOLD) { bizohi = 1; // 市电正常 } else { bizohi = 2; // 市电断开 } // 重置计数器 change_count = 0; sample_timer = 0; } }