最近需要用到433M的单片机解码,上网搜了一下。大部分的程序都是基于定时器定时检测。感觉逻辑不够严谨。对于新手理解起来也比较困难。
我首先开了一个us级的定时器,持续计数。不需要打开中断。
然后配置好对应的接收芯片的管脚。配置为外部中断。触发方式为上升沿,下降沿都触发。
在外部中断函数里面,记录当前定时器的计数值,然后清零计数器。
定义一个状态机
state = 0时:默认状态,检测是否为高电平。如果为高电平代表为上升沿,判断同步信号。
state = 1时:检测是否为低电平,如果为低电平,表示为下降沿,此时记录的时间为高电平的持续时间。判断是否符合同步信号的高电平时间要求。符合进入下一状态
state = 2时:检测管脚是否为高电平,如果为高电平,表示为上升沿,此时记录的时间为低电平持续时间。判断是否符合同步信号的低电平时间要求。符合进入接收状态。不符合,回到初始状态。
以此类推....具体可以看单片机程序