标题: 求教以下超声波测距单片机程序哪有问题,求教大神 [打印本页]
作者: 1岁就蛮坏 时间: 2017-11-30 18:26
标题: 求教以下超声波测距单片机程序哪有问题,求教大神
问题如下:如果只是打开电源烧录上去(电源开关有三档,第一档是关闭,第二档是用于调试,不转动车轮,第三档打开让车轮转动),调试得到的返回值和执行是没有问题的。
但是当开启第三档,让车轮转动后,就会同时执行if和else,并且else得到的值永远是0.
请各位高手指点下,谢谢各位大神
- 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); //延迟
- }
- }
- }
复制代码
作者: 嘉辉先生 时间: 2017-12-1 13:41
看看你的执行前进Forward(); 函数里面有没有对所谓测到的距离XX进行操作,导致其值发生了变化
作者: changle11 时间: 2017-12-1 14:29
没原理图,代码不完整,让人无法判断
作者: bobbyvip 时间: 2017-12-1 15:11
首先,同时执行if和else是不可能的,直观的你可以加个延时对比一下,else得到的值永远是0,得查看一下GetF_juli()这个函数,会不会是溢出了
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |