找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3498|回复: 3
打印 上一主题 下一主题
收起左侧

单片机-if和else的问题,求高手指点

[复制链接]
跳转到指定楼层
楼主
ID:255744 发表于 2017-11-30 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main()
{
int xx;          //储存超声波测距的值
uart_Init();      //初始化串口
while(1)
{
xx=GetF_juli();    //获取超声波测距的值
if(xx>30)
{
printf("%d\n",xx);  //输出获取的值,用于调试
Forward();        //执行前进
Delay_nms(100);   //延迟
}
else
{
back();           //执行后退
printf("%d\n",xx);  //输出获得的值,用于调试
delay_nms(100);   //延迟
}
}
}
问题如下:
如果只是打开电源烧录上去(电源开关有三档,第一档是关闭,第二档是用于调试,不转动车轮,第三档打开让车轮转动),调试得到的返回值和执行是没有问题的。
但是当开启第三档,让车轮转动后,就会同时执行if和else,并且else得到的值永远是0.
请各位高手指点下,谢谢各位大神

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:142127 发表于 2017-12-1 06:19 | 只看该作者
if else多了不好处理的话可以尝试用case语句
回复

使用道具 举报

板凳
ID:256022 发表于 2017-12-1 09:55 | 只看该作者
增加个开关位置控制量,如果简单的用if else是没发解决问题的,你少个判断量
回复

使用道具 举报

地板
ID:128363 发表于 2017-12-1 11:00 | 只看该作者
这程序是没有什么问题,主要取决于XX的值,你调试下是不是XX一直小于30.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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