| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 520 人关注过本帖, 1 人收藏
标题:高手帮帮我啊,一个关于小车的程序。
只看楼主 加入收藏
bkss111
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:5
专家分:3
注 册:2012-12-28
结帖率:100%
收藏(1)
已结贴  问题点数: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
快速回复:高手帮帮我啊,一个关于小车的程序。
数据加载中...
 
   



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

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