#include <reg52.h>
#include <intrins.h>//这个为啥可以省略我也不知道,后面有用到 右移所以保守不省略。去掉也是可以完成此功能
unsigned char IR_Time;//33位数据脉宽时间用计时器0中断个数表示 ,进入一次中断需要1.085*256=277.76us
unsigned char IR_Date[33];//红外接收头发给单片机解码的33位数据(引导码1+用户码16+按键键值码8+键值码反码8)
unsigned char IR_Byte[4]; //去掉引导码剩余的32位,即4字节数据
bit StartFlag; //位0或者为1的脉宽时间做标记
bit IR_DateOK; //32位数据的脉宽时间接收成功标记
bit IR_DecodeOK;//去掉引导码剩余的32位脉宽时间的数据已经解码为32位二进制成功标志
void init()//以下都叫定时器,也可以叫计数器,是一样的
{EA=1; //开总中断
ET0=1;// 开定时器0中断
TMOD|=0x02;// 设置定时器0工作模式2,8位自动重装
TH0=TL0=0;// //初始化定时器0寄存器,定时器0溢出一次时间为256个机器周期
TR0=1;// 启动定时器0
EX0=1;// 开外部中断0
IT0=1; //外部中断0设置下降沿触发
TMOD|=0x20;//设置定时器1工作模式2,8位自动重装
TH1=0xfd