for (j=0;j<4;j++) //收集四组数据
{
for (k=0;k<8;k++) //每组数据有8位
{
while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
{delay(1);}
while (!IRIN) //等 IR 变为高电平
{delay(1);}
while (IRIN) //计算IR高电平时长
{
delay(1);
N++;
if (N>=30)
{ EX0=1;
return;} //0.14ms计数过长自动离开。
} //高电平计数完毕
IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0”
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1”
N=0;
}//end for k
}//end for j
Y0=0;
switch(IRCOM[2])
{
case 0x09: Y0=0x01; break;
case 0x1D: Y0=0x02; break;
case 0x1F: Y0=0x03; break;
case 0x0D: Y0=0x04; break;
case 0x19: Y0=0x05; break;
case 0x1B: Y0=0x06; break;
case 0x11: Y0=0x07; break;
case 0x15: Y0=0x08; break;
case 0x17: Y0=0x09; break;
case 0x13: Y0=0x0a; break;
case 0x14: Y0=0x0b; break;
case 0x51: Y0=0x0c; break;
}