纠结了好长时间的RC-6红外遥控器参考了"yw912"的这篇贴子《http://blog.ednchina.com/YW912/273130/message.aspx》后解码成功,在此对yw912的无私奉献精神表示感谢.先说一下解码思路:
/*****************philipsRC-6解码思路如下***************************
1、 如果低电平是窄的,且B_bitOver=1,那么B_bitOver=0,当前位为1,R_irBit++。
2、 如果低电平是窄的,且B_bitOver=0,那么B_bitOver=1,其它不做处理。
3、 如果低电平是宽的,且B_bitOver=1,是错误码。
4、 如果低电平是宽的,且B_bitOver=0,那么B_bitOver=0,当前位为1,R_irBit++。
5、 如果高电平是窄的,且B_bitOver=1,那么B_bitOver=0,当前位为0,R_irBit++。
6、 如果高电平是窄的,且B_bitOver=0,那么B_bitOver=1,其它不做处理。
7、 如果高电平是宽的,且B_bitOver=1,是错误码。
8、 如果高电平是宽的,且B_bitOver=0,那么B_bitOver=0,当前位为0,R_irBit++。
9、 奇偶校验位的电平宽度是其他位电平宽度的2倍,在程序中单独处理。
关键参数:
高电平时间:R_Htime
低电平时间:R_Ltime
位变量: B_bitOver 指示一位数据是否处理完。
位计数器: R_irBit
把红外信号接至外部中断INT0,外部中断后关外部中断,开Timer0中断,定时中断设置成200us中断,
在中断程序中扫描I/O(p3.2),测量遥控信号低电平和高电平的时间.
mcu:89s52 12M
//外部中断进入红外解码,进入后关外中断开启定时器T0进行中断定时解码
下面贴出代码:
文章评论(0条评论)
登录后参与讨论