无线软解码进

2020-02-05 09:01发布

void eint0(void) interrupt 0//外部中断0 中断子程序  
{  
static unsigned int tempaddr;//接收地址缓存  
static unsigned int tempkey;//接收数据缓存  
unsigned int timecnt;     //时间  
timecnt=(TH0*256+TL0)*1.085;  
TH0=0;  
TL0=0;        // 在外部中断中对定时器清零,重新计数   

if((timecnt>80)&&(timecnt<600)&&(cntint<24))  
{  
if(cntint<16)//接收地址码  
{  
tempaddr=tempaddr<<1;//将接收的到最低位移到最高位  
if(timecnt>250)//210为宽脉冲与低脉冲界线,当振荡电阻为1M时,窄脉冲为110uS,宽脉冲为320uS  
{  
tempaddr|=1;//宽脉冲为1  
}  
cntint++;//中断次数加1  
}  
else if(cntint<24)//接收数据码  
{  
tempkey=tempkey<<1;  
if(timecnt<250)  
{  
tempkey|=1;  
}  
cntint++;  
}  
else//cntint大于24也就是中断了25次时,关闭外部中断0,等待同步码  
{  
TMOD&=0xf0;//设定时器0为定时方式  
TMOD|=0x01;  
TH0=0xf1;  
TL0=0x9a;  
cntint=0;  
EX0=0;//关外部中断0  
addr=tempaddr;  
key=tempkey;  
tempaddr=0;  
tempkey=0;  
}  
}  
else  
{  
TMOD&=0xf0;//设定时器0为定时方式  
TMOD|=0x01;  
TH0=0xf1;  
TL0=0x9a;  
cntint=0;  
EX0=0;//关外部中断0  
tempaddr=0;  
tempkey=0;  
}  

}  
void timer0(void) interrupt 1//定时器0中断,只有初始化时,空闲时和同步码到来时才中断  ??
{  
//TMOD&=0xf0;//将定时器0的工作方式设为门控定时,用以检测脉宽。  
TMOD|=0x09;  
cntint=0;//外部中断0中断次数设为0  
TH0=0;//设定时器0定时初值为0  
TL0=0;  
EX0=1;//允许外部中断0  
IE0=0;//清除外部中断0标志  
}

这是模拟PT2272解码的程序段
请问这个程序是如何确定同步码的?if((timecnt>80)&&(timecnt<600)&&(cntint<24)) 是这句吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。