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