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