當前位置:首頁 » 編程語言 » c語言怎麼做定時編程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼做定時編程

發布時間: 2023-01-28 13:53:34

1. c語言中怎麼設置計時器

#include <iostream>

#include <time.h>

using namespace std;

int main()

{

clock_t start = clock();

//do some process here

clock_t end = (clock() - start)/CLOCKS_PER_SEC;

cout<<"time comsumption is "<<end<<endl;

}

(1)c語言怎麼做定時編程擴展閱讀

使用linux的系統設置計時器

#include <sys/time.h>

int main()

{

timeval starttime,endtime;

gettimeofday(&starttime,0);

//do some process here

gettimeofday(&endtime,0);

double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;

timeuse /=1000;//除以1000則進行毫秒計時,如果除以1000000則進行秒級別計時,如果除以1則進行微妙級別計時

}

timeval的結構如下:

strut timeval

{

long tv_sec; /* 秒數 */

long tv_usec; /* 微秒數 */

};

2. 如何用C語言實現代碼定時執行

不懂你是要問整個代碼還是特定代碼段
要是定時執行一段代碼的話可以把代碼做成一個函數,在代碼執行前加個標志位,如果條件成立就執行,不成立就不執行,在定時中斷中設置標志位。
要是整個代碼就讓單片機進入睡眠和喚醒功能吧,現在很多單片機都帶有睡眠狀態

3. 介紹計數器 /定時器 程序 的編寫步驟 (C語言的)

注意:

多數C語言編譯器不支持多線程,而且ANSI C也沒有線程庫,因此C語言無法實現實際意義上的定時器(即包含觸發機制的定時器)。

回到本問題:

1 計數器:

簡單的int變數(一般為全局或相對全局)就可以實現。

2 計時器:

包含time.h,使用clock相關函數,通過運行時間差來實現計時功能。示例:
/*@*/ clock_t startstart = clock();
……
/*@*/ clock_t endend = clock();
float start2end = (float)(endend-startstart)/CLOCKS_PER_SEC;
// 這里的start2end就是時間差

3 定時器

使用系統API,比如Windows下的Sleep()函數(注意,是大寫),原型如下:
VOID Sleep(
DWORD dwMilliseconds // sleep time in milliseconds
);

4. C語言如何定時

#include <stdio.h>

main()
{
int i;
for(i=99;i>0;i--)
{
gotoxy(10,10); 用這你可以在你想的任何地方顯示。
printf(" 2空格 "); //清除上次的顯示,如要三位數就用三個空格
gotoxy(10,10);
printf("%d",i);
delay(10000);
}
getch();

}

5. 介紹計數器 /定時器 程序 的編寫步驟 (C語言的)

假設你用的晶振為12m,用p1.0口輸出周期為2ms的方波。使用定時器工作方式1.
至於計數初值的計算,授之以魚不如授之以漁!
在定時器模式下,計數器的計數脈沖來自於晶振脈沖的12分頻信號,即對機器周期進行計數。若選擇12m晶振,則定時器的計數頻率為1mhz。假設定時時間為t,機器周期為t1,即12/晶振頻率。x為定時器初值。則
x=2^n-t/t1。方式0,n=13,方式1時,n=16,方式2和方式3,n=8
自己算去吧!
#include
void
inittimer0(void)//
{
tmod
=
0x01;
th0
=
0x0fc;
//計數器初值
tl0
=
0x18;
ea
=
1;
et0
=
1;
tr0
=
1;//開啟定時器t0
}
void
main(void)
{
inittimer0();
}
void
timer0interrupt(void)
interrupt
1
{
th0
=
0x0fc;//重新賦初值
tl0
=
0x18;
p1.0=~p1.0;
//輸出方波
}

6. 如何用C語言實現精確軟體定時

在精度要求較高的情況下,如要求誤差不大於1ms時,可以利用GetTickCount()函數。該函數的返回值是DWORD型,表示以ms為單位的計算機啟動後經歷的時間間隔。下列的代碼可以實現50ms的精確定時,其誤差小於1ms。

// 起始值和中止值
DWORD dwStart, dwStop ;
dwStop = GetTickCount();

while(TRUE) {
// 上一次的中止值變成新的起始值
dwStart = dwStop ;
// 此處添加相應控制語句
do
{
dwStop = GetTickCount() ;
}while(dwStop - 50 < dwStart) ;
}

微軟公司在其多媒體Windows中提供了精確定時器的底層API支持。利用多媒體定時器可以很精確地讀出系統的當前時間,並且能在非常精確的時間間隔內完成一個事件、函數或過程的調用。利用多媒體定時器的基本功能,可以通過兩種方法實現精確定時。

1.使用timeGetTime()函數

該函數定時精度為ms級,返回從Windows啟動開始所經過的時間。由於使用該函數是通過查詢的方式進行定時控制的,所以,應該建立定時循環來進行定時事件的控制。

2. 使用timeSetEvent()函數

利用該函數可以實現周期性的函數調用。函數的參數說明如下:

uDelay:延遲時間;

uResolution:時間精度,在Windows中預設值為1ms;

lpFunction:回調函數,為用戶自定義函數,定時調用;

dwUser:用戶參數;

uFlags:標志參數;

TIME_ONESHOT:執行一次;

TIME_PERIODIC:周期性執行。

具體應用時,可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在lpFunction回調函數中(如:定時采樣、控制等),從而完成所需處理的事件。需要注意的是:任務處理的時間不能大於周期間隔時間。另外,在定時器使用完畢後,應及時調用timeKillEvent()將之釋放

對於精確度要求更高的定時操作,則應該使用QueryPerformanceFrequency()和QueryPerformanceCounter()函數。這兩個函數是系統提供的精確時間函數,並要求計算機從硬體上支持精確定時器。QueryPerformanceFrequency()函數和QueryPerformanceCounter()函數的原型如下:

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);

數據類型LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構,其具體用法根據編譯器是否支持64位而定。

在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。

7. 求教怎麼在C語言中使用定時器

簡單使用,比如初始化,回讀計數值,可以通過訪問定時器的寄存器的方式完成
如果需要定時器中斷服務,要編寫中斷服務程序,並設置中斷向量表

8. C語言編程(定時器50ms)

#include「reg52.h」  //頭文件,包含各種寄存器定義及函數庫

time0()      interrupt 1        using 0

{

    TH0=0x3C;TLO=0xB0;

    P1_0=~P1_0;

}

main()

{

      TMOD=0x01; TH0=0x3C;TLO=0xB0;

//12MHz下,50ms定時所對應的初值

      EA=1;ET0=1;TRO=1;

      while(1)

      {

        }

}

9. C語言咋做一個定時器不是那種獨立的,要那種可以在一個更大的程序在計時的.

可以用SetTime()函數

//這個是全局版本的
UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier 這個是定時器的標識
UINT uElapse, // time-out value 這個是定時值,單位毫秒
TIMERPROC lpTimerFunc // address of timer procere 這個就是到時間你需要處理的函數
);
//編寫此函數來達到關機的目的
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
static int count = 5;
count --;
// 倒計時顯示剩餘時間
...
if(count ==0)
{
//調用關機函數
...
}
}
然後就可以這么調用了
SetTimer(hWnd, 1, 1000, TimerProc);
當然也可以用Windows消息機制來處理TIME消息。