當前位置:編程學習大全網 - 編程軟體 - 單片機匯編中為什麽要用NOP

單片機匯編中為什麽要用NOP

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

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

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

在AVR-GCC中,如下方法嵌入匯編指令:

asm ("nop; nop; nop; nop;" ::);

在keil C51中,直接調用庫函數:

#include// 聲明了void _nop_(void);

_nop_();// 產生壹條NOP指令

擴展資料

執行NOP指令只使程序計數器PC加1,所以占用壹個機器周期。實例:MOVLW 0xOF ;送OFH到W MOVWF PORT_B ;W內容寫入B口 NOP ;空操作 MOVF PORT_B,W 。

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

作用:對於延時很短的,要求在us級的,采用“_nop_ ”函數,這個函數相當匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。

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

在選擇C51中循環語句時,要註意以下幾個問題:

第壹、定義的C51中循環變量,盡量采用無符號字符型變量。

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

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

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

  • 上一篇:想學cnc編程沒有人教怎麽辦
  • 下一篇:松下控制器pr003怎樣調整和保存?
  • copyright 2024編程學習大全網