几种比较流行和成熟的红外解码程序分析和总结几种比较流行和成熟的红外解码程序分析和总结
下面对以下几种比较流行和成熟的红外解码程序做一下研究和总结先来,分析一个这个程序,这个程序用了两个中
断,一个定时器中断,一个外断中断,程序的算法是让定时器中断不停的记数,外部中断在下降没来临的时候将这个
记数值并将上一次记的数值存在一个数组中,不过这个程序有一个小Bug,就是那个startflag是没有起到关键性的作
用的啊?
解码程序一:
/*-----------------------------------------------------------------------------------------
定时器0中断处理
-----------------------------------------------------------------------------------------*/
void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用于计数2个下降沿之间的时间
}
/*-----------------------------------------------------------------------------------------
外部中断0中断处理
-----------------------------------------------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中断0服务函数
{
static unsigned char i; //接收红外信号处理
static bit startflag; //是否开始处理标志位
if(startflag)
{
if(irtime<=54&&irtime>=50)//引导码 TC9012的头码,9ms+4.5ms
{
i=0;
}
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;