找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1628|回复: 1
收起左侧

关于单片机循迹小车的一些小问题,需要在循迹1分半钟后跳出主函数实现直行5秒

[复制链接]
ID:281692 发表于 2018-12-22 20:07 | 显示全部楼层 |阅读模式
30黑币
大背景是一个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);
  }
}

回复

使用道具 举报

ID:123289 发表于 2018-12-24 11:22 | 显示全部楼层
如何理解你的“跳出主函数”?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表