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模块的程序,引导码时间与振荡电阻有关系,怎么才能适应不同的电阻呢?有高手么?
|