--
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us {
i=i/10;
while(--i); }
void delay_nms(unsigned int n) //延时n ms {
n=n+1;
while(--n)
delay_nus(900); //延时 1ms,同时进行补偿 }
void ControlCar(unsigned char ConType) //定义电机控制子程序 {
tingzhi();
switch(ConType) //判断用户设定电机形式 {
case 1: //前进 //判断用户是否选择形式1 {
qianjin(); break; }
case 2: //后退 //判断用户是否选择形式2 {
---
--
houtui(); //M2电机反转
break; }
case 3: //左转 //判断用户是否选择形式3 {
zuozhuan(); //M2电机正转 break; }
case 4: //右转是否选择形式4 {
youzhuan(); //M1电机正转
//M2反转
break; }
case 8: //停止是否选择形式8 {
tingzhi();
break; //选择 } } }
void main() //口 {
bit RunFlag=0; //---
判断用户电机判断用户退出当前主程序入定义小车
// //--
运行标志位
//RunShow=0; //初始化显示状态
ControlCar(8); //初始化小车运行状态
while(1) //程序主循环 {
Start:
LeftLed=LeftIR; //指示灯指示出前方左侧红外探头状态
RightLed=RightIR; //指示灯指示出前方右侧红外探头状态 FontLled= FontIR; SB1=LeftIR;
if(LeftIR == 0 && RightIR == 0) //到黑线,就前进 {
ControlCar(1); //有信号时,开始向右转一定的角度 delay_nms (10); goto NextRun; }
if(LeftIR == 0 && RightIR == 1) {
ControlCar(3); //有信号时,开始向左转一定的角度 delay_nms (10); goto NextRun; }
---
前方左侧前方右侧三个红外检测左侧没右侧没--
if(LeftIR == 1 && RightIR == 0) {
ControlCar(4); //右侧没有信号时,开始向左转一定的角度 delay_nms (10); goto NextRun; }
goto Start; NextRun:
ControlCar(8); } }
4 结果与分析
小车的运行如视频附件所示,能实现常规的巡线,遥控,寻光功能
---