Page 89 -
P. 89

中斷應用實例圖
      另外,以做為目前秒、分、時值之輸入設定,高四位元選擇個位或十位,低四位元
即為該個位或十位之數值。
;
; 本程式為計時器並整點聲音報時, 並以累進方式閃爍數入設定目前時間
; 以 Timer0 中斷服務方式驅動計時, 並以 Timer1 中斷服務方式驅動聲音計頻,
; P0 到 P2 分別為秒分時的輸出, P3 為秒分時的設定輸入.
;
; 應用指令:
; 位址定義指令 EQU, 用以定義變數對應之位址
; 位元設定指令 SETB 用以設定位元為 1
; 比較跳躍指令 CJNE 若暫存器與參數值比較不相等實則跳躍
;
; 動作: 先輸入目前之時 P2 分 P1 秒 P0, 秒分時以十進制二進位法累進顯示,
; 當整點時會有聲音報時但時間顯示會有暫時停頓.
; 說明: 喇叭連接於 P3.0
;

MusicF EQU      70H      ;整點報時記憶體位址宣告
Tone_L EQU      71H      ;聲音頻率記憶體位址宣告
Tone_H EQU      72H
Sec EQU         73H      ;設定目前時間之記憶體位址宣告
Min EQU         74H
Hr EQU          75H

ORG 00H                  ;Timer0 中斷向量位址
JMP START                ;中斷服務程式執行
ORG 0BH                  ;Timer1 中斷向量位址
JMP TIMER0_DRV           ;中斷服務程式執行
ORG 1BH
JMP TIMER1_DRV
ORG 30H

START: MOV      SP,#30H  ;將堆疊指標重新指向
           MOV  R0,#0    ;時 R2 分 R1 秒 R0 初值設定為 0
           MOV  Sec,R0   ;並存入 Hr, Min, Sec 對應之位址中
           MOV  R1,#0
           MOV  Min,R1
   84   85   86   87   88   89   90   91   92   93   94