请各位高手看看这段代码有什么问题,应该怎么解决
void delay( uchar x)
{
while(--x); //延时
}
void delay_15us(uint x)
{
while(x) x--; //延时
}
void rece_2272(void) //遥控接收
{
static volatile bit a,a1;//用于检测遥控信号
uchar i,h;
uint data,mygod;
for(i=172;i;i--) //等待高电平
{ if(!Remote_Receive) i=172;
else delay_15us(15);
}
data=0;
for(i=0;i<12;i++) //找同步码
{
for(h=40;h;h--)
{
if(!Remote_Receive) break;
else delay_15us(15);
}
if(h) //读码值
{
while(Remote_Receive)
{
mygod++;
if(mygod==50000) break;
}
mygod=0;
while(!Remote_Receive)
{
mygod++;
if(mygod==50000) break;
}
mygod=0;
delay_15us(180);
a=Remote_Receive;
// while(Remote_Receive);
// while(!Remote_Receive);
while(Remote_Receive)
{
mygod++;
if(mygod==50000) break;
}
mygod=0;
while(!Remote_Receive)
{
mygod++;
if(mygod==50000) break;
}
mygod=0;
delay_15us(180);
a1=Remote_Receive;
if(a||a1) data|=0x01;
data<<=1;
}
}
for(h=170;h;h--) //找同步码
{
if(!Remote_Receive)
break;
else
delay_15us(15);
}
if(h)
{
for(i=40;i;i--)
{
if(!Remote_Receive)
i=40;
else
delay_15us(15);
}
data>>=1;
key_un.y1=~data;
}
else
{
key_un.y1=0;
}
delay(250);
}
|