#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
/***************************************
端口定义
****************************************/
sbit IN1=P2^1; //P10与电机驱动IN1相连
sbit IN2=P2^2; //P11与电机驱动IN2相连
sbit IN3=P2^3; //P12与电机驱动IN3相连
sbit IN4=P2^4; //P13与电机驱动IN4相连
sbit ENA=P3^0;
sbit ENB=P3^1;
sbit xjr=P1^0;
sbit xjm=P1^1;
sbit xjl=P1^2;
sbit QH=P1^7;
uint m,t;
sbit a=P3^7;
sbit b=P3^6;
sbit c=P3^5;
sbit d=P3^4;
void yaokong();
void xunji();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Turn_left(void)
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
void Turn_right(void)
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
void Go(void)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void Back(void)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
void init()
{
ENA=1;
ENB=1;
}
main()
{
init();
while(1)
{
if(QH==1)
yaokong();
if(QH==0)
xunji();
}
}
void xunji()
{
if((xjl==1&&xjm==0&&xjr==1)||(xjl==1&&xjm==1&&xjr==1) )//中间灭或全亮 直走
{
Go();
}
if(xjl==0&&xjm==1&&xjr==1)
{
Turn_left(); //左边灭 左拐
}
if(xjl==1&&xjm==1&&xjr==0)
{
Turn_right(); //右边灭 右拐
}
if(xjl==0&&xjm==0&&xjr==0)
{
ENA=0;
ENB=0; //全灭 全停
}
else
{
ENA=1;
ENB=1;
}
}
void yaokong()
{
if(a)//前进
{
Go();
}
if(b)//右拐
{
Turn_right();
}
if(c)//后退
{
Back();
}
if(d)//左拐
{
Turn_left();
}
} |