一个方波波形,单片机一个IO口PA0去检测方波的上升沿,立刻控制PB0口输出高电平,上升沿只能用IO判断高低变化,不能用中断; 程序设计如下,用示波器观察,有时候会发现下降沿时PB0输出高电平,大部分都是上升沿PB0输出高电平的,请问上升沿检测程序是哪里不对造成的? void ZeroCross_Task(void) { u16 timerout_cnt=0; LightCONTL.ZeroCross_flag=0; while(ZeroCross==1)//先检测0 { if((timerout_cnt++)>(u16)47000)//超时时间 { LightCONTL.ZeroCross_flag=0; return; } } timerout_cnt=0; while((ZeroCross==0))//检测1,即上升沿 { if((timerout_cnt++)>(u16)47000)//超时时间 { LightCONTL.ZeroCross_flag=0; return; } } LightCONTL.ZeroCross_flag=1; } |
方波是从哪来的?
评分
查看全部评分
在检测电平IO口上加一个小电容102,还是一样,会出现检测到下降沿触发,如果是干扰的话,不应该出现异常的时候每次都是在下降沿,不知道我程序设计逻辑是否有问题