69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#define VK_ESC 0x11b
#define TIMER 0x1c
int TimerCounter=0;
void interrupt (*oldhandler)();
void interrupt newhandler()
{
/* increase the global counter */
TimerCounter++;
/* call the old routine */
oldhandler();
}
void SetTimer(void interrupt (*IntProc)())
{
oldhandler=getvect(TIMER);
disable();
setvect(TIMER,IntProc);
enable();
}
void KillTimer()
{
disable();
setvect(TIMER,oldhandler);
enable();
}
void main(void)
{
int key,time=0;
SetTimer(newhandler);
for (;;)
{
if (bioskey(1))
{
key=bioskey(0);
if (key==VK_ESC)
{
printf("User cancel!\n");
break;
}
}
if (TimerCounter>18)
{
TimerCounter=0;
time++;
printf("%d\n",time);
if (time==10)
{
printf("Program terminated normally!\n");
break;
}
}
}
KillTimer();
}