Page 94 -
P. 94

MOVC  A,@A+DPTR            ;載入 DPTR 所指位址之資料至累積器 A 中
           INC   DPTR                 ;儲存 Timer1 計頻 16 位元之低 8 位元
           MOV   TL1,A                ;載入 DPTR 所指位址之資料至累積器 A 中
           MOV   Tone_L,A             ;啟動 Timer1 計時
           MOV   A,#0
           MOVC  A,@A+DPTR            ;停止 Timer1 計時
           INC   DPTR                 ;停止 Timer1 中斷
           CJNE  R6,#0,$
           SETB  TR1
LOOP2: CJNE      R6,#19,$
           CJNE  R6,#0,$
           DJNZ  A,LOOP2
           CLR   TR1
           JMP   LOOP1
OVER: CLR        ET1
           SETB  P3.0
           RET

;
; Timer0 中斷服務程式, 用於計數時間
;

TIMER0_DRV:      TR0                  ;停止計時
           CLR   TL0,#<(65536-46079)  ;重新儲存 16 位元之低 8 位元
           MOV   TH0,#>(65536-46079)  ;重新儲存 16 位元之高 8 位元
           MOV   TR0                  ;再啟動計時
           SETB  P3.7
           CPL   R6                   ;整點報時聲音設定
           INC   R6,#20,PASS
           CJNE  R6,#0
           MOV   R0
           INC   R0,#60,PASS
           CJNE  R0,#0
           MOV   R1
           INC   R1,#60,PASS
           CJNE  R1,#0
           MOV   MusicF,#0
           MOV
   89   90   91   92   93   94   95   96   97   98   99