标题:高手帮帮我啊,一个关于小车的程序。
只看楼主
bkss111
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:5
专家分:3
注 册:2012-12-28
结帖率:100%
已结贴  问题点数:10 回复次数:7 
高手帮帮我啊,一个关于小车的程序。
下面的程序是小车的主程序,要求小车接收到串口接收到的字符sbuf后可以转向,可是我的程序调试时左转了之后,就一直左转着
应该是左转一下可以向前走。求解啊。
int main(void)      //主程序
{
  
     char flag=1;
    uart_Init();
     printf("Program Running!\n");
        while(flag)
         {
           m = SBUF;
           switch(m)
          {
           case 0x66:                    //接收到字母“f”,则小车向前行驶
                 Forward();             //向前
                 printf("run forward!\n");
                 flag=0;
           break;
           case 0x62:                    //接收到字母“b”,则小车向后行驶
                 Backward();
                 printf("run backward!\n");
                 flag=0;
           break;
           case 0x6c:                     //接收到字母“l”,则小车左转
                 Left_Turn();
                 printf("turn left!\n");
                  flag=0;
           break;
           case 0x72:                      //接收到字母“r”,则小车右转
                  Right_Turn();
                  printf("turn right!\n");
                   flag=0;
           break;
           case 0x73:                      //接收到字母“s”,则小车停止
                  Stop();
                  printf("stop!\n");
                  flag=0;
           break;
           default:                      //其他情况,小车前进
                  return 0x66;
                  flag=0;
           break;
          }
        flag=1;
        }
 }
搜索更多相关主题的帖子: 小车 Running forward 主程序 
2012-12-29 19:31
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:3 
你的那个break只是跳出了switch循环。。。并没有跳出while循环。。。。

有心者,千方百计;无心者,千难万难。
2012-12-29 21:13
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
得分:3 
我的理解是你应该添加一个按键检测程序,左转键按下并保持时才左转,松开时继续向前,  你的Left_Turn()函数运行后不会退出吗?
2012-12-29 21:16
神鸡降临
Rank: 2
等 级:论坛游民
帖 子:20
专家分:23
注 册:2012-12-29
得分:3 
回复 2楼 w527705090
但是break跳出来前,flag变成0了啊。
2012-12-29 21:55
神鸡降临
Rank: 2
等 级:论坛游民
帖 子:20
专家分:23
注 册:2012-12-29
得分:0 
回复 楼主 bkss111
楼主你的左转子程序是什么样子的?也许是你的左转子程序有问题。
2012-12-29 21:57
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:0 
你后面又有一个flag=1;这条语句。。。。

有心者,千方百计;无心者,千难万难。
2012-12-30 21:38
神鸡降临
Rank: 2
等 级:论坛游民
帖 子:20
专家分:23
注 册:2012-12-29
得分:0 
1、6楼说的问题,每次break从switch里出来,flag就会从0又变成1,继续while判断;
2、由于一直在while里判断,m接收到的SBUF值又没归零,所以又跳进左转程序里。
如此循环左转。
2012-12-31 20:15
bkss111
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:5
专家分:3
注 册:2012-12-28
得分:0 
程序是漏洞百出,自己改了之后基本能满足条件,但是遇到新问题,小车在没接收到指令时应该停止,现在却向前行走...
int main(void)      //主程序
{   
    char m1;   
    uart_Init();
    printf("Program Running!\n");
            
         while(1)
         {            
           m = SBUF;
           if(m==0x62||m==0x73||m!=m1)
             m1=m;
           else
                 m1=0x66;
          switch(m1)
          {
           case 0x66:                    //接收到字母“f”,则小车向前行驶                  
                 Forward();            
                 printf("forward!\n");              
           break;
           case 0x62:                    //接收到字母“b”,则小车向后行驶
                 Backward();
                 printf("backward!\n");                                    
           break;
           case 0x6c:                    //接收到字母“l”,则小车左转            
                 Left_Turn();
                 printf("left!\n");                 
           break;
           case 0x72:                   //接收到字母“r”,则小车右转
                  Right_Turn();
                 printf("right!\n");                 
           break;
           case 0x73:                  //接收到字母“s”,则小车停止
                  Stop();
                  printf("stop!\n");                  
           break;
           default:                      //其他情况,小车前进
                    Stop();                 
           break;
          }   
          m1=m;        
       }                  
       return 0;
}
痛苦
2013-01-01 20:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-394461-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.212372 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved