timer.c

来自「DOS下的有8254时钟的程序」· C语言 代码 · 共 58 行

C
58
字号
#include "dos.h"
#include "bios.h"
#include "stdio.h"
#include "time.h"
#include "stdlib.h"

void interrupt (far *old)();
void interrupt  far handle_timer();
unsigned long timer_i=0,timer_a=0;
unsigned long count = 0;

void T8254_SetTimer(int number)
{
	outportb(0x43,0x36);
	outportb(0x40,0x9A);
	outportb(0x40,0x2E);
	timer_i=0;
	old=getvect(0x08);
	setvect(0x08,handle_timer);
	while(timer_i<number*100);
	printf("%d\n",count);
//	printf("timer_i=%u\n",timer_i);
//	printf("timer_t=%u\n",timer_t);
	setvect(0x08,old);
	outportb(0x43,0x36);
	outportb(0x40,0);
	outportb(0x40,0);
}

void interrupt far handle_timer()
{
	timer_i++;
	timer_a++;
//	puts("c");
	count++;
	if(timer_a>=5494)
		{
			timer_a=timer_a-5494;
			old();
		}
	else
		outportb(0x20,0x20);
			
}	

void main(int agrc,char *agrv[])
{
	int number=0;
	time_t time_start,time_end;
	if(agrc==2)		number=atol(agrv[1]);
	else			number=1;
	time(&time_start);
	printf("time_start:%d\n",time_start);
	T8254_SetTimer(number);
	time(&time_end);
	printf("\ntime_end:%d\n",time_end);
	printf("%d",time_end-time_start);	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?