红外解码过程:
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表示按键更新。
『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』