找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9029|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求教:幫看看無(wú)線接收解碼程序!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:2354 發(fā)表于 2008-6-9 16:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
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;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:34 發(fā)表于 2008-6-28 23:54 | 只看該作者
有問(wèn)題??
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表