logo资料库

C语言检测过零的方法--等待过零检测法.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
语言检测过零的方法--等待过零检测法 等待过零检测法 C语言检测过零的方法 在这里和大家分享一个用C语言检测过零的方法。 //*************************************** // 函数名称:Nop // 函数功能:延时函数 // 入口参数:延时时间 // 出口参数:无 //*************************************** void Nopt(uint8 T_Dly) { while(T_Dly--); return ; } //************************************* // 函数名称:ReadZer0Pin // 函数功能:重复读管脚电平 返回该管脚的电平状态值 // 入口参数:读该管脚的次数 // 出口参数:无 // 返回值: 该管脚的电平状态值 //*************************************** uint8 ReadZer0Pin(uint8 InValue) { uint8 Tcon = 0 ; uint8 i ; for(i=InValue;i>0;i--) //读10次 { // Nopt(5) ; Nopt(2) ; if(P_ZER0 == 1) { Tcon ++ ; } } if(Tcon > ((InValue>>1) + 1))//所读数据次数的一半以上为1 则认定该管脚为1 { return 1 ; } else { return 0 ; } } //************************************* // 函数名称:ReadZ0 // 函数功能:检测过零信号 // 入口参数:无 // 出口参数:无 // 本检测方式为等待检测过零的方法 //*************************************** void ReadZ0(void) { while(1) { if((!ReadZer0Pin(5)) && F_PZL) { F_PZL = 0 ; break ; } else if((ReadZer0Pin(5))&&(!F_PZL)) { F_PZL = 1 ; break ; } } } //---实例应用------ void main(void) { while(1) { ReadZ0() ;//如市电频率为50HZ 则10MS跑一次主循环
CmdKey() ; // 检测按键 CmdDisplay() ; //控制显示数据 . . . } }
分享到:
收藏