帮我看看我的普通超声波小车出了什么问题?

2019-07-15 17:25发布

本帖最后由 红茶庄园 于 2017-1-23 23:21 编辑

本人是单片机爱好者,没上过大学。自己制作一部普通超声波避障小车,然后自己写了代码,但是烧录进去硬件却没反应,硬件没问题,帮我看看我的程序有什么问题,急!
#include<intrins.h>
#include<reg52.h>
#define uint unsigned int
#define ulong unsigned long
sbit in1=P0^0;
sbit in2=P0^1;
sbit in3=P0^2;
sbit in4=P0^3;
sbit ena=P0^5;
sbit enb=P0^4;
sbit echo=P0^1;
sbit trig=P0^0;
bit        flag=0;
ulong s,ls,rs;
uint time;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void qianjin()
{
ena=1;enb=1;in1=1;in2=0;in3=1;in4=0;
}
void houtui()
{
ena=1;enb=1;in1=0;in2=1;in3=0;in4=1;delay(2000);
}
void zuozhuan()
{
ena=1;enb=1;in1=0;in2=1;in3=1;in4=0;delay(1000);
}
void youzhuan()
{
ena=1;enb=1;in1=1;in2=0;in3=0;in4=1;delay(1000);
}
void tingzhi()
{
ena=0;enb=0;in1=0;in2=0;in3=0;in4=0;
}
void chushihua()
{
TMOD=0x01;
TH0=0;
TL0=0;
EA=1;
ET0=1;
}
void ceju(void)

{

while(!echo);

TR0=1;//开启计数 ——

while(echo); //当echo为1计数并等待

TR0=0; //关闭计数

time=TH0*256+TL0;

TH0=0;

TL0=0;

s=(time*1.7)/100; //算出来是CM

}
void zd0() interrupt 1
{
flag=1;
}
void main()
{
chushihua();
while(1)
{
trig=1;
delay(1);
trig=0;
ceju();
if(s<10)
{tingzhi();
delay(20);
houtui();
A:zuozhuan();
trig=1;
delay(1);
trig=0;
ceju();
ls=s;
if(ls<10)
{
youzhuan();
youzhuan();
trig=1;
delay(1);
trig=0;
ceju();
rs=s;
if(rs<10);
{zuozhuan();
houtui();
goto A;
}if((rs>10)&&(flag==1)){qianjin();}
}else if((ls>10)&&(flag==1)){qianjin();}
}else if((s>10)&&(flag==1)){qianjin();}
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。