IRD是和红外接收连在一起的,是NEC协议
uint Get_Lowtime()
{
TH1=0;
TL1=0;
TR1=1;
while(!IRD)
{
if(TH1>0x40)
{
break;
}
}
TR1=0;
return (TH1*256+TL1);
}
uint Get_Hightime()
{
TH1=0;
TL1=0;
TR1=1;
while(IRD)
{
if(TH1>0x40)
{
break;
}
}
TR1=0;
return(TH1*256+TL1);
}
void out0() interrupt 0
{
int i,j;
uchar byt;
tim=Get_Lowtime();
if(tim<7833||tim>8755)//9ms
{
IE1=0;
return;
}
tim=Get_Hightime();
if(tim<3686||tim>4608)//4.5ms
{
IE1=0;
return;
}
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
tim=Get_Lowtime();
if(tim<313||tim>718)//340——780us为什么程序执行到这就不往下执行了呢??
{
IE1=0;
return;
}
tim=Get_Hightime();
if(tim>313&&tim<718)
{
byt>>=1;
}
if(tim>1345&&tim<1751)
{
byt>>=1;
byt|=0x80;
}
}
tem_sbuf[i]=byt;
}
} |