|
#include <red52.h>
sbit hongwai1=P1^0; //定義紅外對(duì)管引腳 4個(gè)
sbit hongwai2=P1^1;
sbit hongwai3=P1^2;
sbit hongwai4=P1^3;
sbit ENA=P0^0;//電機(jī)驅(qū)動(dòng)
sbit M1A=P0^1;
sbit M1B=P0^2;
sbit M2A=P0^3;
sbit M2B=P0^4;
sbit ENB=P0^5;
void tingzhi() //停止
{
M1A=0;
M1B=0;
M2A=0;
M2B=0;
}
void qianjin() //前進(jìn)
{
M1A=1;
M1B=0;
M2A=1;
M2B=0;
}
void houtui() //后退
{
M1A=0;
M1B=1;
M2A=0;
M2B=1;
}
void zuozhuan() //左轉(zhuǎn)
{
M1A=1;
M1B=0;
M2A=0;
M2B=1;
}
void weizuozhuan() //左微轉(zhuǎn)
{
M1A=1;
M1B=0;
M2A=0;
M2B=0;
}
void youzhuan() //右轉(zhuǎn)
{
M1A=0;
M1B=1;
M2A=1;
M2B=0;
}
void weiyouzhuan() //右微轉(zhuǎn)
{
M1A=0;
M1B=0;
M2A=1;
M2B=0;
}
void delay_nus(unsigned int i) //延時(shí)函數(shù)
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延時(shí)函數(shù)
{
n=n+1;
while(--n)
delay_nus(900);
}
void ControlCar(unsigned char xunji)
{
tingzhi(); //首先是停止
switch(xunji) //根據(jù)swith里面的值來驅(qū)動(dòng)車
{
case 1:
{
qianjin();
break;
}
case 2:
{
houtui();
break;
}
case 3:
{
zuozhuan();
break;
}
case 4:
{
youzhuan();
break;
}
case 5:
{
weiyouzhuan();
break;
}
case 6:
{
weizuozhuan();
break;
}
case 7:
{
tingzhi();
break;
}
}
}
void main() //主函數(shù)
{
delay_nms (30);//延時(shí)
ControlCar(7);//停止
ControlCar(1);//前進(jìn)
delay_nms (10);
while(1)
{
Start: //行號(hào)
ENA=1;//電機(jī)使能
ENB=1;
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0) //尋跡模塊的情況判定,4個(gè)尋跡模塊,可以組合為16種情況
{ //根據(jù)需要選擇
ControlCar(7);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==1)
{
ControlCar(6);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 1&&hongwai4==1)
{
ControlCar(6);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 1&&hongwai4==0)
{
ControlCar(6);
delay_nms (3);
goto NextRun;
}
if(hongwai1==1&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0)
{
ControlCar(5);
delay_nms (3);
goto NextRun;
}
if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 0&&hongwai4==0)
{
ControlCar(5);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 1 && hongwai3 == 0&&hongwai4==0)
{
ControlCar(5);
delay_nms (3);
goto NextRun;
}
if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==1)
{
ControlCar(7);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0)
{
ControlCar(7);
delay_nms (3);
goto NextRun;
}
if(hongwai1==0&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==1)
{
ControlCar(3);
delay_nms (3);
goto NextRun;
}
if(hongwai1==1&&hongwai2 == 1 && hongwai3 == 1&&hongwai4==0)
{
ControlCar(4);
delay_nms (3);
break;
goto NextRun;
}
goto Start; //相當(dāng)于返回 start行
NextRun:
ControlCar(1);
}
}
|
評(píng)分
-
查看全部評(píng)分
|