//P00-P05六光电
//P10-P13红外模块
//P36 P37使能端 ENA左 ENB右
//P31-P34IN
//IN3 1 IN4 0 左后
//IN1 1 IN2 0 右前
//zkb1 左 zkb2右
//H1 H2右 H3 H4左
#include
#define uchar unsigned char
#define uint unsigned int
sbit HD1=P0^0;
sbit HD2=P0^1;
sbit HD3=P0^2;
sbit HD4=P0^3;
sbit HD5=P0^4;
sbit HD6=P0^5;
sbit H1=P1^0;
sbit H2=P1^1;
sbit H3=P1^2;
sbit H4=P1^3;
sbit IN1=P3^2;
sbit IN2=P3^3;
sbit IN3=P3^4;
sbit IN4=P3^5;
sbit ENA=P3^6;
sbit ENB=P3^7;
void qianjin();
void tingzhi();
void zuozhuan();
void youzhuan();
void delay_ms(uint x);
void zyhw();
void bizhang1();
void bizhang2();
void jiansu();
void init();
//void delay();
uchar zkb1=0;
uchar zkb2=0;
uchar flag;
uchar t=0;
/***********************主函数*****************************/
void main()
{
init();
while(1)
{
qianjin();
zyhw();
bizhang1();
qianjin();
zyhw();
bizhang2();
qianjin();
// jiansu();
// while(1);
}
}
/**********************基础驱动子函数*****************************/
void delay_ms(uint x)
{
uchar i,j;
for(i=0;i<110;i++)
for(j=0;j<x;j++);
}
//void delay()
//{
// uchar a,b;
// for(a=0;a<110;a++)
// for(b=0;b<500;b++);
//}
void qianjin()
{
zkb1=30;zkb2=30;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void tingzhi()
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
}
void zuozhuan()
{
zkb1=0;
zkb2=70;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void youzhuan()
{
zkb1=70;
zkb2=0;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
/********************传感器避障子函数*****************************/
void bizhang1()
{
uint num=0;
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==0)
delay_ms(5);
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==0)
{
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
zuozhuan();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
qianjin();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
youzhuan();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
num++;
}
}
void bizhang2()
{
uint num=1;
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==1)
delay_ms(5);
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==1)
{
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
youzhuan();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
qianjin();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
zuozhuan();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
num++;
}
}
//void jiansu()
//{
// if((HD1==0&&HD2==0&&HD3==0&&HD4==0&&HD5==0&&HD6==0)&&num==3)
// delay_ms(10);
// if((HD1==0&&HD2==0&&HD3==0&&HD4==0&&HD5==0&&HD6==0)&&num==3)
// tingzhi();
//}
void zyhw()
{
if(H3==0||H4==0)
{
youzhuan();
delay_ms(200);
}
if(H1==0||H2==0)
{
zuozhuan();
delay_ms(200);
}
}
/*************************PWM调速****************************/
void init()
{
TMOD=0x11;
TH1=(65536-100)/256;
TL1=(65536-100)%256;
EA=1;
TH0=0;
TL0=0;
ET0=1;
ET1=1;
TR1=1;
}
void timer1() interrupt 3
{
TH1=(65536-100)/256;
TL1=(65536-100)%256;
t++;
if(t>=100)
t=0;
if(t<zkb1)
ENA=1;
else
ENA=0;
if(t<zkb2)
ENB=1;
else
ENB=0;
}
//delay
//电机响