|
|
改成這樣, 編譯不會錯誤 void delay_x2ms(unsigned int i) { unsigned char j, k; for(i; i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--) //; 后面多了個分號 if(f==1) { t=0; break; } } |
|
你定義的i為參數。 參數應該賦給j或k, 這樣才是正確for語句用法 |
| 所以來這里問咯 |
| 可以看一下循環,這個好像在switch也是在括號外面吧!其次在if能用break嗎?留個問題借樓 |
| 先看下C語言for循環 |
| if一般沒有帶break的,你的k循環不受if控制,if在這里不是for循環內嵌語句.一句話,邏輯沒理清. |
| 說說原因 |
| 開環和閉環你應該沒有搞清楚吧 |
| f是全局變量吧? 在定時器中斷還是外部中斷里面被改變? if語句沒有起到延遲的限制作用,for循環執行完后,無論if判斷結果如何,都會退出這個延遲函數。 if判斷只能判斷f的值,而去改變t的值。 多看看c語言基礎知識吧。 |
man1234567 發表于 2020-9-29 17:25 詳細說下,謝謝啦 |
| 這個延時是個閉環,如果搞條件的話放在外面。 |
| 說錯了,是當f為1是跳出這個延時 |