各位前辈,我刚刚做的c51循迹小车,我个人认为程序没有问题,线的连接也没有问题,但是不知道为什么,供能后电机在工作但是轮子不转。不过当我把固定单片机的开关松了一半左右后,右轮就动了,左轮偶尔会动但比右轮满了许多。不知道是怎么回事,希望各位大佬帮我看看怎么回事。



以下是我的程序:
#include "reg52.h"
sbit IN1 = P1^1;
sbit IN2 = P1^2;
sbit IN3 = P1^3;
sbit IN4 = P1^4;
sbit ENA = P1^0;//×óμ??úê1?ü
sbit ENB = P1^5;//óòμ??úê1?ü
sbit lse1 = P3^2;//×ó±?oìía′??D?÷
sbit lse2 = P3^3;//óò±?oìía′??D?÷
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1 = 0;//×óμ??ú????±è
unsigned char zkb2 = 0;//óòμ??ú????±è
int t = 0;
void PIT_Init()
{
EA = 1;
TMOD |= 0x01;
TH0 = (65536 - 200) / 256;
TL0 = (65536 - 200) % 256;
ET0 = 1;
TR0 = 1;
}
void timer()interrupt 1//interrrupt 1?a?ú2??D??£?0?aía2??D??
{
TH0 = (65536-200)/256;
TL0 = (65536-200)%256;
if(t<zkb1)
{
ENA = 1;
}
else
{
ENA = 0;
}
if(t<zkb2)
{
ENB = 1;
}
else
{
ENB = 0;
}
t = (t + 1) %50;
}
void delay(uint i)
{
while(i--);
}
void forward()
{
zkb1=10;
zkb2=10;
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void stop()
{
zkb1=0;
zkb2=0;
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void turnleft()
{
zkb1=15;
zkb2=15;
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void turnright()
{
zkb1=15;
zkb2=15;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void xunji()
{
if((lse1==0)&&(lse2==1))
{
turnleft();//×ó±??ì2aμ?oú??
}
else if((lse1==1)&&(lse2==0))
{
turnright(); //óò±??ì2aμ?oú??
}
else if((lse1==1)&&(lse2==1))
{
forward();//á?±?????óDoú??
}
else
{
stop();//??óDoú??£??íí£?1
}
}
void main()
{
PIT_Init();
forward();
while(1)
{
xunji();//?-?£
}
}