nop(nop)

導讀您好,現在軟糖來為大家解答以上的問題。nop,nop相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、在單片機C語言中加入NOP指令是因為標...

您好,現在軟糖來為大家解答以上的問題。nop,nop相信很多小伙伴還不知道,現在讓我們一起來看看吧!

1、在單片機C語言中加入NOP指令是因為標準的C語言中沒有空語句。

2、但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。

3、這在匯編語言中很容易實現,寫幾個nop就行了。

4、在AVR-GCC中,如下方法嵌入匯編指令:asm ("nop; nop; nop; nop;"::);在keil C51中,直接調用庫函數:#include// 聲明了void _nop_(void);_nop_();// 產生一條NOP指令擴展資料執行NOP指令只使程序計數器PC加1,所以占用一個機器周期。

5、實例:MOVLW 0xOF ;送OFH到W MOVWF PORT_B ;W內容寫入B口 NOP ;空操作 MOVF PORT_B,W 。

6、讀操作說明:該三條指令是一種對I/O口的B口連續操作的實例,其目的達到寫入B口的內容要讀出時,應保證寫、讀之間有個穩定時間,因此加入了空操作指令NOP。

7、作用:對于延時很短的,要求在us級的,采用“_nop_ ”函數,這個函數相當匯編NOP指令,延時幾微秒。

8、NOP指令為單周期指令,可由晶振頻率算出延時時間,對于12M晶振,延時1uS。

9、對于延時比較長的,要求在大于10us,采用C51中的循環語句來實現。

10、在選擇C51中循環語句時,要注意以下幾個問題:第一、定義的C51中循環變量,盡量采用無符號字符型變量。

11、第二、在FOR循環語句中,盡量采用變量減減來做循環。

12、第三、在do,, while, while 語句中,循環體內變量也采用減減方法。

13、這因為在C51編譯器中,對不同的循環方法,采用不同的指令來完成的。

本文就為大家分享到這里,希望小伙伴們會喜歡。

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!