err=60;
while((IRIN==0)&&(err>0))//等待信号前面的560us低电平过去
{
delay(1);
err--;
}
err=500;
while((IRIN==1)&&(err>0)) //计算高电平的时间长度。
{
delay(10); //0.1ms
Time++;
err--;
if(Time>30) //大于3ms 退出程序
{
return;
}
}
IrValue[k]>>=1; //k表示第几组数据
if(Time>=8) //如果高电平出现大于0.8ms,那么是1
{
IrValue[k]|=0x80;
}
Time=0; //用完时间要重新赋值
}
}
}
if(IrValue[2]!=~IrValue[3]) //对比 数据码 和数据反码 是否成立 不对则退出
{
return;
}
switch(IrValue[2]){
case 0x16: jz = '0';break;
case 0x0c: jz = '1';break;
case 0x18: jz = '2';break;
case 0x5e: jz = '3';break;
case 0x08: jz = '4';break;
case 0x1c: jz = '5';break;
case 0x5a: jz = '6';break;
case 0x42: jz = '7';break;
case 0x52: jz = '8';break;
case 0x4a: jz = '9';break;
case 0x45:jz='A';break;
case 0x46:jz='B';break;
case 0x47:jz='C';break;
case 0x44:jz='D';break;
case 0x40:jz='E';break;
case 0x43:jz='F';break;
case 0x07:jz='H';break;
case 0x15:jz='-';break;
case 0x09:jz='+';break;
case 0x19:jz='*';break;
case 0x0D:jz='/';break;
default:break;
}
}
}