“红外测试”程序设计说明
1 相关资料下载:
2 程序设计思路

图1 红外发送接收电路连接示意图
发送:不断检测KEY1(P3.2引脚)的电平。当KEY1为低电平时,认为按键被按下,每隔一段时间设置一次标志位。定时器T0每13us检测一次标志位,若标志位为0则使P3.5引脚电平不断发生翻转,间歇地发出38kHz红外光。在KEY1没有被按下的时候确保标志位值1,使得P3.5引脚输出低电平。
接收:不断检测P3.6引脚的电平。若P3.6输入了低电平,则代表接收到了红外信号,点亮Led灯。
3 程序相关使用到的寄存器说明(可查数据手册)
3.1定时器0相关寄存器设置
AUXR |= 0x80; //定时器0为1T模式
TMOD &= 0xF0; //清除之前的设置
TMOD |= 0x02; //设置为8位自动重装
TL0 = 0x70; //定时器初始值
TH0 = 0x70; //自动重装置
TF0 = 0; //清除TF0标记
TR0 = 1; //T0开始运行
3.2设置中断
ET0 = 1; //打开定时器T0中断
EA = 1; //打开总中断
4 程序设计框架及关键实现说明
4.1全局变量
int flag = 1; //标记位,标记是否发出送脉冲。0:发送、1:不发送
4.2函数:
void Timer0Init() //定时器T0初始化
void Delay() //延时100ms函数
void Timer0() interrupt 1 //定时器0中断:可产生38kHz红外脉冲

