IMG20190106112257.jpg (4.41 MB, 下載次數: 124)
下載附件
2019-1-6 11:25 上傳
IMG20190106112405.jpg (4.84 MB, 下載次數: 133)
下載附件
2019-1-6 11:26 上傳
IMG20190106112346.jpg (4.1 MB, 下載次數: 118)
下載附件
2019-1-6 11:26 上傳
#include <red52.h>
sbit hongwai1=P1^0; //定義紅外對管引腳 4個
sbit hongwai2=P1^1;
sbit hongwai3=P1^2;
sbit hongwai4=P1^3;
sbit ENA=P0^0;//電機驅動
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() //前進
{
M1A=1;
M1B=0;
M2A=1;
M2B=0;
}
void houtui() //后退
{
M1A=0;
M1B=1;
M2A=0;
M2B=1;
}
void zuozhuan() //左轉
{
M1A=1;
M1B=0;
M2A=0;
M2B=1;
}
void weizuozhuan() //左微轉
{
M1A=1;
M1B=0;
M2A=0;
M2B=0;
}
void youzhuan() //右轉
{
M1A=0;
M1B=1;
M2A=1;
M2B=0;
}
void weiyouzhuan() //右微轉
{
M1A=0;
M1B=0;
M2A=1;
M2B=0;
}
void delay_nus(unsigned int i) //延時函數
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延時函數
{
n=n+1;
while(--n)
delay_nus(900);
}
void ControlCar(unsigned char xunji)
{
tingzhi(); //首先是停止
switch(xunji) //根據swith里面的值來驅動車
{
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() //主函數
{
delay_nms (30);//延時
ControlCar(7);//停止
ControlCar(1);//前進
delay_nms (10);
while(1)
{
Start: //行號
ENA=1;//電機使能
ENB=1;
if(hongwai1==0&&hongwai2 == 0 && hongwai3 == 0&&hongwai4==0) //尋跡模塊的情況判定,4個尋跡模塊,可以組合為16種情況
{ //根據需要選擇
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; //相當于返回 start行
NextRun:
ControlCar(1);
}
}
|