Page 71 -
P. 71
器開始作動,若 13 個位元由全部為〝1〞變為全部為〝0〞時,則會將 Timer 溢位旗
號 TFx 設定為 1。結合 IE 暫存器(中斷致能暫存器,Interrupt Enable Register)致能
Timer0(或 Timer1),則 8051 單晶片會擷取 TF0(或 TF1)的資料,以偵測是否要產生中
斷。當 8051 單晶片執行中斷副程式時會自動將 TF0(或 TF1)清除為 0。將在下一章介
紹 8051 單晶片中斷服務。
Timer 工作模式 0 時,13 位元計時/計數值最大為 8192(2 的 13 次方),因此,THx
的值應為計時/計數值除以 32 的商,TLx 的值則為計時/計數值除以 32 的餘數。若計
時/計數值為 5000 時,即
TL0 = # (8192-5000)×MOD×32
TH0 = # (8192-5000)/32
則程式可寫為:
MOV TL0,# (8192-5000)×MOD×32
MOV TH0,# (8192-5000)/32
2. 模式 1:(M1=0,M0=1,16 位元計時/計數器)
模式 0 與模式 1 的動作幾乎相同,兩者之間的差別在於 Timer 工作在模式 1 時是
16 位元的計時/計數器。模式 1 計時/計數最大值為 65536(2 的 16 次方),因此,THx
的值應為計時/計數值除以 256 的商,TLx 的值則為計時/計數值除以 256 的餘數。若
計時/計數值為 5000 時,即
TH0 = # (65536-5000)/256
TL0 = # (65536-5000)×MOD×256
則程式可寫為:
MOV TH0,# (65536-5000)/256
MOV TL0,# (65536-5000)×MOD×256
或寫成:
MOV TH0,# > (65536-5000)
MOV TL0,# < (65536-5000)
其中,〝<〞符號是通知編譯器將後面的值取 16 位元的低位元組,而〝>〞符號
是通知編譯器將後面的值取 16 位元的高位元組。
3. 模式 2:(M1=1,M0=0,8 位元自動重新載入計時器)
將 Timer 設定成模式 2 時,會形成一個 8 位元自動重新載入計時/計數器。當計
時/計數完畢後會產生 TFx 溢位旗號設定為 1,並會將 THx 的值自動載入 TLx 中,因
此,THx 的值須事先由軟體設定。此模式適合用在需要固定時間的計時。
模式 2 計時/計數最大值為 256(2 的 8 次方),因此計時/計數值須同時存放於 THx
與 TLx 中。若計時/計數值為 200 時,即
TH0 = # (256-200)