编译平台 WIN-TC (Turbo C2.0 为内核)
功能:
使用 DOS 的 1CH 中断。这个中断系统没有使用,是开放的,大约18ms中断一次。
可以提供给程序实用。调用的过程很简单,看下面的例子:
#include "stdio.h" #include <dos.h>
/* 定义一个中断变量用来保存就的中断入口函数 */ /* 因为是入口函数,所以这里定义了函数指针。 */ void interrupt (*oldtimer)(void);
/* 习惯了,中断使用的变量全部用volatile限定防止优化 */ int volatile TimerCnt; int volatile flag;
/* 新的中断函数,用这个来代替旧的那个 */ void interrupt newtimer(void) { (*oldtimer)(); /* 执行之前的功能,不能随便破坏人家的程序 */ TimerCnt++; /* 计数器加1 */ flag = 1; /* 设置标志,我中断了!! */ }
/* 主函数 */ void main(int argc,char *argv[]) { TimerCnt = 1; /* 初始化 */ oldtimer = getvect(0x1c); /* getvect函数是用来得到中断变量的,这里是 */ /* 我们需要 1ch 的中断(也就是时钟中断) */ setvect(0x1c,newtimer); /* 将我们的处理函数写到中断变量上面 */ /* 那么中断的时候系统就执行我们的函数 */
flag = 0; while(1) { if (flag) /* 如果中断了,那么 */ { printf("int:%d\n",TimerCnt); /* 打印计数器的值 */ flag = 0; /* 清除标志 */
}
if (TimerCnt>200) /* 算够200就退出 */ break; } setvect(0x1c,oldtimer); /* 恢复旧的中断变量 */
printf("Exit normally\n"); getch(); }
|
阅读(2190) | 评论(0) | 转发(0) |