|
#include <reg52.h>
unsigned char zkb1=0 ;
unsigned char zkb2=0 ;
unsigned char t=0;
sbit ENB_zuoqian=P0^0;
sbit IN1_zuoqian=P0^2;
sbit IN2_zuoqian=P0^1;
sbit ENA_youqian=P1^0;
sbit IN1_youqian=P1^2;
sbit IN2_youqian=P1^1;
sbit ENA_zuohou=P0^5;
sbit IN1_zuohou=P0^3;
sbit IN2_zuohou=P0^4;
sbit ENB_youhou=P1^5;
sbit IN1_youhou=P1^3;
sbit IN2_youhou=P1^4;
sbit s1=P2^0;
sbit s2=P2^1;
sbit s3=P2^2;
sbit s4=P2^3;
sbit s5=P2^4;
void car_go()
{
IN1_zuoqian=0;
IN2_zuoqian=1;
IN1_youqian=0;
IN2_youqian=1;
IN1_zuohou=1;
IN2_zuohou=0;
IN1_youhou=1;
IN2_youhou=0;
zkb1=100;
zkb2=100;
}
void car_left()
{
IN1_zuoqian=0;
IN2_zuoqian=1;
IN1_youqian=0;
IN2_youqian=1;
IN1_zuohou=1;
IN2_zuohou=0;
IN1_youhou=1;
IN2_youhou=0;
zkb1=0;
zkb2=60;
}
void car_left2()
{
IN1_zuoqian=1;
IN2_zuoqian=0;
IN1_youqian=0;
IN2_youqian=1;
IN1_zuohou=0;
IN2_zuohou=1;
IN1_youhou=1;
IN2_youhou=0;
zkb1=40;
zkb2=80;
}
void car_right()
{
IN1_zuoqian=0;
IN2_zuoqian=1;
IN1_youqian=0;
IN2_youqian=1;
IN1_zuohou=1;
IN2_zuohou=0;
IN1_youhou=1;
IN2_youhou=0;
zkb1=60;
zkb2=0;
}
void car_right2()
{
IN1_zuoqian=0;
IN2_zuoqian=1;
IN1_youqian=1;
IN2_youqian=0;
IN1_zuohou=1;
IN2_zuohou=0;
IN1_youhou=0;
IN2_youhou=1;
zkb1=80;
zkb2=40;
}
void init()
{ TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if(t<zkb1)
{ENB_zuoqian=1; ENA_zuohou=1;}
else
{ ENB_zuoqian=0; ENA_zuohou=0;}
if(t<zkb2)
{ ENA_youqian=1; ENB_youhou=1;}
else
{ENA_youqian=0; ENB_youhou=0;}
t++;
if(t>=100)
{t=0;}
}
void main()
{
init();
zkb1=100;
zkb2=100;
while(1)
{
IN1_zuoqian=0; ENB_zuoqian=1;
IN2_zuoqian=1;
IN1_youqian=0; ENA_youqian=1;
IN2_youqian=1;
IN1_zuohou=0; ENA_zuohou=1;
IN2_zuohou=1;
IN1_youhou=0; ENB_youhou=1;
IN2_youhou=1;
while(1)
{
if(s1 == 0 && s2 == 0&& s3 == 1&& s4 == 0&& s5 == 0)
{
car_go();
}
if(s1 == 1 && s2 == 1&& s3 == 1&& s4 == 1&& s5 == 1)
{
car_go();
}
if(s1 == 0 && s2 == 1&& s3 == 1&& s4 == 1&& s5 == 0)
{
car_go();
}
if(s1 == 1 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
{
car_left2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_left2();
}
if(s1 == 0 && s2 == 1&& s3 == 0&& s4 == 0&& s5 == 0)
{
car_left();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_left();
}
if(s1 == 1 && s2 == 1&& s3 == 1&& s4 == 0&& s5 == 0)
{
car_left2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_left2();
}
if(s1 == 1 && s2 == 1&& s3 == 0&& s4 == 0&& s5 == 0)
{
car_left2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_left2();
}
if(s1 == 0 && s2 == 1&& s3 == 1&& s4 == 0&& s5 == 0)
{
car_left2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_left2();
}
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 1)
{
car_right2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_right2();
}
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 1&& s5 == 0)
{
car_right();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_right();
}
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 1&& s5 == 1)
{
car_right2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_right2();
}
if(s1 == 0 && s2 == 0&& s3 == 1&& s4 == 1&& s5 == 0)
{
car_right2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_right2();
}
if(s1 == 0 && s2 == 0&& s3 == 1&& s4 == 1&& s5 == 1)
{
car_right2();
if(s1 == 0 && s2 == 0&& s3 == 0&& s4 == 0&& s5 == 0)
car_right2();
}
}
}
}
|
|