红外解码过程:
Ray_Read_bit_timer103us自增变量
Ray_Read_bit_count 保存位置编号
Ray_bit_timer_Buffer[33] 33字节数组
Ray_Flag 保存标志
Ray_Read_ok 允许分析长短
(1)、按下遥控器,单片机就会有下降沿中断。启动定时器TR0=1;
(2)、定时器从0开始增加到255溢出,需要时间103us。
(3)、产生定时器中断。中断里面变量Ray_Read_bit_timer增加1。
(4)、在下降沿的中断服务,判断这个时候Ray_Read_bit_timer * 103us,是不是大于11.5ms 。
(5)、如果大于11.5,肯定大于9ms,认为这是引导码。否则 判断为数据信号。
(6)、如果是引导码,就把Ray_Read_bit_count等于0; 否则 增加一。Ray_Flag=1;
(7)、根据count的值,把Ray_Read_bit_timer的长度值,保存到数组Ray_bit_timer_Buffer[33]对应的位置;
(8)、Ray_Read_bit_timer先保存到数组,再删除,然后会自己增加。它就是下一个数据长度。
(9)、遥控器的下一位数据,就会有下一个下降沿。重复上面的(3)、(4)、(5)、(6)、(7)。
(10)、直到Ray_Read_bit_count大于33,已经接收完整的NEC协议数据!Ray_Read_ok=1;开始分析。Ray_Flag=0排除干扰。
(11)、关闭定时器,然后判断Ray_bit_timer_Buffer[]里面的时间长短,长的为1,短的为0.每8个时间就表示一个字节!四个字节。
(12)、判断新解码的值是不是和原来的值一样,如果是一样的那就连按自加,如果不相等都写255表示按键更新。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』