DelayMS(300)表示希望系統(tǒng)delay 300毫秒,系統(tǒng)有自己的RTC,根據(jù)硬件的晶振(Hz)可以計算出一次振蕩大約多少耗時,這樣就能大約算出1ms需要多少次振蕩;

我們提供的服務有:成都網(wǎng)站制作、成都網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、革吉ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的革吉網(wǎng)站制作公司
簡單比喻一次振蕩需要1us,那1ms就是1000次振蕩,300ms就是300x1000次振蕩,這樣就能大概的計算出300ms delay;
這得看你的CPU運行一條指令得多久,像單片機89C51一般一條1us。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言;
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺;
二十世紀八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國國家標準局為C語言制定了一套完整的國際標準語法,稱為ANSI C,作為C語言最初的標準。
一個nop為1個指令周期,通過nop指令可以產(chǎn)生一定的延遲,但是對于快速的CPU來說效果不明顯,因此可以多寫幾個,便可以多延遲幾個時鐘(具體應該說是一個指令占用了3個時鐘脈沖);所以,一個for循環(huán)會執(zhí)行4*250個指令周期,那么總共延時4*250*ms個指令周期~~
C語言的延遲函數(shù)一般是利用無意義程序運行來控制時間從而達到延時的目的
舉個例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
這是延時x毫秒的for循環(huán)語句。
值得注意的是記得最后的;一定得記得寫。
這個跟的系統(tǒng)頻率有關(guān)系。看看你的晶振是多少。另外還跟指令集有關(guān)系。
精確的時間你可以反匯編一下看看有多少條指令,根據(jù)指令周期算算延時時間。
1、delay函數(shù)是一般自己定義的一個延時函數(shù)。
2、C語言定義延時函數(shù)主要通過無意義指令的執(zhí)行來達到延時的目的。下面給出一個經(jīng)典的延時函數(shù)。
//?定義一個延時xms毫秒的延時函數(shù)
void?delay(unsigned?int?xms)??//?xms代表需要延時的毫秒數(shù)
{
unsigned?int?x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
那樣子你的調(diào)用系統(tǒng)的API來獲得調(diào)用此函數(shù)之前的系統(tǒng)時間,還有調(diào)用此函數(shù)返回之后的系統(tǒng)時間進行比較。
#include windows.h
#include stdio.h
voidmain()
{
SYSTEMTIME sys;
GetLocalTime( sys );
int start=sys.wMilliseconds;//獲取開始時的毫秒數(shù)
//下面調(diào)用你的函數(shù)
delay(uint型變量);//這里面的參數(shù)你必須自己看著辦
GetLocalTime( sys );
int end=sys.wMilliseconds;//獲取調(diào)用delay函數(shù)之后的秒數(shù)
printf("調(diào)用delay函數(shù)消耗了%d毫秒!\n",end-start);
printf("注意:此程序只能處理1秒以內(nèi)的延遲毫秒數(shù)!");
}
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=125;y0;y--);
}
當前標題:c語言中延時函數(shù)如何計時,c語言延時語句
文章來源:http://chinadenli.net/article48/dsejjhp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、域名注冊、標簽優(yōu)化、外貿(mào)建站、電子商務、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)