标题:
关于单片机循迹小车的一些小问题,需要在循迹1分半钟后跳出主函数实现直行5秒
[打印本页]
作者:
zxwbwvv
时间:
2018-12-22 20:07
标题:
关于单片机循迹小车的一些小问题,需要在循迹1分半钟后跳出主函数实现直行5秒
大背景是一个51单片机控制的一个小车,但需要在循迹1分半钟后跳出主函数实现直行5秒,再返回主函数,拜托各位大神出出主意,
原代码如下:#include <REGX52.H>
sbit LeftIR=P3^5;
sbit RightIR=P3^6;
sbit xunjiLED=P2^1;
sbit M1A=P0^0;
sbit M1B=P0^1;
sbit M2A=P0^2;
sbit M2B=P0^3;
sbit B1=P0^4;
sbit SB1=P0^6;
void tingzhi()
{
M1A=0; //??M1???A???????0
M1B=0; //??M1???B???????0
M2A=0; //??M2???A???????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=0;
M1B=1;
M2A=1;
M2B=0;
}
void youzhuan()
{
M1A=1;
M1B=0;
M2A=0;
M2B=1;
}
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 ConType)
{
tingzhi();
switch(ConType)
{
case 1: //???
{
qianjin();
break;
}
case 2: //????
{
houtui();
break;
}
case 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) //?????????
{
xunjiLED = 0 ;
Start:
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;
}
if(LeftIR== 1&&RightIR == 1)
{
ContrplCar(4);
delay_nms(10);
goto NextRun;
}
goto Start;
NextRun:
ControlCar(8);
}
}
作者:
yzwzfyz
时间:
2018-12-24 11:22
如何理解你的“跳出主函数”?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1