#include <reg52.h>
// 定义红外遥控解析状态机
typedef enum {
IR_STATE_IDLE, // 空闲状态
IR_STATE_START, // 红外信号开始状态
IR_STATE_DATA, // 红外信号数据状态
IR_STATE_TIMEOUT // 接收超时状态
} IR_State;
// 定义红外遥控解析结构体
typedef struct {
IR_State state; // 状态机状态
unsigned char data; // 红外信号数据
unsigned char timeout; // 接收超时标志位
} IR_Receiver;
// 定义红外遥控解析函数
void IR_Decode(unsigned char data) {
switch (data) {
case 0x00:
// 红外码为0x00时执行的代码
break;
case 0x01:
// 红外码为0x01时执行的代码
break;
case 0x02:
// 红外码为0x02时执行的代码
break;
default:
// 其他红外码时执行的代码
break;
}
}
void main() {
// 初始化外部中断0
IT0 = 1; // INT0设为边沿触发
EX0 = 1; // 允许INT0中断
// 初始化红外遥控解析