找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機紅外通訊和超聲波測距沖突

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:296095 發(fā)表于 2018-4-14 15:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我做拉一個小車,紅外通訊和超聲波測距都用的是定時器0,但是調(diào)用超聲波的函數(shù)紅外通訊就用不了了,只有屏蔽超聲波測距的,紅外才可以用,這還是為什么,是定時器的過嗎?壓縮包是我的程序,大神給小弟看看,怎么解決。

我的智能小車.rar

46.5 KB, 下載次數(shù): 5

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

使用道具 舉報

沙發(fā)
ID:296095 發(fā)表于 2018-4-14 15:50 | 只看該作者
void HC_SR04()//超聲波測距配置
{

TH0=0;
TL0=0;

trig=1;
delay_20us();
trig=0;
while(echo==0);
TR0=1;
while(echo==1);
TR0=0;
time=TH0 * 256 + TL0;
time=time*0.0374/2;
}
uint getlowtime()//低電平時間,T0定時器
{
TH0=0;
TL0=0;
TR0=1;
while(IR_input == 0);
TR0=0;
return(TH0 * 256 + TL0);
}
uint getHigtime()//高電平時間
{
TH0=0;
TL0=0;
TR0=1;
while(IR_input == 1);
TR0=0;
return(TH0 * 256 + TL0);
}

uchar IRcon() //紅外配置
{
  uint i,j;

  uint time;

  if(IR_input == 1)  
    return 255;
  
  time=getlowtime();
  if(time>8755||time<7833)  
   return 255;
  
  time=getHigtime();
  if(time>4680||time<3688)  
   return 255;   
  for(i=0;i<4;i++)
    {
      for(j=0;j<8;j++)
      {
        time = getlowtime();   
        if(time<180 || time>750)
        return 255;
        
        time = getHigtime();     
        if(time<180 || time>1840)
        return 255;
        
        ircode >>= 1;
        if(time>1050)
        ircode |= 0x80;
      }      
    }   
  send(ircode[2]);
   
  switch(ircode[2])
   {
   case 0x04: return 77;//全速
   case 0x0c: return 22;//減速
   case 0x08: return 44;//左
   case 0x0a: return 66;//右
   case 0x09: return 55;//停
   case 0x0D: return 33;//后退
   case 0x05: return 88;//前進
   }   
}


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表