//编解码波形(NEC)
//________________ __ __ __
// | | | | | |
// | | | | | |
// | | | | | |
// | | | | | |
// | | | | | |.....................................
// | | | | | |
// | | | | | |
// |________| |_| |__| "0"高:0.56ms+低:0.565ms=1.125ms
//|<- 9ms ->|<-4.5ms>|"0"| "1"| "1"高:0.56ms+低:1.69ms =2.25ms
//|<- 引导码 ->|<-起始码|<-8位地址->|<-8位地址->|8位数据->|<-数据反码->|
//占用资源:TB CCR0中断 CCR4 CCR5中断 CCR0赋值为1125 时钟1MHz
//红外输出端P2.0 32768Hz
//P2.1为红外输入端口
此编码为常见的红外遥控编码,可以完成红外遥控或红外数据的传输
主要算法:
编码: 用3278Hz频率(P2.0第二功能输出ACLK)驱动红外二极管发送数据(应为38KHz 红外接收头要求,我用的是近距离模拟的,考虑到定时器资源宝贵,暂用32K代替,经验证近距离可以完成传输,使用是可以改为由TA的P1.2输出,稍微改下程序即可:初始化TA,让P1.2口输出38K的pwm波,宏定义中的BIT_0/1改为P1.2口的第二功能开关即可)
发送时先由TB的CCR0的中断控制时间完成9ms的红外发射和4.5ms的停止 然后用CCR0和CCR4的中断完成数据的发送
解码:CCR5定时没450ms中断一次对数据进行检测发现低电平进入数据帧判断 若引导码和起始码正确则进入数据接收逻辑,完成数据段接收
5