阅读:3734回复:6
我不能理解8254时钟(IRQ0)和实时时钟(IRQ8)有什么不同?
大虾!
我不能理解8254时钟(IRQ0)和实时时钟(IRQ8)有什么不同? 都是55MS中断一次,修改8254记数初值是不是都改变? IRQ0是不是BIOS时钟,开机时读RTC(MC146818A)的值,IRQ8是系统时钟,读取BIOS时钟通过8254中断来维持。不知是不是这样? IRQ0能不能修改它的中断服务程序? |
|
沙发#
发布于:2004-01-18 21:22
简单说:8254是源,IRQ8是果。
|
|
|
板凳#
发布于:2004-01-19 09:33
两个东东不一样.
8254时钟(IRQ0)是由系统晶振触发,在系统上电以后才开始工作,主要被OS作定时、计数器使用,也是编程人员可使用的硬件定时接口。 实时时钟(IRQ8)采用独立晶振、独立供电,永不间断的运行,因为它与OS相对独立,OS下的编程很少使用到它。 IRQ0是每55MS中断一次,而IRQ8则高很多,因为用得是自己的晶振嘛!当然这两个器件的中断频率都是可编程修改的,但修改8254记数初值是不会影响到IRQ8的。 两者可以说是毫不相干,只是都会被OS时钟用到而已。RTC(IRQ8)负责更新BIOS时钟,8254(IRQ0)负责更新OS时钟,而OS时钟的初值是从BIOS时钟里获得的,当然也有的OS是直接从RTC里读到的。 只要搞清楚这四个时钟的区别就好理解了。 IRQ0的中断服务程序(INT8)是可以修改的,但要注意在你的服务例程结束前应该恢复原中断向量,应为INT8还有一些其他的事情要做,免致系统混乱。 |
|
地板#
发布于:2004-01-19 19:20
changjt说的不错,在《WINDOWS设备驱动程序开发实务》中有一段讲述了8号实时中断的用法,简要记录如下:
时钟计时频率为1.024kHZ,所以每1024次中断为1秒(系统缺省) 访问寄存器A、B、C、D分别位于CMOS中偏移 为A到D的寄存器 和中断有关的是B和C寄存器 B寄存器的D6为周期中断允许,D5为报警中断允许,D4为更新结束中断允许 C寄存器的D7为中断请求标志,D6、D5、D4分别代表为周期中断、报警中断和更新结束中断标志 不知对你是否有用 |
|
地下室#
发布于:2004-04-12 12:57
请教一下,如果使用IRQ8是否要使能一下,具体语句如何写呢?谢谢!
|
|
5楼#
发布于:2004-05-18 10:08
也想问一下win2000下如何使用中断8啊.
请各位大哥多多帮忙啊! |
|
6楼#
发布于:2004-05-18 10:09
急!!!
|
|