#includetime.h
永登網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
#includestdio.h
void main()
{
clock_t start,finish;
double durtion=0;
printf("計時開始\n");
start=clock();
while(1-durtion0.00001)
{
finish=clock();
durtion=(double)(finish-start);
}
printf("1ms計時完畢\n");
}
原理:兩個時間差值是1ms就立即跳出while循環(huán),C語言中時間分度值是ms
delay函數(shù)是一般自己定義的一個延時函數(shù)。
C語言定義延時函數(shù)主要通過無意義指令的執(zhí)行來達(dá)到延時的目的。
關(guān)于單片機(jī)C語言的精確延時,網(wǎng)上很多都是大約給出延時值沒有準(zhǔn)確那值是多少,也就沒有達(dá)到精確高的要求,而本函數(shù)克服了以上缺點(diǎn),能夠精確計數(shù)出要延時值且精確達(dá)到1us,本舉例所用CPU為STC12C5412系列12倍速的單片機(jī),只要修改一下參數(shù)值其它系例單片機(jī)也通用,適用范圍寬。
ms=1時,第一個for循環(huán)進(jìn)入,然后在第二個for循環(huán)中執(zhí)行100次
再回到第一個for循環(huán)中進(jìn)行第二次循環(huán).
就這樣
你可以進(jìn)入編輯器,添加斷點(diǎn),自行查看代碼執(zhí)行過程
如果是PC平臺,用VC開發(fā),實(shí)現(xiàn)一毫秒延時可以用以下程序:
#include?stdio.h
#include?windows.h?//Sleep函數(shù)對應(yīng)的庫
int?main()
{
int?i;
for?(i=0;?i11;?i++)
{
printf("%d\n",?i);
Sleep(1);//?1?單位是毫秒,實(shí)現(xiàn)等待一毫秒
}
return?0;
}
如果是嵌入式平臺,單片機(jī)、dsp等
可以采用芯片的定時器實(shí)現(xiàn)精確延時,采用定時器中斷,這是就需要根據(jù)晶振周期來精確設(shè)定定時器初值,然后延時到了就產(chǎn)生中斷