单片机红外解码得不到值,led显示只能得到零,查了很长时间,估计可能是时间分配的不对,但也不确定。求各位大佬帮忙看看程序,感激不尽!我的延时函数和LED函数都是可以用没有问题的。
void ReadIr() interrupt 0
{
unsigned char j,k;
unsigned int err;
Time=0;
//引导码
if(IRD == 0) //对于九毫秒低电平的判断
{
for(err = 9000; err>0; err--)
{
Delay_us(1);
if(IRD == 1)return;
}
if(IRD == 1) //对于4.5毫秒高电平的判断
{
err=4500;
while(err>0)
{
Delay_us(1);
err--;
if(IRD == 0)return;
}
for(k=0;k<4;k++) //接收四组键码
{
for(j=0;j<8;j++) //每一个键码的位
{
if(IRD == 0){
err=56;
while(err>0)
{
if(IRD == 1)return;
Delay_us(10);
err--;
}
}
if(IRD == 1){ //判断高低电平得到键值的位
err=168;
while(err>0)
{
if(IRD == 0)return;
Delay_us(10);
Time++;
err--;
}
}
if(Time < 56){
IrValue[k] <<= 1;
}
else if(Time > 60){
IrValue[k] <<= 1;
IrValue[k] |= 0x01;
}
Time = 0;
}
}
}
}
}