c语言重复测试,C语言检测过零的方法 |
您所在的位置:网站首页 › fsk过零检测 › 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() ; //控制显示数据 . . . } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |