如下图,51单片机接受到一个信号(vol),但是要判读 信号在2s内均为1,则报警(alarm=1)
如果2s内有0,则不报警(alarm=0)
如下图1-6s之间由于没有完整的2s时间均为1,所以不会报警。
如果只是用delay的方式,容易误判(delay的期间可以0或1)
if(vol==1)
{delay(2);
if(vol==1)
{alarm=1;}
}
51单片机接受到一个信号,但是要判读 信号在2s内均为1,则报警(alarm=1)
如果2s内有0,则不报警(alarm=0)
你可以开始1ms的定时器中断用于计时基准,然后主循环一直扫描你的Io口,如果上次为0,本次为1开始time=0然后在定时器自己++,主循环判断time小于2000时如果io等于0,那么time=0,如果time 大于等于2000,那么就可以告警了
因为主循环还有其他功能,如果只是把这个写成一个子函数,怎么写?