標(biāo)題: 求教:幫看看無(wú)線接收解碼程序! [打印本頁(yè)]
作者: qijf 時(shí)間: 2008-6-9 16:28
標(biāo)題: 求教:幫看看無(wú)線接收解碼程序!
uint receive_deco(void) //解碼
{
uchar j,k1=0,k2=0;
uint w_receive;
for(j=16;j;j--)
{
gas_led=1;
while(!wireless_in)//如果接收引腳是低電平 則計(jì)時(shí)
{
delay_50us(1);//計(jì)算有幾個(gè)50us
k1++;
k2++;
}
while(wireless_in))//如果接收引腳是高電平 則計(jì)時(shí)
{
delay_50us(1);
k2++;
}
if((k2>30)&&(k2<=46)&&(k1<=(k2/3)))//1500us~2300us
{
if((k1>6)&&(k1<=11))
{//300~550us
w_receive&=0xfffe;
w_receive<<=1;
}
if((k1>=24)&&(k1<36))
{//1200~1800us
w_receive|=0x0001;
w_receive<<=1;
}
}
return="return" w_receive;
}
/////////////////////////////////////////////////
//接收頭碼、地址和數(shù)據(jù)
////////////////////////////////////////////////
uint wireless_receive(void) //reentrant//使此函數(shù)可重入
{ //接收遙控碼(解碼程序)
uint="uint" re_data,i=0,j=0;
//檢測(cè)50ms內(nèi)有沒(méi)有編碼接收,因?yàn)榘l(fā)送完十六位數(shù)據(jù)需要1500*16=24ms 頭碼11ms 延時(shí)300us
while(!wireless_in)
{
delay_50us(1);
i++;
}
if((i>=180)&&(i<=260))
{//如果有9--13毫秒左右的頭碼 則看延時(shí)時(shí)間
while(wireless_in)
{
delay_50us(1);
j++;
}
if((j>6)&&(j<=11))
{//有300--550微秒左右的低電平延時(shí)
re_data=receive_deco(); //解碼
return re_data;
}
else
{
re_data=0x0000;
}
}
else
{
re_data=0x0000;
}
return re_data;
}
作者: 納米小芯 時(shí)間: 2008-6-28 23:54
有問(wèn)題??
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |