#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit DD1=P1^0;
sbit DD2=P1^1;
sbit DD3=P1^2;
sbit DD4=P1^3;
sbit ENA=P2^4;
sbit ENB=P2^5;
void DelayMS(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=30;j>0;j--); // 12c5a60s2 延时基数 663
}
void littleleft()
{
IN1=1,IN2=1,IN3=1,IN4=0;
DelayMS(30);
ENA=1;
DelayMS(70);
ENA=0;
DelayMS(50);
ENB=1;
DelayMS(50);
ENB=0;
}
void littleright()
{
IN1=1,IN2=0,IN3=1,IN4=1;
DelayMS(30);
ENB=1;
DelayMS(70);
ENB=0;
DelayMS(50);
ENA=1;
DelayMS(50);
ENA=0;
}
void run()
{
IN1=1,IN2=0,IN3=1,IN4=0;
DelayMS(65);
ENA=1;
ENB=1;
DelayMS(35);
ENA=0;
ENB=0;
}
void left()
{
IN1=0,IN2=1,IN3=1,IN4=0;
DelayMS(30);
ENA=1;
DelayMS(70);
ENA=0;
DelayMS(50);
ENB=1;
DelayMS(50);
ENB=0;
}
void right()
{
IN1=1,IN2=0,IN3=0,IN4=1;
DelayMS(30);
ENB=1;
DelayMS(70);
ENB=0;
DelayMS(50);
ENA=1;
DelayMS(50);
ENA=0;
}
void back()
{
IN1=0,IN2=1,IN3=0,IN4=1;
DelayMS(45);
ENA=1;
ENB=1;
DelayMS(55);
ENA=0;
ENB=0;
}
void main()
{
if(DD1==0&&DD2==1&&DD3==1&&DD4==0)
run();
else
{
if(DD1==0&&DD2==0&&DD3==0&&DD4==1)
{
left();
}
if(DD1==1&&DD2==0&&DD3==0&&DD4==0)
{
right();
}
if(DD1==0&&DD2==1&&DD3==0&&DD4==0)
{
littleright();
}
if(DD1==1&&DD2==1&&DD3==0&&DD4==0)
{
littleright();
}
if(DD1==0&&DD2==0&&DD3==1&&DD4==1)
{
littleleft();
}
if(DD1==0&&DD2==0&&DD3==1&&DD4==0)
{
littleleft();
}
if(DD1==0&&DD2==0&&DD3==0&&DD4==0)
{
back();
}
if(DD1==1&&DD2==1&&DD3==1&&DD4==1)
{
run();
}
if(DD1==0&&DD2==1&&DD3==0&&DD4==1)
{
run();
}
if(DD1==1&&DD2==1&&DD3==1&&DD4==0)
{
littleright();
}
if(DD1==0&&DD2==1&&DD3==1&&DD4==1)
{
littleleft();
}
if(DD1==1&&DD2==0&&DD3==0&&DD4==1)
{
right();
}
if(DD1==1&&DD2==0&&DD3==1&&DD4==1)
{
right();
}
}
}