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表示第幾組數(shù)據(jù)
if(Time>=8) //如果高電平出現(xiàn)大于0.8ms,那么是1
{
IrValue[k]|=0x80;
}
Time=0; //用完時間要重新賦值
}
}
}
if(IrValue[2]!=~IrValue[3]) //對比 數(shù)據(jù)碼 和數(shù)據(jù)反碼 是否成立 不對則退出
{
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;
}
}
}