|
if(Get_Rem==0)//如果有低電平就進(jìn)入解碼
{
for(Count=0;Count<100;Count++)//判斷12毫秒左右的引導(dǎo)碼(不同電阻不同時間)
{
Delay100us();//100us*100=10ms
if(Get_Rem==1)//如果在延時10毫秒期間有高電平出現(xiàn)就是干擾信號退出解碼
{
return;
}
}
while(Get_Rem==0);//等待低電平結(jié)束
for(j=0;j<3;j++)//8位地址碼加4位數(shù)據(jù)碼
{
for(i=0;i<8;i++)
{
Count=0;
do
{
Delay100us();
Count++;
if(Count>20)//如果在大于2毫秒高電平還沒有結(jié)束認(rèn)為是干擾退出解碼
{//理論上是1.2毫秒,我們2毫秒留有余量,防止遙控批量中的誤差
return;
}
}while(Get_Rem==1);//計算高平時間并等待結(jié)束
Count=0;
do
{
Delay100us();
Count++;
if(Count>20)//如果在大于2毫秒低平還沒有結(jié)束認(rèn)為是干擾退出解碼
{
return;
}
}while(Get_Rem==0);//計算低電平時間并等待結(jié)束
Rem_Code[j]<<=1;//數(shù)據(jù)從高位開始接收所以每次向左移一位
if(Count<8)//如果低電平時間小于800毫秒認(rèn)為該位為1
{
Rem_Code[j]++;
}
}
}
addr0=Rem_Code[0];
addr1=Rem_Code[1];
Acc=Rem_Code[2];
TimeCount=1000;//按鍵按下標(biāo)志
}
這是解碼315M模塊的程序,引導(dǎo)碼時間與振蕩電阻有關(guān)系,怎么才能適應(yīng)不同的電阻呢?有高手么?
|
|