亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

vc6.0中c語言控制臺程序中的定時技術(定時器)

2020-01-26 15:32:31
字體:
來源:轉載
供稿:網友

打開main.c編譯運行,注意,打開main.c之后一定要將win32timer.c也加進工程中一起編譯,下面有圖。
在開發單片機、ARM以及Linux系統的程序時,因為硬件定時中斷的存在我們很方便構造出定時ISR,然而在VC6.0中,我們如何寫一個定時程序呢?
其實,就是timeSetEvent()這個函數的調用。這個函數的解釋見MSDN。詳細原理,請看我代碼中的注釋,我寫得很詳細了。

main.c

復制代碼 代碼如下:

//======================
// main.c
//======================
#include <stdio.h>
#include "win32timer.h"  // UserTimerSet(uDelay,UserFun)

int cnt = 0;

void myISR_Called_Per_1000ms(void);

int main(void)
{
 /* 每1000ms調用一次myISR_Called_Per_1000ms */
 UserTimerSet ( 1000, myISR_Called_Per_1000ms ) ;

 while (cnt<10);

 return 0; 
}

void myISR_Called_Per_1000ms(void)

 printf("The Program has run %ds/n",cnt++);
}

win32timer.h

復制代碼 代碼如下:

/*
 * 使用說明:
 *
 *     1. 用戶程序需要 #include "win32timer.h" ;
 *     2. 用戶需要將 win32timer.c 添加至根目錄,或添加至工程;
 *    3. 用戶程序直接調用UserTimerSet(uDelay,UserFun); 即可,
 *        其中,uDelay為定時調用的定時周期,單位為毫秒(ms),
 *        UserFun為用戶被調函數void ISR(void)的函數名ISR。
 *     4. 可以同時使用多個timeSetEvent,每個timeSetEvent都可以
 *        返回定時器編號,詳細見MSDN關于timeSetEvent的說明。
 */


//=======================
// win32timer.h
//=======================
#ifndef __WIN32TIMER_H__
#define __WIN32TIMER_H__

void UserTimerSet ( unsigned int uDelay, void (*UserFun)(void) ) ;

#endif  // @ #ifndef __WIN32TIMER_H__

win32timer.c

復制代碼 代碼如下:

//=======================
// win32timer.c
//=======================

#include <windows.h>
#include "win32timer.h"

#pragma comment(lib,"winmm.lib") //導入winmm.lib多媒體庫

/* 全局變量 */
HANDLE mainhandle;     //主線程句柄
CONTEXT Context;     //主線程切換上下文
static void (*TimerCallFun)(void);  //聲明用戶調用函數指針

/* 函數聲明 */
static void __stdcall TimerISR(unsigned int uTimerID, unsigned int uMsg, unsigned long dwUser, unsigned long dw1, unsigned long dw2);

//======================================================================================
// 函數功能:用戶需要調用的定時器設置(初始化)函數
// 入口參數:uDelay:定時器定時時長,單位為ms
//     void (*UserFun)(void):指向用戶函數 void fun (void) 的函數指針
// 返 回 值:無
//======================================================================================
void UserTimerSet ( unsigned int uDelay, void (*UserFun)(void) )
{
 HANDLE cp,ct;

 TimerCallFun = UserFun;     //得到用戶被定時調用的函數的函數指針
 Context.ContextFlags = CONTEXT_CONTROL;
 cp = GetCurrentProcess(); //得到當前進程句柄
 ct = GetCurrentThread(); //得到當前線程偽句柄
 DuplicateHandle( cp, ct, cp, &mainhandle, 0, TRUE, 2 ); //偽句柄轉換,得到線程真句柄

 /*模擬設置定時器中斷,開啟一個定時器線程*/
 timeSetEvent( uDelay, 0, TimerISR, 0, TIME_PERIODIC );
 /*如果需要取消定時器,則可以調用timeKillEvent()函數,詳見MSDN*/
}

//======================================================================================
// 函數功能:timeSetEvent需要定時調用的函數
// 入口參數:unsigned int uTimerID, unsigned int uMsg, unsigned long dwUser, unsigned long dw1, unsigned long dw2,詳見MSDN
// 返 回 值:無
//======================================================================================
static void __stdcall TimerISR(unsigned int uTimerID, unsigned int uMsg, unsigned long dwUser, unsigned long dw1, unsigned long dw2)
{
 SuspendThread(mainhandle); //中止主線程的運行,模擬中斷產生.但沒有保存寄存器
 GetThreadContext(mainhandle, &Context); //得到主線程上下文,為切換任務做準備
 //===========================================================================================
 (*TimerCallFun)();    //或者TimerCallFun(); ―――― 用戶自定義實現的中斷調用
 //===========================================================================================
 ResumeThread(mainhandle); //模擬中斷返回,主線程得以繼續執行
}



工程圖

運行結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品视频| 国产精品久久久久久久久久| 亚洲成av人乱码色午夜| 日本成人免费在线| 国产精品高潮在线| 久久男人的天堂| 伊人伊成久久人综合网站| 9.1国产丝袜在线观看| 成人免费高清完整版在线观看| 亚洲日本成人网| 久久精品这里热有精品| 色哟哟入口国产精品| 久久理论片午夜琪琪电影网| 国产精品h片在线播放| 日韩在线国产精品| 欧美日韩另类视频| 国产精品情侣自拍| 91久久国产精品91久久性色| 日韩欧美精品网址| 精品中文字幕在线2019| 国产精品情侣自拍| 国产精品久久999| 日韩电影免费观看在线观看| 中文在线资源观看视频网站免费不卡| 欧美精品在线观看| 亚洲第一av网| 日韩精品极品视频免费观看| 亚洲欧美一区二区三区情侣bbw| 成人久久久久久久| 久久视频在线免费观看| 88国产精品欧美一区二区三区| 最近2019中文字幕第三页视频| 亚洲精品成人久久电影| 中文精品99久久国产香蕉| 韩国19禁主播vip福利视频| 精品一区二区电影| 久久久久久久久久久久av| 亚洲最大的网站| 亚洲精品www久久久| 亚洲视频一区二区| 中文字幕综合在线| 欧美激情欧美激情在线五月| 中文字幕在线看视频国产欧美在线看完整| 亚洲福利视频二区| 91精品久久久久久久| 日韩中文字幕在线视频| 日韩在线精品视频| 国内精久久久久久久久久人| 成人做爽爽免费视频| 国内精品小视频| 亚洲精品乱码久久久久久金桔影视| 国自产精品手机在线观看视频| 国产精品扒开腿做爽爽爽男男| 日韩av免费在线播放| 情事1991在线| 在线免费观看羞羞视频一区二区| 91a在线视频| 欧美劲爆第一页| 精品爽片免费看久久| 91免费国产网站| 日韩中文字幕精品视频| 国产一区二区三区毛片| 国产综合在线观看视频| 日韩在线观看你懂的| 最近中文字幕mv在线一区二区三区四区| 色噜噜久久综合伊人一本| 欧美激情久久久久| 日韩av免费在线观看| 38少妇精品导航| 国产va免费精品高清在线观看| 91系列在线播放| 欧美老少做受xxxx高潮| 日本国产欧美一区二区三区| 欧美性猛交xxxx富婆| 日韩黄在线观看| 成人久久一区二区三区| 91免费视频网站| 4438全国亚洲精品在线观看视频| 在线视频欧美日韩精品| 国产精品无av码在线观看| 国产精品一区二区女厕厕| 欧美孕妇孕交黑巨大网站| 日本久久久久久| 国产精品久久久久久久久久东京| 国产在线观看不卡| 国产欧美va欧美va香蕉在| 精品亚洲永久免费精品| 狠狠色噜噜狠狠狠狠97| 深夜福利日韩在线看| 国产亚洲人成网站在线观看| 91精品国产91久久久久久| 一级做a爰片久久毛片美女图片| 欧美整片在线观看| 亚洲国产精品高清久久久| 久久免费国产视频| 亚洲女性裸体视频| 免费91在线视频| 久久亚洲精品网站| 亚洲福利影片在线| 欧美激情一区二区三级高清视频| 国产精品免费视频xxxx| 51精品国产黑色丝袜高跟鞋| 日韩av中文字幕在线免费观看| www.日韩不卡电影av| 日韩一区二区精品视频| 国产精品99久久99久久久二8| 欧美一区第一页| 国产人妖伪娘一区91| 国产亚洲精品久久久久久| 动漫精品一区二区| 亚洲国产精品热久久| 亚洲天堂av在线免费| 日韩小视频在线观看| 国产91露脸中文字幕在线| 久久综合久中文字幕青草| 欧美激情视频一区二区| 一本一本久久a久久精品牛牛影视| 久久精品国产亚洲精品| 欧美激情久久久久久| 欧美成人合集magnet| 久久影院免费观看| 欧美亚洲成人xxx| 亚洲乱码一区av黑人高潮| 九九九久久久久久| 精品自在线视频| 成人国产精品久久久| 日韩av在线一区二区| 97成人在线视频| 国产精品扒开腿做| 97视频在线观看成人| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美成人在线| 68精品国产免费久久久久久婷婷| 清纯唯美日韩制服另类| 中文字幕亚洲欧美在线| 青青草原成人在线视频| 欧美日韩国产一区中文午夜| 中文字幕亚洲欧美一区二区三区| 久久这里有精品| 亚洲精品有码在线| 性色av一区二区三区| 中国人与牲禽动交精品| 中文国产成人精品| 热久久99这里有精品| 国产精品久久久久久久久久新婚| 精品国产老师黑色丝袜高跟鞋| 欧美精品福利在线| 国产主播喷水一区二区| 亚洲视频在线播放| 78色国产精品| 成人免费在线视频网址| 91欧美精品成人综合在线观看| 成人激情在线播放| 久久久久久久久网站| 日本久久久久久久久| 亚洲精品一二区| 色综合久久88| 精品视频中文字幕| 夜夜嗨av一区二区三区四区| 久久久中文字幕| 亚洲最大福利视频网站| 亚洲美女福利视频网站| 亚洲精品成人av| 亚洲成人黄色在线观看|