標題: 單片機-if和else的問題,求高手指點 [打印本頁]
作者: 1歲就蠻壞 時間: 2017-11-30 16:50
標題: 單片機-if和else的問題,求高手指點
void main()
{
int xx; //儲存超聲波測距的值
uart_Init(); //初始化串口
while(1)
{
xx=GetF_juli(); //獲取超聲波測距的值
if(xx>30)
{
printf("%d\n",xx); //輸出獲取的值,用于調(diào)試
Forward(); //執(zhí)行前進
Delay_nms(100); //延遲
}
else
{
back(); //執(zhí)行后退
printf("%d\n",xx); //輸出獲得的值,用于調(diào)試
delay_nms(100); //延遲
}
}
}
問題如下:
如果只是打開電源燒錄上去(電源開關(guān)有三檔,第一檔是關(guān)閉,第二檔是用于調(diào)試,不轉(zhuǎn)動車輪,第三檔打開讓車輪轉(zhuǎn)動),調(diào)試得到的返回值和執(zhí)行是沒有問題的。
但是當開啟第三檔,讓車輪轉(zhuǎn)動后,就會同時執(zhí)行if和else,并且else得到的值永遠是0.
請各位高手指點下,謝謝各位大神
作者: sqwwsq 時間: 2017-12-1 06:19
if else多了不好處理的話可以嘗試用case語句
作者: rby 時間: 2017-12-1 09:55
增加個開關(guān)位置控制量,如果簡單的用if else是沒發(fā)解決問題的,你少個判斷量
作者: sageliu 時間: 2017-12-1 11:00
這程序是沒有什么問題,主要取決于XX的值,你調(diào)試下是不是XX一直小于30.
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |