首先我们要知道,在通过IR接收我们就要通过一个中断来实现,当我的接收器电平发生变化是,触发中断进入IR中断解析判断。
1、打开定时器
/*********************************************************************
* 函 数 名 : IrInit
* 函数功能 : 红外接收口初始化为中断下降沿触发模式
* 参数列表 : 无
* 函数输出 : 无
*********************************************************************/
void IrInit(void)
{
IT0 = 1; // 下降沿触发
EX0 = 1; // 打开中断0允许
EA = 1; // 打开总中断
gIRIO = 1; // 初始化端口为高电平
}
2、中断处理数据
首先要定义对应的数据:
u8 gIrCode[5]; // gIrCode的0-3用来放原始数据,4用来放经过校验确认无误的键值
/*********************************************************************
* 函 数 名 : IrIsr
* 函数功能 : 红外接在P3.2,对应外部中断0,也就是0号中断
* 参数列表 : 无
* 函数输出 : 无
**********************