|
30黑幣
大背景是一個(gè)51單片機(jī)控制的一個(gè)小車,但需要在循跡1分半鐘后跳出主函數(shù)實(shí)現(xiàn)直行5秒,再返回主函數(shù),拜托各位大神出出主意,
原代碼如下:#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);
}
}
|
|