定时中断问题
unsigned long Counter;
unsigned CounterInt8,fpI8;
void SetTimer(void interrupt(*Rout)(…),unsigned freq)
{//设置新频率的定时中断
int ICnt;
fpI8=(freq+9)/18;//新旧频率的倍数 //请问这个(freq+9)/18公式是怎么来的
asm cli
ICnt=1193180/freq;
outportb(0x43,0x36);
outportb(0x40,ICnt & 255);
outportb(0x40,ICnt》8);
setvect(OldTimerInt,getvect(
8));//保存旧定时中断
setvect(8,rout);//置新的定时中断
sam sti;
}
void RestoreTimer()
{
asm cli
outportb(0x43,0x36);
outportb(0x40,0);
outportb(0x40,0);
setvect(8,getvect(OldTimerInt));//恢复原定时中断
asm sti
}
void interrupt NewTimer(…)
{//新定时中断
REGPACK R;
Counter++;//给应用程序提供新频率的计数
if(--CounterInt8=0) //请问 整个过程没有设置CounterInt8初始值 怎么就可以使用啊
{
intr(OldTimerInt,&R);//按原频率走动时钟
CounterInt8=fpI8;//用新旧频率的倍数分频
}
else outportb(0x20,0x20);//退出中断
}