B.C115 2022-07-19 20:32 采纳率: 0%
浏览 38

51单片机的信号判断

问题遇到的现象和发生背景

如下图,51单片机接受到一个信号(vol),但是要判读 信号在2s内均为1,则报警(alarm=1)
如果2s内有0,则不报警(alarm=0)
如下图1-6s之间由于没有完整的2s时间均为1,所以不会报警。

img

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

如果只是用delay的方式,容易误判(delay的期间可以0或1)
if(vol==1)
{delay(2);
if(vol==1)
{alarm=1;}
}

我想要达到的结果

51单片机接受到一个信号,但是要判读 信号在2s内均为1,则报警(alarm=1)
如果2s内有0,则不报警(alarm=0)

  • 写回答

2条回答 默认 最新

  • 乐观的study123 2022-07-19 20:50
    关注

    你可以开始1ms的定时器中断用于计时基准,然后主循环一直扫描你的Io口,如果上次为0,本次为1开始time=0然后在定时器自己++,主循环判断time小于2000时如果io等于0,那么time=0,如果time 大于等于2000,那么就可以告警了

    评论

报告相同问题?

问题事件

  • 创建了问题 7月19日