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)
   66   67   68   69   70   71   72   73   74   75   76