|
楼主 |
发表于 2011-11-30 14:07:02
|
显示全部楼层
#include <reg52.h>
#define sen_port P1
//sbit SEN1=P1^0;
//sbit SEN2=P1^1;
sbit EN1=P1^0;
sbit IN1=P1^1;
sbit IN2=P1^2;
sbit EN2=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
void delay(int n) //延时子程序
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=200;k>0;k--);
}
unsigned char sensor_inp()
{
unsigned char sensor;
sensor = sen_port;
sensor &= 0x03;
P0 = sensor;
return sensor;
}
void forward() //two motos are runing forward
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void backward() //two motos are runing backward
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void turn_right() //left moto is runing, but right moto is brake
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_left() //right moto is runing forward, and left moto is running backward
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void turn_left() //right moto is runing, but left moto is brake
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_right() //left moto is running forward, and right moto is running backward
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void free() //two motos is free
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
EN1=0;
EN2=0;
}
void stop() //two motos stop
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
EN1=1;
EN2=1;
}
void main(void)
{
delay(10);
P0=0x55;
while(1)
{
// P0=P1;
// delay(100); forward();
// delay(100); stop();
// delay(100); backward();
// delay(100); stop();
// delay(100);
turn_left();
// delay(100); stop();
// delay(100); turn_right();
// delay(100); stop();
// delay(100); rotate_left();
// delay(100); stop();
// delay(100); rotate_right();
// delay(100); stop();
// delay(100); stop();
// delay(200);
// forward();
// delay(200);
// backward();
// delay(20);
}
} |
|