以往在单片机书上、网上所介绍的遥控器接收解码程序都是基于利用单片机的进入外部中断后所进行的程序解码。这此可以讲是个垃圾程序(因为核对技术高手没有外露),可以讲在解码红外线波形的同时,单片机的其他程序要停下来。对于大型工程是不允许的。 现特将利用内部时间中断时的时间差所做的红外线接收解码程序公开。本程序的要点是要将内部时钟中断设为125us,每次进中断则对相应的位进行比较低电平时间从而解码……
关键寄存器定义:static uchar codeTime; //码时间,用于以125us时间计时
static uchar HeadCode_Reced; //头码标志位
static uchar Ir_Dealed;
static uchar Irprot_LastState; //端口状态位
static uchar Receive_OK;
static uchar codeCnt; //数据码位
static uchar vData1; //1~4是分别用来放数据的
static uchar vData2;
static uchar vData3;
static uchar vData4;
/*内中断0 用于计时*/
void Timer0(void) interrupt 1 //开定时器0中断,工作于方式0,中断号为1
{
TH0=(65536-125)/256; //125ms出中断一次.
TL0=(65536-125)%256;
//=============