#include
sbit ENA = P2^0;
sbit ENB = P2^1;
sbit INB1 = P2^2;
sbit INA1 = P2^4;
sbit INA2 = P2^3;
sbit INB2 = P2^5;
sbit left1 = P1^5;
sbit left2 = P1^4;
sbit s1 = P1^3;
sbit s2 = P1^2;
sbit right1 = P1^1;
sbit right2 = P1^0;
unsigned char zkb1 = 0;
unsigned char zkb2 = 0;
unsigned char t = 0;
unsigned char tt ;
unsigned char k;
void init()
{
EA = 1;
TMOD = 0x01;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1
{
TH0 = (65536 - 100) / 256;
TL0 = (65536 - 100) % 256;
if(t < zkb1)
{
INA1 = 1;
}
else
{
INA1 = 0;
}
if(t < zkb2)
{
INB1 =1;
}
else
{
}
INB1 = 0;
t++;
if(t >= 80)
{
t = 0;
}
}
{
}
void delay(char z)
char x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
void turn_left1()
{
zkb1 = 40;
zkb2 = 0;
}
void turn_left2()
{
zkb1 = 80;
zkb2 = 0;
delay(200);
//
}
void turn_right1()
{
zkb1 =0;
zkb2 =40;
}
void turn_right2()
{
zkb1 = 0;
zkb2 =80;
delay(200);
//
}
void qianjin()
{
zkb1 = 80;
zkb2 = 80;
}
void zhijiaol()
{
turn_left2();
delay(2000);
}
void zhijiaor()
{
turn_right2();
delay(2000);
}
void panduan()
{
zkb1=40;
zkb2=40;
k=2500;
while(k--)
{
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2
== 1)&&(k>=0))
{
ENA=0;
ENB=0;
}
}
}
void xunji()
{
unsigned char flag;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 1;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 2;
if((left1 == 1)&&(left2 == 0)&&(s1 == 0)&&(s2 == 0)&&(right1 == 0)&&(right2 == 1))
flag = 3;
if((left1 == 0)&&(left2 == 0)&&(s1 == 0)&&(s2 == 0)&&(right1 == 0)&&(right2 == 0))
flag = 4;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 5;
if((left1 == 1)&&(left2 == 0)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 6;
if((left1 == 0)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 7;
if((left1 == 1)&&(left2 == 0)&&(s1 == 0)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 8;
if((left1 == 0)&&(left2 == 0)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 9;
if((left1 == 1)&&(left2 == 0)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 10;
if((left1 == 0)&&(left2 == 0)&&(s1 == 0)&&(s2 == 1)&&(right1 == 1)&&(right2 == 1))
flag = 11;
if((left1 == 0)&&(left2 == 0)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 12;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 13;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 0)&&(right2 == 1))
flag = 14;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 1)&&(right2 == 0))
flag = 15;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 0)&&(right1 == 0)&&(right2 == 1))
flag = 16;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 1)&&(right1 == 0)&&(right2 == 0))
flag = 17;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 0)&&(right2 == 1))
flag = 18;
if((left1 == 1)&&(left2 == 1)&&(s1 == 1)&&(s2 == 0)&&(right1 == 0)&&(right2 == 0))
flag = 19;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 0)&&(right2 == 0))
flag = 20;
if((left1 == 0)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 0)&&(right2 == 1))
flag = 21;
if((left1 == 0)&&(left2 == 0)&&(s1 == 1)&&(s2 == 0)&&(right1 == 0)&&(right2 == 1))
flag = 22;
if((left1 == 0)&&(left2 == 0)&&(s1 == 1)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 23;
if((left1 == 0)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 1))
flag = 24;
if((left1 == 1)&&(left2 == 0)&&(s1 == 0)&&(s2 == 1)&&(right1 == 0)&&(right2 == 0))
flag = 25;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 0))
flag = 26;
if((left1 == 1)&&(left2 == 1)&&(s1 == 0)&&(s2 == 1)&&(right1 == 0)&&(right2 == 0))
flag = 27;
if((left1 == 1)&&(left2 == 0)&&(s1 == 0)&&(s2 == 0)&&(right1 == 1)&&(right2 == 0))
flag = 28;
if((left1 == 0)&&(left2 == 0)&&(s1 == 0)&&(s2 == 1)&&(right1 == 0)&&(right2 == 1))
flag = 29;
if((left1 == 1)&&(left2 == 0)&&(s1 == 1)&&(s2 == 0)&&(right1 == 0)&&(right2 == 0))
flag = 30;
switch(flag)
{
case 1:qianjin();break;
case 2:qianjin();break;
case 3:qianjin();break;
case 4:panduan();break;
case 5:turn_left1();break;
case 6:turn_left2();break;
case 7:turn_left2();break;
case 8:turn_left2();break;
case 9:turn_left2();break;
case 21:turn_left2();break;
case 22:turn_left2();break;
case 23:turn_left2();break;
case 24:turn_left2();break;
case 29:turn_left2();break;
case 13:turn_right1();break;
case 14:turn_right2();break;
case 15:turn_right2();break;
case 16:turn_right2();break;
case 17:turn_right2();break;
case 25:turn_right2();break;
case 26:turn_right2();break;
case 27:turn_right2();break;
case 28:turn_right2();break;
case 30:turn_right2();break;
case 10:zhijiaol();break;
case 11:zhijiaol();break;
case 12:zhijiaol();break;
case 18:zhijiaor();break;
case 19:zhijiaor();break;
case 20:zhijiaor();break;
default:qianjin();break;
}
}
void main()
{
init();
INA2 = 0;
INB2 = 0;
while(1)
{
xunji();
}
}