找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 3
收起左侧

求教以下超声波测距单片机程序哪有问题,求教大神

[复制链接]
ID:255744 发表于 2017-11-30 18:26 | 显示全部楼层 |阅读模式
500黑币
问题如下:
如果只是打开电源烧录上去(电源开关有三档,第一档是关闭,第二档是用于调试,不转动车轮,第三档打开让车轮转动),调试得到的返回值和执行是没有问题的。
但是当开启第三档,让车轮转动后,就会同时执行if和else,并且else得到的值永远是0.
请各位高手指点下,谢谢各位大神
  1. void main()
  2. {
  3. int xx;          //储存超声波测距的值
  4. uart_Init();      //初始化串口



  5. while(1)
  6. {
  7. xx=GetF_juli();    //获取超声波测距的值
  8. if(xx>30)
  9. {

  10. printf("%d\n",xx);  //输出获取的值,用于调试
  11. Forward();        //执行前进
  12. Delay_nms(100);   //延迟

  13. }

  14. else
  15. {

  16. back();           //执行后退

  17. printf("%d\n",xx);  //输出获得的值,用于调试
  18. delay_nms(100);   //延迟

  19. }

  20. }

  21. }
复制代码



回复

使用道具 举报

ID:79358 发表于 2017-12-1 13:41 | 显示全部楼层
看看你的执行前进Forward();  函数里面有没有对所谓测到的距离XX进行操作,导致其值发生了变化
回复

使用道具 举报

ID:230826 发表于 2017-12-1 14:29 | 显示全部楼层
没原理图,代码不完整,让人无法判断
回复

使用道具 举报

ID:256142 发表于 2017-12-1 15:11 | 显示全部楼层
首先,同时执行if和else是不可能的,直观的你可以加个延时对比一下,else得到的值永远是0,得查看一下GetF_juli()这个函数,会不会是溢出了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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