红外遥控器软件解码原理和程序
,,跟着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由9ms的高电平,,跟着是一个短脉冲,本程序经过试用,能解大部分遥控器的编码!
#include ""
#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; //红外缓冲的指针
unsign
红外遥控器软件解码原理和程序 来自淘豆网m.daumloan.com转载请标明出处.