c語言延時(shí)函數(shù)delay,怎么算延時(shí)?? c語言延時(shí)函數(shù)delay,怎么算延時(shí)??
原型:
void Delay(unsigned int nDelay)
{
unsigned int i,j,k;
for ( i=0;i<nDelay;i++ )
for ( j=0;j<6144;j++ )
k++;
}
用法:#include <system.h>
功能:短暫延時(shí)
說明:延時(shí)msec*4毫秒所以,delay的延遲時(shí)間是和你的cpu時(shí)鐘周期相關(guān)的。
就是用晶振頻率算cpu指令周期,再算Delay循環(huán)中有幾條代碼,需要多少個(gè)指令周期。除一下可以算個(gè)大概。具體你可以結(jié)合硬件資料來算。
但是用Delay函數(shù)來延遲不止和CPU指令周期有關(guān),還和你是否使用了操作系統(tǒng)用了哪種操作系統(tǒng)有關(guān)。總之受影響的因素很多,做不到特別精確的。
C語言是高級(jí)語言,可以運(yùn)行在不同的硬件系統(tǒng)、及操作系統(tǒng)之下。
它的運(yùn)行時(shí)間,沒有固定的公式,只能在系統(tǒng)中運(yùn)行,測(cè)試出結(jié)果。
兩個(gè)for循環(huán)嵌套 執(zhí)行k++;
計(jì)算機(jī)運(yùn)算需要一定的時(shí)間,循環(huán)的次數(shù)越多消耗的時(shí)間越多。
但具體的時(shí)間不一定的,每臺(tái)電腦的性能不一樣,運(yùn)行速度也不同的。
每條指令執(zhí)行都需一定的時(shí)間(具體多少可查芯片手冊(cè)),假如 nDelay=1024的話,則這段程序要執(zhí)行到nDelay=0才退出FOR循環(huán),這段用去的時(shí)間,就相當(dāng)于延時(shí)了
51單片機(jī)C語言中delay函數(shù)是怎么定義和使用的
下面,我們來探討一個(gè)經(jīng)典的延時(shí)函數(shù)的實(shí)現(xiàn)方式。這個(gè)函數(shù)的目的是根據(jù)給定的毫秒數(shù)來產(chǎn)生相應(yīng)的延遲。具體實(shí)現(xiàn)如下:\/\/ 定義一個(gè)延時(shí)xms毫秒的延時(shí)函數(shù) void delay(unsigned int xms) \/\/ xms代表需要延時(shí)的毫秒數(shù) { unsigned int x, y;for(x = xms; x > 0; x--)for(y = 110; y > 0; ...
stm32中Delay()函數(shù)延時(shí)的時(shí)間是怎么計(jì)算的?
)和毫秒級(jí)delay_ms()。1.普通延時(shí)法這個(gè)比較簡(jiǎn)單,讓單片機(jī)做一些無關(guān)緊要的工作來打發(fā)時(shí)間,經(jīng)常用循環(huán)來實(shí)現(xiàn),不過要做的比較精準(zhǔn)還是要下一番功夫。下面的代碼是在網(wǎng)上搜到的,經(jīng)測(cè)試延時(shí)比較精準(zhǔn)。\/\/粗延時(shí)函數(shù),微秒 void delay_us(u16 time){ u16 i=0;while(time--){ i=10; \/\/自己定義...
單片機(jī) 匯編語言有關(guān)延時(shí)函數(shù)時(shí)間的計(jì)算
你理解上有一個(gè)誤區(qū),不是簡(jiǎn)單的2*2*2*50*100*100=4000000=4秒,主要在后兩句上。拆分看一下(大意,沒有太精確的算):1、DJNZ R7,$ :?jiǎn)尉鋱?zhí)行時(shí)間2us,100次就是2*100us,這個(gè)循環(huán)完成的時(shí)長(zhǎng)是:200us 2、DJNZ R6,DELAY2 :此層每循環(huán)1次,實(shí)際時(shí)長(zhǎng)為200us+2us,所以這一層...
C語言 delay啥意思?
delay是延時(shí)函數(shù),delay(2000)表示延遲2000ms,即2s。
c語言中,delay的意思
delay 就是個(gè)延時(shí)函數(shù),看名字延時(shí)單位是 ms 就是讓電機(jī) motor(r,f,40)這個(gè)狀態(tài)下 800ms
請(qǐng)求高手告訴我這個(gè)延時(shí)函數(shù)的精確延時(shí)時(shí)間
如果你輸入delay(0)會(huì)立刻返回 如果你輸入delay(1)會(huì)變成死循環(huán)!正確寫法是:void delay(unsigned int i){ unsigned int j = i; while(j--); } 如果你輸入delay(10000),則延時(shí)時(shí)間是10000 * p,其中p = 1\/11,059,200 秒 那么delay(1萬)就相當(dāng)與延時(shí)0.009秒 ...
delay函數(shù)怎么使用來延長(zhǎng)時(shí)間?
函數(shù)名: delay 功 能: 將程序的執(zhí)行暫停一段時(shí)間(毫秒)用 法: void delay(unsigned milliseconds);程序例:\/* Emits a 440-Hz tone for 500 milliseconds *\/ include<dos.h> int main(void){ sound(440);delay(500);nosound();return 0;} ...
52單片機(jī)C語言中Delay是什么意思怎么用
在52單片機(jī)的C語言編程中,`Delay`通常指的是一個(gè)延時(shí)函數(shù),它的作用是讓程序暫停執(zhí)行一段時(shí)間。這個(gè)函數(shù)的實(shí)現(xiàn)方式可能因不同的開發(fā)環(huán)境和需求而有所不同,但基本原理是相同的,即通過某種方式讓單片機(jī)的CPU等待一段時(shí)間。`Delay`函數(shù)的實(shí)現(xiàn)可以基于多種方法,例如循環(huán)等待、定時(shí)器中斷或者直接操作硬件...
delay-100ms延時(shí)函數(shù)是如何延時(shí)的?煩請(qǐng)逐行注釋一下,特別是return 1和r...
return 1是當(dāng)前的延時(shí)還沒有結(jié)束, return 0 是延時(shí)完成 延時(shí)的最小間隔是TIME1_UP_IRQHandler的間隔時(shí)間 ,如果是100ms, 每調(diào)用一次就會(huì)將Delaycount減去1,就是1個(gè)Delaycount就會(huì)產(chǎn)生一個(gè)100ms的延時(shí),所以 uint8_t Delay_100ms( uint32_t interval ){ if( Delaycount != 0 )return 1 ; \/...
51單片機(jī)C語言中delay函數(shù)是怎么定義和使用的?
定義一個(gè)延時(shí)xms毫秒的延時(shí)函數(shù) void delay(unsigned int xms) \/\/ xms代表需要延時(shí)的毫秒數(shù) { unsigned int x,y;for(x=xms;x》0;x--)for(y=110;y》0;y--);} 使用:void Delay10us(uchar Ms){ uchar data i;for(;Ms》0;Ms--)for(i=26;i》0;i--);} i=[(延時(shí)值...
相關(guān)評(píng)說:
江寧區(qū)滾子: ______ 首先,這是非常低級(jí)的延時(shí)程序,低效且不準(zhǔn)確. 延時(shí)程序一般常見的有兩種: 1、計(jì)算延時(shí).進(jìn)行一些無意義的運(yùn)算,使得程序暫時(shí)停止在某一位置.通常通過循環(huán)實(shí)現(xiàn). 2、事實(shí)上,c中的windows.h庫中有一個(gè)Sleep函數(shù),Sleep(x)的意思是暫停x毫秒.誤差一般在1%以內(nèi).
江寧區(qū)滾子: ______ 9e24是科學(xué)計(jì)數(shù)法,即9X10^24; delay()就是延遲,時(shí)間單位是毫秒,不過好像不同的電腦時(shí)間是有差別的,不準(zhǔn)確的……這個(gè)數(shù)字是不是太大了.
江寧區(qū)滾子: ______ return 0; printf("n"); _sleep(1000); printf("Begin to sleep 2 seconds!\n".h> int main(void) { printf("n"); _sleep(3000); printf("Begin to sleep 4 seconds;Begin to sleep 1 seconds!\!\n"延時(shí)么? sleep可以用 #include printf("Begin to sleep 3 seconds!\!\n");); _sleep(4000);I am back; #include
江寧區(qū)滾子: ______ 你用的是TC那就太方便了!delay(2000);就是延時(shí)2000ms,delay(30);就是延遲30ms……這個(gè)函數(shù)與主頻無關(guān)!
江寧區(qū)滾子: ______ 1:原理:僅僅執(zhí)行一些,沒有實(shí)質(zhì)性影響的所謂“無意義指令”,比如做比大小啊,做某個(gè)int的自加運(yùn)算啊之類的 2:兩重for的作用:簡(jiǎn)單的說,就像高中數(shù)學(xué)中的“乘法原理”一樣,這樣可以很輕易的迅速增加上述“無意義指令”的數(shù)目 3...
江寧區(qū)滾子: ______ 這是個(gè)延時(shí)子程序,延時(shí)1000個(gè)時(shí)鐘周期,至于到底延時(shí)多長(zhǎng)時(shí)間,要取決于單片機(jī)的晶振頻率.
江寧區(qū)滾子: ______ MS VC++可以用MFC的Sleep函數(shù),參數(shù)是毫秒.delay函數(shù)要自己寫,編譯器里沒有.#include <time.h> // 頭文件 time_t start_time, cur_time; // 變量聲明 time(&start_time); do { time(&cur_time); } while((cur_time - start_time) < 3); 上面的 3 是 ...
江寧區(qū)滾子: ______ 你 的程序有問題額. void daly() {unsigned char j; for(j=60;j〈=0;j--) } 你可去看看單片機(jī)的時(shí)鐘信號(hào)產(chǎn)生電路中的有關(guān) 節(jié)拍:指振蕩脈沖周期 狀態(tài):振蕩脈沖盡過2分頻后,就是單片機(jī)時(shí)鐘信號(hào)的周期,定義為狀態(tài),一個(gè)狀態(tài)等于兩個(gè)節(jié)拍 機(jī)器...
江寧區(qū)滾子: ______ sleep(1) 讓cpu延時(shí)1s
江寧區(qū)滾子: ______ 1.一個(gè)最簡(jiǎn)單易用的時(shí)鐘程序,調(diào)用系統(tǒng)處理器時(shí)間,實(shí)現(xiàn)年月日,星期的輸出#include <iostream.h>#include <time.h>#include <windows.h> void main() { time_t t; while(1) //實(shí)現(xiàn)循環(huán),不斷調(diào)用系統(tǒng)時(shí)間 { time(&t); cout<<"Today's date and ...