c51微控制器請問這句如何理解

時間 2022-03-12 19:20:25

1樓:石燕橋

你呼叫函式的時候delay(200),會有個延時時間,如果你的延時是是200,200就被賦值給z

然後再把z賦值給x 所以x就是200的值,

若你把函式該成delay(400),那麼應該x就等於400.

2樓:匿名使用者

z 是呼叫該子函式時賦值的,如 delay(200)for(x=z;x>0;x--) 是 賦值 x=z 如果 x > 0 則 x = x-1

for(y=200;y>0;y--); 是 賦值 y=200 如果 y > 0 則 y = y -1

結果 z = 200 是不變的

x = 200 是 因為 x 迴圈 還沒有開始,y = 0 是 y 已經結束一個迴圈。

3樓:匿名使用者

這個呼叫的時候才給z 和x賦值,

如:delay(1);

這時候 z==1;

for(x=1;x>0;x--) x 的值 每-1for(y=200;y>0;y--);這個迴圈200次; 每次退出的時候y=0;

我不知道 你 怎麼呼叫的這個函式;我猜 你 可能是這樣呼叫的: delay(200) ;

4樓:匿名使用者

延時函式。如果z是毫秒為單位,那麼for(x=z;x>0;x--)的每一步就是1ms.

之所以寫上for(y=200;y>0;y--);,是因為你的**每跑一次for,需要消耗2條指令(一條y--,一條y>0),這兩條指令合起來在你的**上耗時0.005ms。

5樓:走過燈火瀾柵處

因為這是一個帶引數的子函式,子函式被呼叫時需要賦值給傳遞引數,例如delay(200); 這就是呼叫這個函式語句,它把200這個值賦值給傳遞引數z,所以z就是200了,你的程式應該有這麼一段,並不是單獨這一個子函式就可以執行的,還要有main(),在main()函式或者其他函式裡應該有這麼一句,當然你也可以改變z的傳遞數值例如delay(80); 那麼z的值就是80這個函式也是這個意圖,方便不同時候賦值不同,得到延時的時間不同。

6樓:匿名使用者

看上面,是一個延時3程式。z是呼叫子程式時賦值的,其它參照1樓解答就可以了。但個人感覺,x也應該是0。

7樓:匿名使用者

這是一個延遲函式,簡單點說,就是讓程式停在這裡一段時間,在for迴圈中,x和z的值都賦值了。

8樓:06米老鼠

你仔細查一下呼叫delay(uint z);函式的時候給沒給值。一般不給值編輯不過去。你給的值是多少x的值就是多少,假如為1,執行函式時,第一個for語句執行一次,後一個要執行200次。

9樓:徐霄沛

這是一個雙重迴圈呀,一般做cpu空轉用的延時程式。y在每次內部迴圈的時候,都會重置為200,然後迴圈200次內迴圈。

10樓:咋都註冊了

這個是個子函式。你肯定在別的地方有這麼一句。 delay(200)

C51微控制器程式設計

include define uchar unsigned char define uint unsigned intsbit high key p1 0 sbit low key p1 1 sbit led p2 0 sbit speak p2 1 uint count void delay ui...

c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的

衛戍邊疆 中斷是由於某種事件的發生 硬體或者軟體的 計算機暫停執行當前的程式,轉而執行另一程式,以處理髮生的事件,處理完畢後又返回原程式繼續作業的過程。中斷是處理器一種工作狀態的描述。1 int0 外部中斷0,由p3.2埠引入,低電平或下降沿引起。預設優先順序最高。2 int1 外部中斷1,由p3....

C51微控制器PWM管腳輸出電壓異常

你微控制器的具體型號是什麼?微控制器的管腳分為了漏極開路和推輓兩種輸出方式,如果你用的微控制器是漏極開路輸出的,要在管腳上加上拉電阻。如果是推輓輸出可以不用加。按照你說的情況你的微控制器可能是漏極開路輸出的,在管腳上加下拉電阻肯定是把電平拉低。你可以試試把管腳配置為推輓輸出方式 正常,開路測肯定還是...