① 51單片機c語言 _nop_()是一個空指令短時間延時的空幾個機器周期
這個_nop_()等效與匯編裡面的,NOP指令,也就是空一個機器周期,如果是傳統51單片機的話,等於空12個時鍾周期【即一個機器周期】,操作方法如下:
1、首先,可以利用keil來進行模擬實驗,觀察軟體所顯示的數值,然後再進行相關的運算,即可得出結果。
② 單片機c語言中可以直接用NOP();而不用_nop_()不
NOP();這個好像只要在MSP430單片機中用過,而_nop_()這個是用在51單片機中的,不過要加頭文件#include <intrins.h>。
③ 51單片機 c語言里 _nop_ 函數怎麼用 具體一點 求高手指教
在單片機c語言中直接調用庫函數即可,具體如下:
#include<intrins.h> // 聲明了void_nop_(void);
_nop_(); // 產生一條NOP指令。
該函數的作用:對於延時很短的,要求在us級的,採用「_nop_」函數,這個函數相當匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。
④ 51單片機 用c語言 調用-nop- 編一個 延時一秒 程序
這么給你說吧,不同的編譯器同樣的C語言語句編譯出來的時間不完全一致,舉個簡單例子;
for(i=0,i<=100;i++)
for(j=0;j<=10;j++);
和
for(i=0,i<=10;i++)
for(j=0;j<=100;j++);
其實理論上來講,這個時間都是一個指令周期*10*100,對吧,但是實際效果而講,這兩個時間不一樣,都知道可以實現跳轉的指令機器周期有幾種,到底編譯器是如何實現的,我們可以通過編譯之後看它對應的匯編語句(編譯器中一般都可以看到),然後通過計算匯編的時間,才基本能確定你用C編譯之後這個延時程序到底延時多少,如果你換個編譯器,比如從keil轉到wave,又不能確定時間是否一致;其實你到網上看看,對於時間要求很嚴格的地方,延時程序基本都是匯編寫的,大不了是C和匯編嵌套,或者用定時器;如果你說的是大概一秒的話,那麼你網路一下就是一大堆;我做個一個表,即使用定時器,藐視很准確,其實走上一天可能就差幾秒甚至幾分鍾,因為C語言中的中斷程序,以及每次進入中斷退出中斷的指令周期,這些你都要考慮在內,這樣你才能做的很准;有點說偏題了。我的意思就是你要真的要把一秒作準,請用匯編或參考匯編,還要把每個語句的執行時間考慮在內,這樣你才能做的很准確
⑤ C語言中調用_nop_();應包含什麼頭文件
#include<intrins.h>
intrins.h一般出現在C51單片機編程中,一般程序中需要使用到空指令_nop_();字元循環移位指令_crol_等時使用。
這個頭文件中的其他函數:
_crol_ 字元循環左移
_cror_ 字元循環右移
_irol_ 整數循環左移
_iror_ 整數循環右移
_lrol_ 長整數循環左移
_lror_ 長整數循環右移
_nop_ 空操作 (相當於8051 NOP 指令)
_testbit_ 測試並清零位 (相當於8051 JBC 指令)
函數名: _crol_,_irol_,_lrol_
原 型:
unsigned char _crol_(unsigned char val,unsigned char n);
unsigned int _irol_(unsigned int val,unsigned char n);
unsigned int _lrol_(unsigned int val,unsigned char n);
⑥ 請問單片機c語言編程里的nop()含義是什麼
1、c語言中沒有_nop_()函數,該函數是在51單片機中用的延時函數,延時一個指令周期。
2、例如用6mhz的晶振,則如下for循環大約延時1秒。
int
i;
for(i=0;
i<6000000;
i++)
_nop_();
//
延時一個指令周期,相當於執行一條無意義的語言
⑦ 在單片機C語言中,extern void _nop_ (void)是什麼意思(void)是干什麼的
這個應該是一個延遲函數,_nop_的作用和匯編語言里NOP的作用差不多,都是單周期指令,如果是12M的時鍾,一個_nop_延遲的時間大約是1us。函數名前面的void表示的是函數的返回值為空,函數名後面括弧內的void表示函數的形參為空。
⑧ C中 _nop_()是什麼意思
C中 _nop_()是空指令,延時一個指令周期;
如果是51單片機,外部晶振是12M,那麼延時時間為1、12M*12=1us;
C語言是一門通用計算機編程語言,應用廣泛。
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
⑨ _nop_在c語言里怎麼用呢
在c語言里沒有這個_nop_函數,這個函數是在51單片機里使用的。
作用:對於延時很短的,要求在us級的,採用「_nop_」函數,這個函數相當匯編NOP指令,延時幾微秒。
NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。對於延時比較長的,要求在大於10us,採用C51中的循環語句來實現。
(9)c語言nop擴展閱讀
nop指令在C語言中的使用
示例:
#inluce<stdio.h>
assemblyinlinevoidinsert_nop()
{
asm_begin
nop
asm_end
}