在turboc2.0中编写了精确定时1ms的程序,但是总是不正确。请高手指点一下 #include <stdio.h> #include <dos.h> #include <conio.h>
int count=0; void interrupt far New_Timer(); void interrupt(*Old_Timer)();
void init_timer(void) { Old_Timer=getvect(0x08);/*保存原中断号*/ disable(); setvect(0x08,New_Timer);/*设置新的中断向量*/ outportb(0x43,0x36);/*设定8253工作方式*/ outportb(0x40,0xa9);/*设置低8位*/ outportb(0x40,0x04);/*设置高8位*/ enable(); }
void interrupt New_Timer(void) { count++; }
void Delay_Timer(int counter) { count=0; while(count>counter) { count=0; return; } }
void restore_timer(void) { disable(); outportb(0x43,0x36);/*设定8253工作方式*/ outportb(0x40,0xff);/*设置低8位*/ outportb(0x40,0xff);/*设置高8位*/ setvect(0x08,Old_Timer);/*恢复原来的中断向量*/ enable(); }
int main(void) { int i; for(i=0;i<10;i++) { init_timer(); Delay_Timer(1000);//延时1s printf("ok"); } restore_timer(); return; }