c語言延時函式delay,怎麼算延時

2022-02-14 21:47:53 字數 2883 閱讀 6910

1樓:向日葵

下面是delay 函延遲函式裡執行的都是空語句,也就是說通過迴圈執行空語句來達到延遲的目的.每執行一條語句,即使是空語句都要耗費電腦一些處理時間的,就是因為這個,在延遲函式裡寫一些無關緊要的東西,用來浪費電腦處理時間,從而達到延遲目的。數原型:

原型:void delay(unsigned int ndelay){unsigned int i,j,k;

for ( i=0;i

功能:短暫延時

說明:延時msec*4毫秒所以,delay的延遲時間是和你的cpu時鐘週期相關的。

2樓:

就是用晶振頻率算cpu指令週期,再算delay迴圈中有幾條**,需要多少個指令週期。除一下可以算個大概。具體你可以結合硬體資料來算。

但是用delay函式來延遲不止和cpu指令週期有關,還和你是否使用了作業系統用了哪種作業系統有關。總之受影響的因素很多,做不到特別精確的。

3樓:做而論道

c語言是高階語言,可以執行在不同的硬體系統、及作業系統之下。

它的執行時間,沒有固定的公式,只能在系統中執行,測試出結果。

4樓:

兩個for迴圈巢狀 執行k++;

計算機運算需要一定的時間,迴圈的次數越多消耗的時間越多。

但具體的時間不一定的,每臺電腦的效能不一樣,執行速度也不同的。

5樓:匿名使用者

每條指令執行都需一定的時間(具體多少可查晶片手冊),假如 ndelay=1024的話,則這段程式要執行到ndelay=0才退出for迴圈,這段用去的時間,就相當於延時了

c語言delay延時時間怎麼算,說的詳細點謝謝

6樓:

可以呼叫庫函式來獲取前後時間差,計算出具體的延遲時間。如果這個是在嵌入式驅動裡面的,可大概地按照cpu頻率及迴圈次數來大概估算延遲,但這個延遲不太精確。

7樓:墨夷夢寒

執行for裡面的時間再乘以x就是延時時間

c語言delay函式延時計算

8樓:小夏在深圳

c語言delay函式延時計算源**如下:

#include "stdlib.h"

void delay()

time_t start,end;

start=time(null);

unchar i;

while(z--)

for(i=0;i<121;i++);

end=time(null);

printf("%f",difftime(end,start));

擴充套件資料1、對於要求精確延時時間更長,這時就要採用迴圈巢狀的方法來實現,因此,迴圈巢狀的方法常用於達到ms級的延時。

對於迴圈語句同樣可以採用for,do…while,while結構來完成,每個迴圈體內的變數仍然採用無符號字元變數。

9樓:

你 的程式有問題額。

void daly()

你可去看看微控制器的時鐘訊號產生電路中的有關

節拍:指振盪脈衝週期

狀態:振盪脈衝盡過2分頻後,就是微控制器時鐘訊號的週期,定義為狀態,一個狀態等於兩個節拍

機器週期:微控制器採用定時控制方式,有固定的機器週期,一個機器週期等於6個狀態,

機器週期=6個狀態=12個節拍

當振盪脈衝頻率為12mhz時,一個機器週期為1微秒,振盪脈衝頻率為6mhz,一個機器週期為2微秒

資料型別中unsigned char為無符號字元型值域是在0~~~255範圍裡

在上面我設的是60次的迴圈,且晶振是約在12mhz,那麼可以看出我們的算值是用60x1微秒,即可得到我們所要的延時值啊

10樓:

用keil軟體除錯一個

11樓:德繡梓

這個問題,我最近也是相當的困惑啊,希望會的朋友幫忙解答一下啊。

12樓:匿名使用者

sleep(); 可以用吧??

在c語言程式中,延時函式的時間是怎麼算的?

13樓:植子昂戶嘉

所謂的延時程式,就是讓程式進入一段無效迴圈,達到延時目的有一個延時參數列的。

下面是一個10ms延時子程式(12mhz)void

delay10ms(void)

14樓:閻吉敏郎諾

這個是和你機器的運算速度有關的

你要計算出這個函式用了多少時間就要用時間函式,我很久沒用了。

#include

"stdlib.h"

void

delay()

end=time(null);

printf("%f",difftime(end,start));

}//time_t是在標頭檔案中定義的,可能是個結構體型別裡面的成員定義了一些時間的單位,如年、月、日。在這裡呼叫這個結構體定義2個變數;

//start=time(null);

將其中一個變數賦值。它的值等於當前的系統時間//end=time(null);

在程式結束的時候再給另一個變數賦值,值等於當前的系統時間。

//difftime(end,start)函式difftime();是double型別,用來計算執行的時間,用第一個引數的時間減去第二個引數的時間,得到的值就是執行用了多少時間。單位為秒

15樓:匿名使用者

例如void delay(uint z) //3*(j+2)*i=3*(332+2)*600=601200us=601ms

c語言題目(函式呼叫),C語言題目(函式呼叫)

a宣告時形參名可以忽略也可以任意合法的變數名,但是其型別不能忽略。以上的講,可能你不好理解,我來告訴你吧 a型別必須要一樣,而且數量一定要相同,宣告形參可以寫也可以不寫 bc語言中,在宣告函式的時候其形式引數可以只是資料型別不用寫出具體的識別符號,如果要寫出具體的識別符號的話,就一定要和函式定義的識...

c語言的函式問題,c語言函式呼叫問題

可以不寫,但是要把你的自定義函式寫在主函式前面才行。就是說把z的值返回到主函式,本例中就是把z的值返回給c。不能不寫的,否則當編譯器編譯到你main函式時,由於還沒編譯到下面的max定義。所以它找不到max到底是什麼符號。一般申明都寫在函式後面的,否則,出了main外,其他函式看不到max的申明的。...

c語言函式程式設計判斷閏年,C語言函式程式設計判斷閏年

基本沒什麼問題,略微改動一點 include int fun int n int main void 你的 問題出在int fun int n 函式中的形參沒起到作用,將fun 函式中的j去掉,if語句中j換為形式引數n就可以了。這是根據你的 改的 include int fun int j int...