那樣子你的調用系統(tǒng)的API來獲得調用此函數之前的系統(tǒng)時間,還有調用此函數返回之后的系統(tǒng)時間進行比較。
成都創(chuàng)新互聯(lián)公司服務項目包括武宣網站建設、武宣網站制作、武宣網頁制作以及武宣網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,武宣網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到武宣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
#include windows.h
#include stdio.h
voidmain()
{
SYSTEMTIME sys;
GetLocalTime( sys );
int start=sys.wMilliseconds;//獲取開始時的毫秒數
//下面調用你的函數
delay(uint型變量);//這里面的參數你必須自己看著辦
GetLocalTime( sys );
int end=sys.wMilliseconds;//獲取調用delay函數之后的秒數
printf("調用delay函數消耗了%d毫秒!\n",end-start);
printf("注意:此程序只能處理1秒以內的延遲毫秒數!");
}
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=125;y0;y--);
}
你
的程序有問題額。
void
daly()
{unsigned
char
j;
for(j=60;j〈=0;j--)
}
你可去看看單片機的時鐘信號產生電路中的有關
節(jié)拍:指振蕩脈沖周期
狀態(tài):振蕩脈沖盡過2分頻后,就是單片機時鐘信號的周期,定義為狀態(tài),一個狀態(tài)等于兩個節(jié)拍
機器周期:單片機采用定時控制方式,有固定的機器周期,一個機器周期等于6個狀態(tài),
機器周期=6個狀態(tài)=12個節(jié)拍
當振蕩脈沖頻率為12mhz時,一個機器周期為1微秒,振蕩脈沖頻率為6mhz,一個機器周期為2微秒
數據類型中unsigned
char為無符號字符型值域是在0~~~255范圍里
在上面我設的是60次的循環(huán),且晶振是約在12mhz,那么可以看出我們的算值是用60x1微秒,即可得到我們所要的延時值啊
C語言delay函數延時計算源代碼如下:
#include "stdlib.h"
void delay()
{
time_t start,end;
start=time(null);
unchar i;
while(z--)
{
for(i=0;ilt;121;i++);
}
end=time(null);
printf("%f",difftime(end,start));
}
擴展資料
1、對于要求精確延時時間更長,這時就要采用循環(huán)嵌套的方法來實現(xiàn),因此,循環(huán)嵌套的方法常用于達到ms級的延時。
對于循環(huán)語句同樣可以采用for,do…while,while結構來完成,每個循環(huán)體內的變量仍然采用無符號字符變量。
C語言的延遲函數一般是利用無意義程序運行來控制時間從而達到延時的目的
舉個例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
這是延時x毫秒的for循環(huán)語句。
值得注意的是記得最后的;一定得記得寫。
DelayMS(300)表示希望系統(tǒng)delay 300毫秒,系統(tǒng)有自己的RTC,根據硬件的晶振(Hz)可以計算出一次振蕩大約多少耗時,這樣就能大約算出1ms需要多少次振蕩;
簡單比喻一次振蕩需要1us,那1ms就是1000次振蕩,300ms就是300x1000次振蕩,這樣就能大概的計算出300ms delay;
這得看你的CPU運行一條指令得多久,像單片機89C51一般一條1us。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言;
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺;
二十世紀八十年代,為了避免各開發(fā)廠商用的C語言語法產生差異,由美國國家標準局為C語言制定了一套完整的國際標準語法,稱為ANSI C,作為C語言最初的標準。