51微控制器c語言裡nop函式怎麼用

2021-03-03 21:00:15 字數 3133 閱讀 9804

1樓:疏影清曉

在單片bai機c語言中直接調du用庫函式即可,具體如下:zhi#include// 宣告瞭void _nop_(void);

_nop_(); // 產生一條

daonop指令。

該函式的內作用:對於延時容很短的,要求在us級的,採用「_nop_」函式,這個函式相當彙編nop指令,延時幾微秒。nop指令為單週期指令,可由晶振頻率算出延時時間,對於12m晶振,延時1us。

微控制器又稱單片微控制器,它不是完成某一個邏輯功能的晶片,而是把一個計算機系統整合到一個晶片上。相當於一個微型的計算機,和計算機相比,微控制器只缺少了i/o裝置。概括的講:

一塊晶片就成了一臺計算機。它的體積小、質量輕、**便宜、為學習、應用和開發提供了便利條件。同時,學習使用微控制器是瞭解計算機原理與結構的最佳選擇。

微控制器的使用領域已十分廣泛,如智慧儀表、實時工控、通訊裝置、導航系統、家用電器等。各種產品一旦用上了微控制器,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——「智慧型」,如智慧型洗衣機等。

51微控制器 c語言裡 _nop_ 函式怎麼用 具體一點 求高手指教

2樓:匿名使用者

1、c語言中沒有_nop_()函式,該函式是在51微控制器中用的延時函式,延時一個指令週期。一般內包含在容 intrins.h 標頭檔案當中。

2、例如用6mhz的晶振,則如下for迴圈大約延時1秒。

int i;

for(i=0; i<6000000; i++)_nop_(); // 延時一個指令週期,相當於執行一條無意義的語言

3樓:疏影清曉

在微控制器baic語言中直接呼叫庫函du

數即可,具體如zhi下:

#include// 宣告瞭void _nop_(void);

_nop_(); // 產生一條nop指令。

dao該函式的作用內

:對於延時很短容的,要求在us級的,採用「_nop_」函式,這個函式相當彙編nop指令,延時幾微秒。nop指令為單週期指令,可由晶振頻率算出延時時間,對於12m晶振,延時1us。

微控制器又稱單片微控制器,它不是完成某一個邏輯功能的晶片,而是把一個計算機系統整合到一個晶片上。相當於一個微型的計算機,和計算機相比,微控制器只缺少了i/o裝置。概括的講:

一塊晶片就成了一臺計算機。它的體積小、質量輕、**便宜、為學習、應用和開發提供了便利條件。同時,學習使用微控制器是瞭解計算機原理與結構的最佳選擇。

微控制器的使用領域已十分廣泛,如智慧儀表、實時工控、通訊裝置、導航系統、家用電器等。各種產品一旦用上了微控制器,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——「智慧型」,如智慧型洗衣機等。

51微控制器c語言中delay函式是怎麼定義和使用的?

4樓:匿名使用者

定義一個延時xms毫秒的延時函式

void delay(unsigned int xms)// xms代表需要延時的毫秒數

使用:void delay10us(uchar ms)i=[(延時值-1.75)*12/ms-15]/41、在c51中進行精確的延時子程式設計時,儘量不要或少在延時子程式中定義區域性變數,所有的延時子程式中變數通過有參函式傳遞。

2、在延時子程式設計時,採用do...while,結構做迴圈體要比for結構做迴圈體好。

3、在延時子程式設計時,要進行迴圈體巢狀時,採用先內迴圈,再減減比先減減,再內迴圈要好。

5樓:天雲一號

delay函式是一般自己定義的一個延時函式。

c語言定義延時函式主要通過無意義指令的執行來達到延時的目的。下面給出一個經典的延時函式。

// 定義一個延時xms毫秒的延時函式

void delay(unsigned int xms) // xms代表需要延時的毫秒數

6樓:匿名使用者

這是一個延時函式()

裡的unsigned int a是一個形參,為int型變數最 大值為32767;{}裡的unsigned int i和()裡的一樣 只是變數的名稱不同,為i;while就是迴圈語句 如果他後面的()裡的量不為零就執行他{}裡的內容,一旦為零就跳出該語句。for(i=0;i<600;i++);就是把i定為零,如果i在for裡小於600就跳到第三步i++(也就是i自增1);然後i=1但他還是小於600,接著就到第三步。。。。599次之後i=600,600就不小於600,這時就跳出for。

while後的()如果為零就跳出while

7樓:匿名使用者

5 51微控制器c語言中delay函式是怎麼定義和使用的?

voiddelay(unsignedinta){unsignedinti;while(--a!=0)

8樓:匿名使用者

c的話其實時間沒有辦法完全定性地計算的

如果非得精確的話只能使用定時器了,或者彙編的也行不過時間要求精度不是很高的話使用下面的**就行了當時使用示波器把時間完全調準的,65536ms範圍內還是比較準的,已經可以滿足通常的要求了:

#include "reg51.h" //標頭檔案包含//巨集定義

#define uint unsigned int#define uchar unsigned charvoid delay(uint ms) // 毫秒級延時(at89c52 @ 11.0592mhz)

//112}}

呼叫方式如下:

delay(400); //開機延時400ms夠詳細了吧?!

9樓:神奇號

假如說執行for(i = 0; i < 600; i++); 要1s,那a決定了執行1s的次數,這個延時就是a秒,懂了嗎?

不過12m晶振的話,大家一般是for(i = 0; i < 114; i++); 執行這句要1ms

10樓:匿名使用者

這是個延遲函式,delay 括號中的表示式是定義的無符號的整形變數,它是形參,你只要知道它是定義一個變數既可,它的值由main 函式傳遞過來,a的值有了,就進入了while 迴圈。不知你是否學過c語言,如果沒有,就看看while 迴圈。

11樓:匿名使用者

delay後面的()當中的a,是呼叫函式時,傳遞過來的變數,此值越大,延遲的時間就越長。

微控制器c語言延時程式,51微控制器C語言中delay函式是怎麼定義和使用的?

用定時器 可以衍生出定時中斷和標記迴圈查詢法 還有直接用軟體語句硬性延時 這個需要實際測試和調校過才比較準 但不管是哪一種,其最終 還是要依據微控制器工作頻率,具體的需要解釋太多,你還是看看對應微控制器的datasheet的各模組說明吧 可以用for迴圈延時 但是精度不夠 最好用定時器中斷 比如用定...

為什麼51微控制器可以執行c語言,為什麼51微控制器可以執行c語言

所有計算機在bai執行程式時,肯du定是要執zhi行機器語言的程 因為開發時就支援,提供了相應的編譯,及硬體控制等,其次,執行時也是轉化成對應的程式語言。給51微控制器程式設計用的c51與c語言有什麼區別?其實區別不是太多。c語言中的所有運算子,在c51中都可以用。但是c51也有特有運算子,如sbi...

如何在51微控制器使用c語言跟組合語言

如何用keil在 baic中嵌入彙編 要在duc檔案zhi中要嵌入彙編dao的地方用 pragma a 和 pragma enda 分隔開來內 具體請查容看 keil c 手冊裡有介紹 在c檔案中要嵌入彙編的地方用 pragma a 和 pragma enda 分隔開來 要問什麼啊,是程式呢,還是哪...