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() ; //控制显示数据

.

.

.

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值