检测到黑线就为1;
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit REDR1=P1^0;
sbit REDR2=P1^1;
sbit REDL2=P1^2;
sbit REDL1=P1^3;
sbit ZUO_IN1=P1^4;
sbit ZUO_IN2=P1^5;
sbit YOU_IN1=P1^6;
sbit YOU_IN2=P1^7;
/*void turn_left(void)
{ ZUO_IN1=1;
ZUO_IN2=0;
YOU_IN1=0;
YOU_IN2=1;
}*/
void smallleft(void)
{ ZUO_IN1=0;
ZUO_IN2=0;
YOU_IN1=0;
YOU_IN2=1;
}
void left90(void) //左电机反转,右电机正转
{ ZUO_IN1=1;
ZUO_IN2=0;
YOU_IN1=0;
YOU_IN2=1;
}
/*void turn_right(void)
{ ZUO_IN1=0;
ZUO_IN2=1;
YOU_IN1=1;
YOU_IN2=0;
}*/
void smallright(void)
{ ZUO_IN1=0;
ZUO_IN2=1;
YOU_IN1=0;
YOU_IN2=0;
}
void right90(void) //左电机正转,右电机反转
{ ZUO_IN1=0;
ZUO_IN2=1;
YOU_IN1=1;
YOU_IN2=0;
}
void go(void)
{ ZUO_IN1=0;
ZUO_IN2=1;
YOU_IN1=0;
YOU_IN2=1;
}
void back(void)
{ ZUO_IN1=1;
ZUO_IN2=0;
YOU_IN1=1;
YOU_IN2=0;
}
void stp()
{ ZUO_IN1=1;
ZUO_IN2=1;
YOU_IN1=1;
YOU_IN2=1;
}
/*void Timer0() interrupt 1
{ TH0=0xff;
TL0=0xf6; //
}*/
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{ for(y=110;y>0;y--)
{;}
}
}
void main()
{
while(1)
{
if(REDL1==0&&REDL2==0&&REDR2==0&&REDR1==0)
{
go();
break;
}
else if(REDL1==1&&REDL2==1&&REDR2==1&&REDR1==1) //起跑线截停
{
stp();
delayms(1000);
break;
}
else if(REDL1==0&&REDL2==1&&REDR2==0&&REDR1==0) //左转
{ smallleft();
break;
}
else if(REDL1==0&&REDL2==0&&REDR2==1&&REDR1==0) //右转
{ smallright();
break;
}
else if(REDL1==1&&REDL2==0&&REDR2==0&&REDR1==0) //过界寻回
{ while(1)
{ smallleft();
if(REDL1==0&&REDL2==1&&REDR2==0&&REDR1==0)
{ break;
}
}
}
else if(REDL1==0&&REDL2==0&&REDR2==0&&REDR1==1) //过界寻回
{ while(1)
{ smallright();
if(REDL1==0&&REDL2==0&&REDR2==1&&REDR1==0)
{ break;
}
}
}
else if(REDL1==1&&REDL2==1&&REDR2==0&&REDR1==0) //直角左转
{
left90();
delayms(500);
break;
}
else if(REDL1==0&&REDL2==0&&REDR2==1&&REDR1==1) //直角右转
{
right90();
delayms(500);
break;
}
}
}
这是程序,直角左右转基本没问题,就是不太平滑,可是检测打起跑线(四个灯都亮的时候)没停下来,右电机一直转,很纳闷,不知道是什么原因,调试好久都没好。
大家看赛道,初赛的图,就是起跑线那地方停不下来。而且每到那个地方必左转。(因右电机一直没停)
此帖出自
小平头技术问答
确实是,那么多break,其中只要有一个被执行到,那不得跳出while(1)大循环,单片机就死机了,这样做难道就没有出过其他问题?
我刚刚把stp里的程序全部置0了 然后检测到全亮的时候又变成左电机转了
一周热门 更多>