没有下载到实际小车中,不知道哪儿有错误,请帮我指出一下谢谢#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char dj1=0;
unsigned char dj2=0;
sbit IN3=P0^1; //右轮
sbit IN4=P0^2;
sbit ENB=P0^0; //使能端A
sbit IN1=P1^1; //左轮
sbit IN2=P1^2;
sbit ENA=P1^0; //使能端B
sbit left_ir=P3^2;//避障
sbit right_ir=P3^3;
int a,i,t;
//正转
void zhengzhuan()
{
IN1=0;
IN2=1;
IN4=0;
IN3=1;
dj1=10;
dj2=10;
}
void houtui()//后退
{
IN1=1;
IN2=0;
IN4=1;
IN3=0;
dj1=9;
dj2=9;
}
void stop()//停止
{
IN1=0;
IN2=0;
IN4=0;
IN3=0;
dj1=0;
dj2=0;
}
void left()//左转
{
IN1=0;
IN2=0;
IN4=0;
IN3=1;
dj1=9;
dj2=26;
}
void right()//右转
{
IN1=0;
IN2=1;
IN4=0;
IN3=0;
dj1=28;
dj2=9;
}
void bizhang()//避障
{
if(left_ir==0&&right_ir==0)
{
houtui();
}
else if(left_ir==0&&right_ir==1)
{
right();
}
else if(left_ir==1&&right_ir==0)
{
left();
}
else
{
zhengzhuan();
}
}
void init()//初始化
{
IP=0x20;
TMOD=0x20;//设置定时器T1为工作方式2
TH1=0xfd;
TL1=0xfd;//T1定时器装初值
TR1=1;//启动定时器T1
REN=1;//允许串口接收
SM0=0;
SM1=1;//设置串口工作方式1
EA=1;//开总中断
ES=1;//开串口中断
}
void init_T0()
{
IP=0x10;
TMOD=0x22;
TH0=(65536-250)/256;
TL0=(65536-250)%256;
TR0=1;
ET0=1;
}
void main()
{
init_T0();
init();
while(1)
{
bizhang();
if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前进
zhengzhuan();
if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就后退
houtui();
if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就停止
stop();
if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就左转
left();
if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就右转
right();
}
}
void T1_time() interrupt 4
{
RI=0;
a=SBUF;
}
void timer0() interrupt 1 //定时器0中断
{
TH0=(65536-250)/256;
TL0=(65536-250)%256;
t++;
if(t<dj1)
ENA=1;
else
ENA=0;
if(t<dj2)
ENB=1;
else
ENB=0;
if(t>=50)
{
t=0;
}
}
|