谁知道dos下的实时钟中断是如何使用的???(200分!!!)(200分)

  • 主题发起人 主题发起人 flycat
  • 开始时间 开始时间
F

flycat

Unregistered / Unconfirmed
GUEST, unregistred user!
dos下的实时钟中断:IRQ8 ,中断向量号:70,
请高手指点,用c 语言如何得到1ms的定时中断??
有一本书上说:实时时钟中断电路有两个中断源,其中一个是每隔976.5625us(1/1024hz)
的周期中断。。。。但是,微机启动后,周期中断是被禁止的。
提供了一种用系统ROM-BIOS的15H号中断调用(INT 15H)的86H号子功能实现短时间延时。
有人知道用c语言怎么实现吗???
 
呵呵,老皇历了.还记得一点.
用int 8,先写一个自己的中断处理程序,然后替换掉系统的int8的入口地址,退出程序的时候
记得再换回来就行了.
但精度好象不够,int8每秒执行18.2次.
 
是实时时钟!!用8253就不麻烦各位了。
 
可以实现的,我以前做过,太久了,记得好象是用微软当时出的多媒体SDK里的东西,可以做高精度的定时器,我
看看能不能翻出来。
 
通过操作8253,可以改变INT8每秒的中断次数。
不过DOS下的东东太久没用了,暂时找不到怎么做的代码了:-)
 
to:axcom 谁告诉你改变8253可以改变IRQ8的中断次数????!!!!
IRQ8用到的积存器是
CX和DX,而C语言中INPORTB和OUTPORTB好象只能访问AX。
谁知道怎么访问这两个积存器。
难道就真的没人能解决这个问题????
我实在想不通!!!!!!!!
DOS都没玩熟,搞WIN????
 
axcom: 通过操作8253,可以改变INT8每秒的中断次数。
----是可行的, 详细的资料可以看(微机原理)中相关的部分,
flycat好象不熟汇编语言, 出了那么多感叹号?
 
各位高手,说明白一点好不好??
IBMpc上有三个定时器(8235),第一个定时器确实如大家所说每秒执行18.2次,而且
可以通过编程的方法改变中断次数。11.93MHZ/65536(计数器最大值0xffff,入口地址:
不说了)。你知道对应的中断是多少吗?没错是INT8(向量号08H),也就是定时器时钟中断,
IRQ0。我的问题是实时钟中断IRQ8(向量号70H)。其他请看我前面的问题。
 
别着急,我找到了,不过没有源码了,好在当时还写了篇小文章,明天扫描一下。
 
to flycat: 你既不懂汇编,也不会用C,不知能做什么啊????!!!!
 
楼主,我搞错了,以前我是在WIN31下用BC3.1编的,用到了mmsystem.dll里的东西,修改的就是INT8。如有兴趣,
可以发给你,DOS下如何实现,你自己参考一下吧,
其实WINDOWS下完全可以实现1ms精度的定时器,为什么还要DOS呢。
 
后退
顶部