
高分求教高手,红外遥控解码程序C语言,要求每一行都解释为什么什么作用。非常感谢!!先给100分,好再加
遥控码接收部分voidrfraid(void){u8i=0;u16rf_count=0;if(acc_on_bit==1&&do_learning_bit==0)retu...
遥控码接收部分
void rfraid(void){
u8 i=0; u16 rf_count=0; if(acc_on_bit==1&&do_learning_bit==0)return;rf_count=0;
while(radio&&(rf_count<750)) //高电平10MS ,等低电平
{
CLRWDT();
#asm
NOP;
NOP;
#endasm
rf_count++; //一次循环10us
//LED=1;
}
if(rf_count>750)
return;
if(!radio&&rf_count>400)
{
rf_count=0;
while(!radio&&(rf_count<750)) //低电平10MS
{
#asm
NOP;
NOP;
#endasm
rf_count++;
CLRWDT();
//LED=0;
}
}
for(i=0;i<56;i++)
{
rf_count=0;
while(radio&&(rf_count<45)) //高500US
{
#asm
NOP;
NOP;
#endasm
rf_count++; //一次循环20us,
//LED=1;
}
if(rf_count<10)
return;
rf_count=0;
while(!radio&&(rf_count<70)) //低500US
{
#asm
NOP;
NOP;
#endasm
rf_count++; //1+1+2=4uS
//LED=0;
}
if(rf_count<10)
return;
// if(rf_count>70)return;
if((rf_count<35))
CARRY=1;
else
CARRY=0;
#asm
RRF _CODE+6,F ;_CTRL_CODE
RRF _CODE+5,F ;_MUXCODE
RRF _CODE+4,F
RRF _CODE+3,F
RRF _CODE+2,F
RRF _CODE+1,F
RRF _CODE,F
#endasm
} //end if i>56
if(CODE[0]==0xa0) //产品识别码为0xa0正确
{
CODE[5]=CODE[5]^CODE[0];
CODE[1]=CODE[1]^CODE[5];
CODE[2]=CODE[2]^CODE[5];
CODE[3]=CODE[3]^CODE[5];
CODE[4]=CODE[4]^CODE[5]; //MUXCODE=CODE[5]
CODE[5]=CODE[5]^CODE[6]; //CTRL_CODE=CODE[6]
CODE[6]=CODE[6]^0xaa;
// if(CTRL_CODE_OLD==CODE[6]) {return;} //一直接收到同一个控制码保护
if(do_learning_bit)
{
RAMCODE[0]=CODE[1];
RAMCODE[1]=CODE[2];
RAMCODE[2]=CODE[3];
RAMCODE[3]=CODE[4];
if(learn_cardno_bit==0)
CODE[0]=0;
else CODE[0]=4;
} 展开
void rfraid(void){
u8 i=0; u16 rf_count=0; if(acc_on_bit==1&&do_learning_bit==0)return;rf_count=0;
while(radio&&(rf_count<750)) //高电平10MS ,等低电平
{
CLRWDT();
#asm
NOP;
NOP;
#endasm
rf_count++; //一次循环10us
//LED=1;
}
if(rf_count>750)
return;
if(!radio&&rf_count>400)
{
rf_count=0;
while(!radio&&(rf_count<750)) //低电平10MS
{
#asm
NOP;
NOP;
#endasm
rf_count++;
CLRWDT();
//LED=0;
}
}
for(i=0;i<56;i++)
{
rf_count=0;
while(radio&&(rf_count<45)) //高500US
{
#asm
NOP;
NOP;
#endasm
rf_count++; //一次循环20us,
//LED=1;
}
if(rf_count<10)
return;
rf_count=0;
while(!radio&&(rf_count<70)) //低500US
{
#asm
NOP;
NOP;
#endasm
rf_count++; //1+1+2=4uS
//LED=0;
}
if(rf_count<10)
return;
// if(rf_count>70)return;
if((rf_count<35))
CARRY=1;
else
CARRY=0;
#asm
RRF _CODE+6,F ;_CTRL_CODE
RRF _CODE+5,F ;_MUXCODE
RRF _CODE+4,F
RRF _CODE+3,F
RRF _CODE+2,F
RRF _CODE+1,F
RRF _CODE,F
#endasm
} //end if i>56
if(CODE[0]==0xa0) //产品识别码为0xa0正确
{
CODE[5]=CODE[5]^CODE[0];
CODE[1]=CODE[1]^CODE[5];
CODE[2]=CODE[2]^CODE[5];
CODE[3]=CODE[3]^CODE[5];
CODE[4]=CODE[4]^CODE[5]; //MUXCODE=CODE[5]
CODE[5]=CODE[5]^CODE[6]; //CTRL_CODE=CODE[6]
CODE[6]=CODE[6]^0xaa;
// if(CTRL_CODE_OLD==CODE[6]) {return;} //一直接收到同一个控制码保护
if(do_learning_bit)
{
RAMCODE[0]=CODE[1];
RAMCODE[1]=CODE[2];
RAMCODE[2]=CODE[3];
RAMCODE[3]=CODE[4];
if(learn_cardno_bit==0)
CODE[0]=0;
else CODE[0]=4;
} 展开
1个回答
展开全部
太长,没有时间一句一句的注释,另外我一直认为,每一句都给你写注释太不人道了...
不过有什么疑问还是欢迎你提出来的。
不过有什么疑问还是欢迎你提出来的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-02-18 广告
板上滤波器虽然对高频的滤波成效不理想,但是如果应用得当,可以满足大部分民用产品电磁兼容的要求。在使用时要注意以下事项:“干净地”:如果决定使用板上滤波器,在布线时就要注意在电缆端口处留出一块“干净地”,滤波器和连接器都安装在“干净地”上。通...
点击进入详情页
本回答由上海上恒提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询