『壹』 c語言延遲一秒的函數這么寫
1)首先要知道你用的是什麼C語言?2)其次要知道你的編程環境:是在DOS下編程?還是在Windows下編程?還是為嵌入式系統編程?3)第三步才是找對應的C語言環境下有沒有延時函數?4)如果是單線程程序,沒有可用函數庫,就編個循環,在開始時去取系統時間(時間以毫秒錶示),然後在每次循環中取當前時間,如果前後時間差達到1秒,則退出循環,這個精度一般不高。如果更准確一點,通過時間中斷器,在時間達到1秒後產生中斷,這個方法精度好一些。『貳』 C語言延時函數
C語言的延遲函數一般是利用無意義程序運行來控制時間從而達到延時的目的
舉個例子:
for(i=0;i<x;i++)
for(j=0;j<120;j++);
這是延時x毫秒的for循環語句。
值得注意的是記得最後的;一定得記得寫。
『叄』 C語言延時程序編程
在單片機中,要延時程序盡量准確,可以:
-延時循環盡量簡單,盡量少開變數比如:
Delay(unsigned int uDelay) { while ( uDelay-- ); }
-在主程序中用一個GPIO測試,如:
SetGPIOHigh(); Delay(1000); SetGPIOLOW();
-用示波器測量該GPIO波形及頻率
-調整Delay函數的調用值,可以用變數,在調試時實時修改變數值,找到延時1毫秒的值,把Delay函數改名為Delay1ms,之後調用這個函數完成精確延時
-其他的延時函數也可以類似上述方法完成,但記住在調試和實際使用時要用同樣的CPU主頻。
-最精確的還是用定時器中斷程序計時
『肆』 C語言編程我要將輸出的內容延長2秒,或者3秒,怎麼做呢
#include <碼空windows.h>
...
printf("hello\n");
Sleep(2000); /遲笑瞎* 單位毫秒升頌 */
『伍』 用C語言編程如何計算延時時間
那樣子你的調用系統的API來獲得調用此函數之前的系統時間,還有調用此函數返回之後的系統時間進行比較。
#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;x>0;x--)
for(y=125;y>0;y--);
}
『陸』 C語言編程中的延時
您好 這個延時函數很不穩定的,沒有固定的時間
如果您使用tc 您可以用sleep(微秒)來延時
使用vc的話有5種常用方式:
方式一:VC中的WM_TIMER消息映射能進行簡單的時間控制。首先調用函數SetTimer()設置定時間隔,如SetTimer(0,200,NULL)即為設置200ms的時間間隔。然後在應用程序中增加定時響應函數 OnTimer(),並在該函數中添加響應的處理語句,用來完成到達定時時間的操作。這種定時方法非常簡單,可以實現一定的定時功能,但其定時功能如同Sleep()函數的延時功能一樣,精度非常低,最小計時精度僅為30ms,CPU佔用低,且定時器消息在多任務操作系統中的優先順序很低,不能得到及時響應,往往不能滿足實時控制環境下的應用。只可以用來實現諸如點陣圖的動態顯示等對定時精度要求不高的情況。如示例工程中的Timer1。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式二:VC中使用sleep()函數實現延時,它的單位是ms,如延時2秒,用sleep(2000)。精度非常低,最小計時精度僅為30ms,用sleep函數的不利處在於延時期間不能處理其他的消息,如果時間太長,就好象死機一樣,CPU佔用率非常高,只能用於要求不高的延時程序中。如示例工程中的Timer2。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式三:利用COleDateTime類和COleDateTimeSpan類結合WINDOWS的消息處理過程來實現秒級延時。如示例工程中的Timer3和Timer3_1。以下是實現2秒的延時代碼:
COleDateTime start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time;
while(end_time.GetTotalSeconds()< end_time =" COleDateTime::GetCurrentTime()-start_time;">
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式四:在精度要求較高的情況下,VC中可以利用GetTickCount()函數,該函數的返回值是 DWORD型,表示以ms為單位的計算機啟動後經歷的時間間隔。精度比WM_TIMER消息映射高,在較短的定時中其計時誤差為15ms,在較長的定時中其計時誤差較低,如果定時時間太長,就好象死機一樣,CPU佔用率非常高,只能用於要求不高的延時程序中。如示例工程中的Timer4和Timer4_1。下列代碼可以實現50ms的精確定時:
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <50);
為使GetTickCount()函數在延時或定時期間能處理其他的消息,可以把代碼改為:
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <50);
雖然這樣可以降低CPU的佔有率,並在延時或定時期間也能處理其他的消息,但降低了延時或定時精度。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
方式五:與 GetTickCount()函數類似的多媒體定時器函數DWORD timeGetTime(void),該函數定時精度為ms級,返回從Windows啟動開始經過的毫秒數。微軟公司在其多媒體Windows中提供了精確定時器的底層API持,利用多媒體定時器可以很精確地讀出系統的當前時間,並且能在非常精確的時間間隔內完成一個事件、函數或過程的調用。不同之處在於調用DWORD timeGetTime(void) 函數之前必須將 Winmm.lib 和 Mmsystem.h 添加到工程中,否則在編譯時提示DWORD timeGetTime(void)函數未定義。由於使用該函數是通過查詢的方式進行定時控制的,所以,應該建立定時循環來進行定時事件的控制。如示例工程中的Timer5和Timer5_1。
『柒』 c語言定時器怎麼定時兩秒
將itimerval結構的成員itinterval和成員itvalue均賦值為2秒即可。在C語言中,alarm函數、setitimer函數,這兩種定時方式都滲啟薯是通過信號來通知定時到期的,可以通過將itimerval結構的旁賣成員itinterval和成員itvalue均賦值為2秒即可。C語言是一門面向過程、抽象化的通用程序叢者設計語言,廣泛應用於底層開發,C語言能以簡易的方式編譯、處理低級存儲器。