??
字號:
PC中的定時電路有三個通道,通道3用于發聲,通道1用于控制系統內部的時鐘。大家都十分清楚用DOS的"TIME"命令可以觀察并修改系統內部的一個時鐘,這個時鐘之所以能連續運轉主要依靠定時器的通道1。
通道1的工作方式和通道3一樣,但是系統啟動時設定其發出一個頻率固定為18.2Hz的信號,這個信號直接送到系統中的"中斷控制器"。每一個"Hz"都產生一個硬件中斷,一般稱這個硬中斷為"IRQ0",對應的中斷號是08H。也就是說,當計算機啟動后,我們的機器看上去十分平靜,但實際上CPU非常忙碌。在定時器的控制下每隔55毫秒就要執行一個08H號中斷,這個中斷的主要工作就是連續地計數。
在內存"0040H:006CH"處有四字節的存儲空間專門用于保存計數值,CPU每執行一次08H中斷,這四字節的計數值就被加1,不難算出這個計數值每增加1091后時間恰好過了1分鐘,每增加65454后時間恰好過了1小時。系統內部的時鐘之所以能準確走時,靠得就是08H中斷和這四字節的計數值。因此我們要想精確的定時,必須依靠時鐘計數值才行。
程序使用了一個新的中斷--INT 1AH的0號功能取得時鐘計數值。1AH中斷的用法如下所示:
功能號:0
用 途:讀取時鐘計數值
參 數:AH=0
調 用:INT 1AH
返 回:CX = 計數值高16位
DX = 計數值低16位
AL = 0 表示未過24小時
AL <> 0 表示已過24小時
★每隔1000/18.2ms就要執行一個08H號中斷
假設計算延遲時間為 T ms,則要執行 n 次中斷
【n = T*18.2/1000】
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -