|
UINT8 IR_SCAN(void)
{
UINT8 i=0;
UINT8 t1,t2;
if(bIR_scan==0) return 0;
bIR_scan=0;
RmtRec=0;
if(IR_IO==0)
{
clr_TR0;
clr_TF0;
TL0 =0;
TH0 =0;
set_TR0; //Start Timer0
bIR=0;IR_cont=0;
while ((IR_IO==0)&&(bIR != 1)); //Check Timer0 Time-Out Flag
clr_TR0; //Stop Timer0
clr_TF0;
Dval=TIM0_GetCounter();
if(Dval>8600&&Dval<9300) //9ms
{
TL0 =0;
TH0 =0;
set_TR0; //Start Timer0
bIR=0;IR_cont=0;
while ((IR_IO==1)&&(bIR != 1)); //Check Timer0 Time-Out Flag
clr_TR0; //Stop Timer0
clr_TF0;
Dval=TIM0_GetCounter();
if(Dval>4200&&Dval<4700) //4.5ms &&×óóò¶¼ÎaÕæÔòÎaÕæ
{
//----------------------------------------------------------
do{
TL0 =0;
TH0 =0;
set_TR0; //Start Timer0
bIR=0;IR_cont=0;
while ((IR_IO==0)&&(bIR != 1)); //Check Timer0 Time-Out Flag
clr_TR0; //Stop Timer0
clr_TF0;
Dval=TIM0_GetCounter();
if(Dval<300&&Dval>800) //560us
{
return 0;
}
TL0 =0;
TH0 =0;
set_TR0; //Start Timer0
bIR=0;IR_cont=0;
while ((IR_IO==1)&&(bIR != 1)); //Check Timer0 Time-Out Flag
clr_TR0; //Stop Timer0
clr_TF0;
Dval=TIM0_GetCounter();
if(Dval>300&&Dval<800) //560????,560us
{
RmtRec<<=1;
RmtRec|=0; //½óêÕμ½0
i++;
}
else if(Dval>1400&&Dval<1800) //1680Îa±ê×¼Ö죬1680uS
{
RmtRec<<=1;
RmtRec|=1; //½óêÕμ½1
i++;
}
else if(Dval>2200&&Dval<2600) //μÃμ½°′¼ü¼üÖμÔö¼óμÄDÅÏ¢£¬2500±ê×¼ÖμÎa2.5mS
{
}
}
while(i<32);
//--------------------------------------------------------------------
t1=RmtRec>>24; //μÃμ½μØÖ·Âë
t2=(RmtRec>>16)&0xff; //μÃμ½μØÖ··′Âë
if((t1==(UINT8)~t2)&&t1==REMOTE_ID)//¼ìÑéò£¿Øê¶±eÂë(ID)¼°μØÖ·
{
t1=RmtRec>>8;
t2=RmtRec;
IR_code=t1;
if(t1==(UINT8)~t2)return 1;//¼üÖμÕyè·
}
//---------------------------------------------------------------------
}
}
}
return 0;
}
|
|