红外遥控器软件解码原理跟程序 - 21ic中国电子网.pdf
文本预览下载声明
红外遥控器软件解码原理和程序
红外一开始发送一段13.5ms 的引导码,引导码由9ms 的高电平和4.5ms 的低电平组成,跟
着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段
重复码,重复码由9ms 的高电平,2.25ms 的低电平,跟着是一个短脉冲,本程序经过试用,
能解大部分遥控器的编码!
#include at89x52.h
#define NULL 0x00//数据无效
#define RESET 0X01//程序复位
#define REQUEST 0X02//请求信号
#define ACK 0x03//应答信号,在接收数据后发送ACK 信号表示数据接收正确,
也位请求信号的应答信号
#define NACK 0x04//应答信号,表示接收数据错误
#define BUSY 0x05//忙信号,表示正在忙
#define FREE 0x06//空闲信号,表示处于空闲状态
#define READ_IR 0x0b//读取红外
#define STORE_IR 0x0c//保存数据
#define READ_KEY 0x0d//读取键值
#define RECEIVE 0Xf400//接收缓冲开始地址
#define SEND 0xfa00//发送缓冲开始地址
#define IR 0x50//红外接收缓冲开始地址
#define HEAD 0xaa//数据帧头
#define TAIL 0x55//数据帧尾
#define SDA P1_7
#define SCL P1_6
unsigned char xdata *buf1; //接受数据缓冲
unsigned int buf1_length; //接收到的数据实际长度
unsigned char xdata *buf2; //发送数据缓冲
unsigned int buf2_length; //要发送的数据实际长度
bit buf1_flag; //接收标志,1 表示接受到一个数据帧,0 表示没有接受到数据帧或数据
帧为空
bit buf2_flag; //发送标志,1 表示需要发送或没发送完毕,0 表示没有要发送的数据或
发送完毕
unsigned char state1,state2; //用来标志接收字符的状态,state1 用来表示接
收状态,state2 用来表示发送状态
unsigned char data *ir;
union{
unsigned char a[2];
unsigned int b;
unsigned char data *p1[2];
unsigned int data *p2[2];
unsigned char xdata *p3; //红外缓冲的指针
unsigned int xdata *p4;
}p;
//union{ //
// unsigned char a[2]; //
// unsigned int b;
// unsigned char data *p1[2];
// unsigned int data *p2[2];
// unsigned char xdata *p3;
// unsigned int xdata *p4; //地址指针
//}q; //
union{
unsigned char a[2];
unsigned int b;
}count;
union{
unsigned char a[2];
unsigned int b;
}temp;
union{
unsigned char a[4];
unsigned int b[2];
unsigned long c;
}ir_code;
union{
unsigned char a[4];
unsigned int b[2];
unsigned long c;
unsigned char data *p1[4];
unsigned int data *p2[4];
unsigned char xdata *p3[2];
unsigned int xdata *p4[2];
}i;
显示全部