Dos下TC,C语言时钟中断例程
/* timmer.h */
/* ---------------------------------------------------- */
/*| 本头文件提供了简单的方法来获得时钟中断, |*/
/*| 你不需要看懂其中得代码,只要会调用有关的函数即可 |*/
/* ---------------------------------------------------- */
/*
使用方法:
调用void settimmer(void (*ontimmer)())函数打开时间中断,
参数void (*ontimmer)()是一个函数名(正确来说是函数指针),
该函数名对应的函数将会每隔1秒被系统调用一次。
在程序不需要时间中断时,紧记调用void killtimmer()释放系统资源,
否则很容易出现错误。
下面是一个例子,在 Dos7.0/Win98 TC2.0下调试通过,
测试时请注意设置好路径,否则TC将找不到timmer.h
-------------------------------------------------------
# include
# include "timmer.h"
void trm()
{
static int i=0;
printf(" %d sencond has letf\n",++i);
}
main()
{
clrscr();
printf("timmer test begin - press any key to stop timmer\n\n");
settimmer(trm); //设置了这个后trm()函数会每隔1秒被系统执行一次
getch();
killtimmer(); //紧记:程序退出前必须调用这个函数,否则死机。
printf("\n\ntimmer test stop - press any key to exit");
getch();
}
-----------------------------------------------------------------
*/
#include
#include
void interrupt (*oldproc)();
void (*timmer)();
void interrupt newproc()
{
static char i=0;
if ((++i)>=18)
{
i-=18;
(*timmer)();
}
(*oldproc)();
}
void settimmer(void (*ontimmer)())
{
extern void interrupt (*oldproc)();
timmer=ontimmer;
oldproc=getvect(0x1c);
disable();
setvect(0x1c,newproc);
enable();
}
void killtimmer()
{
disable();
setvect(0x1c,oldproc);
enable;
}
/* ---------------------------------------------------- */
/*| 本头文件提供了简单的方法来获得时钟中断, |*/
/*| 你不需要看懂其中得代码,只要会调用有关的函数即可 |*/
/* ---------------------------------------------------- */
/*
使用方法:
调用void settimmer(void (*ontimmer)())函数打开时间中断,
参数void (*ontimmer)()是一个函数名(正确来说是函数指针),
该函数名对应的函数将会每隔1秒被系统调用一次。
在程序不需要时间中断时,紧记调用void killtimmer()释放系统资源,
否则很容易出现错误。
下面是一个例子,在 Dos7.0/Win98 TC2.0下调试通过,
测试时请注意设置好路径,否则TC将找不到timmer.h
-------------------------------------------------------
# include
# include "timmer.h"
void trm()
{
static int i=0;
printf(" %d sencond has letf\n",++i);
}
main()
{
clrscr();
printf("timmer test begin - press any key to stop timmer\n\n");
settimmer(trm); //设置了这个后trm()函数会每隔1秒被系统执行一次
getch();
killtimmer(); //紧记:程序退出前必须调用这个函数,否则死机。
printf("\n\ntimmer test stop - press any key to exit");
getch();
}
-----------------------------------------------------------------
*/
#include
#include
void interrupt (*oldproc)();
void (*timmer)();
void interrupt newproc()
{
static char i=0;
if ((++i)>=18)
{
i-=18;
(*timmer)();
}
(*oldproc)();
}
void settimmer(void (*ontimmer)())
{
extern void interrupt (*oldproc)();
timmer=ontimmer;
oldproc=getvect(0x1c);
disable();
setvect(0x1c,newproc);
enable();
}
void killtimmer()
{
disable();
setvect(0x1c,oldproc);
enable;
}
标签: programming
0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页