⑴ 請問在單片機C語言中,while(--t)和while(t--)有什麼區別啊
兩者的基層匯編語言不同,程序運行時間也不同。
一、基層匯編語言的差別
(1)while(--t)用到了減一不為0轉移指令DJNZ
執行一次while(t--) 的結束時間
可得單片機在執行while(t--)指令時,共耗時:
(0.00050130s-0.00049479s)/(12/11059200Hz)=5.999616mc≈6mc,
可以發現,單片機在執行while(--t)時所消耗的時間比在執行while(t--)時所消耗的時間短了整整4個機器周期,驗證了第一部分所得結論的正確性。
⑵ 單片機C語言,問題一:while(語句){語句}與while(語句);語句 是什麼區別,程序是
首先問題一:while(語句){語句}中小括弧中的語句是判斷真假,如果為真,則執行大括弧中的語句,如果為假,則不執行下面的語句。while(語句);中的語句也是一個判斷,當小括弧中的語句表達式值不為0時,就一直判斷,直到裡面的表達式值為0時結束判斷,去執行下一步的程序;
對於問題二:
while(!k1);
語句1;
while(!k2);
語句2;
對於這個程序段,只要是沒有把它放在一個循環裡面,也就是說讓這個程序順序執行一次就不再去執行這個段,就能實現你想要的功能。因為這幾個語句是順序執行的,所以在執行語句2之前,必須得經過語句1,語句2是不能在語句1之前執行的。同時也實現你需要的K1、K2不為0則檢測,為0則不再檢測,繼續執行下面語句的要求。使用的是你詢問的問題一中第二種循環方式。
⑶ if(; ; )在單片機中啥意思
單片機採用 C語言編程,題目的語法是錯誤的,該結構應該是 for(;;);
for 的語言結構為 for(①變數初始化;②判斷語句;③變數增量)④循環體內容;
程序執行到for時,會先進行①編譯,而且整個for循環只執行一次①。
程序再根據②的真假(0為假,非0為真)來決定是否執行④。
每執行完一次④內容,for 將執行一次③。
這四個要素均可以省略,但分號不能省略。
①省略,則表示 不需要初始化;
②省略,則表示 判斷條件為 空,空 非零,即恆為真。(一般會在④內增加無條件跳轉語句以結束循環);
③省略,則表示 不需要增量變化。(一般也會在④內增加變數增量,或在外部中斷中改變變數(個人不推薦此方法));
④省略,則表示,循環體執行內容為 空。