- 论坛徽章:
- 0
|
可行.....
/*
* Set the clock to HZ Hz, we already have a valid
* vector now:
*/
//0x34->binary,方式2,读/写指示位先读/写低字节,后读/写高字节,计数器选择,计数器0
/*
A9A8A7A6A5A4A3A2A1A0 功能 基本地址
0 0 0 1 0 × ×× 0 0 选中计数器0 40H
0 0 0 1 0 × ×× 0 1 选中计数器1 41H
0 0 0 1 0 × ×× 1 0 选中计数器2 42H
0 0 0 1 0 × ×× 1 1 选中控制寄存器 43H
(其他) × ×× ×× 芯片禁止
(说明:8253有32个地址,除基本地址外,其余为影像地址)
*/
outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */
outb_p(LATCH & 0xff , 0x40); /* LSB */
outb(LATCH >> 8 , 0x40); /* MSB */
* LATCH is used in the interval timer and ftape setup. */
//怎么计算的??
//要求一秒钟计时器中断100(HZ)次,因为加了HZ/2,略微少一点点
//latch 门插销
//latch=(1193180+50)/100=1193230/100=11932.3=0x2e9c
#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
//接收主机板上的一个石英震荡器所产生的时脉,此震荡器每秒震荡 1193180 次
//或者说每秒1193180次中断
#define CLOCK_TICK_RATE 1193180 /* Underlying HZ 在下面的, 根本的, 潜在的, [商]优先的*/ |
|