标题: 关于单片机循迹小车的一些小问题,需要在循迹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