标题:
单片机红外通讯和超声波测距冲突
[打印本页]
作者:
Lxz233
时间:
2018-4-14 15:44
标题:
单片机红外通讯和超声波测距冲突
我做拉一个小车,红外通讯和超声波测距都用的是定时器0,但是调用超声波的函数红外通讯就用不了了,只有屏蔽超声波测距的,红外才可以用,这还是为什么,是定时器的过吗?压缩包是我的程序,大神给小弟看看,怎么解决。
我的智能小车.rar
2018-4-14 15:44 上传
点击文件名下载附件
46.5 KB, 下载次数: 5
作者:
Lxz233
时间:
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;//前进
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1