?? blind_clock.asm
字號:
;盲人用電子鐘源程序
;晶振:4MHz
;作者:江蘇南通 吳漢清 Email: ntwhq@tom.com
#INCLUDE "P12F629.INC"
W_TEMP EQU 20H
ST_TEMP EQU 21H
TEMP EQU 22H
M EQU 23H ; 分寄存器
T EQU 24H ; 十分寄存器
H EQU 25H ; 時寄存器
I EQU 26H
J EQU 27H
X EQU 28H
Y EQU 29H
N EQU 2AH
ORG 000H
NOP
GOTO MAIN
ORG 004H
TMR1SERV ;定時中斷子程序
MOVWF W_TEMP
MOVF STATUS,0
MOVWF ST_TEMP
BCF PIR1,0
MOVLW 0DCH ;定時時間0.5S
MOVWF TMR1L
MOVLW 0BH
MOVWF TMR1H
DECFSZ I,1
GOTO JUMP
MOVLW 78H
MOVWF I
INCF M,1 ;每中斷125次時間增加1分鐘
MOVF M,0
SUBLW 09H
BTFSC STATUS,C;超過10分鐘,跳一步
GOTO JUMP
CLRF M ;分位清零
INCF T,1 ;十分位加1
MOVF T,0
SUBLW 05H
BTFSC STATUS,C;超過60分鐘,跳一步
GOTO JUMP
CLRF T ;十分位清零
INCF H,1 ;小時位加1
MOVF H,0
SUBLW 0BH
BTFSC STATUS,C;超過12小時,跳一步
GOTO JUMP
CLRF H ;小時位清零
GOTO JUMP
JUMP MOVF ST_TEMP,0
MOVWF STATUS
MOVF W_TEMP,0
RETFIE
MAIN ;主程序
CLRF M ;初始化
CLRF H
CLRF T
MOVLW 78H
MOVWF I
BSF STATUS,RP0
MOVLW 0EH ;GP1、GP2、GP3作輸入,GP0作輸出
MOVWF TRISIO
MOVLW 07H ;允許GPIO上拉,選擇內部時鐘
MOVWF OPTION_REG
BSF PIE1,0
BCF STATUS,RP0
MOVLW 07H ;禁止使用比較器
MOVWF CMCON
MOVLW 34H
MOVWF T1CON ;預分頻器設為"1:8"
MOVLW 0C0H ;開TIMER1定時中斷
MOVWF INTCON
MOVLW 0DCH ;定時時間0.5S
MOVWF TMR1L
MOVLW 0BH
MOVWF TMR1H
BSF T1CON,0 ;啟動TMR1開始計數
BCF GPIO,GP0
LOOPM BTFSC GPIO,GP1 ;分位按鍵掃描
GOTO LOOPT
CALL DELAY01S
BTFSC GPIO,GP1
GOTO LOOPT
CLRF J
LOOPM_1 CALL DELAY01S
INCF J,1
MOVF J,0
SUBLW 14H
BTFSC STATUS,C
GOTO LOOPM_2
INCF M,1
MOVF M,0
SUBLW 09H
BTFSS STATUS,C
CLRF M
MOVLW 01H
MOVWF TEMP
CALL SPEAKER
GOTO LOOPM
LOOPM_2 BTFSS GPIO,GP1
GOTO LOOPM_1
MOVF M,0
MOVWF TEMP
CALL SPEAKER
LOOPT BTFSC GPIO,GP2 ;十分位按鍵掃描
GOTO LOOPH
CALL DELAY01S
BTFSC GPIO,GP2
GOTO LOOPH
CLRF J
LOOPT_1 CALL DELAY01S
INCF J,1
MOVF J,0
SUBLW 14H
BTFSC STATUS,C
GOTO LOOPT_2
INCF T,1
MOVF T,0
SUBLW 05H
BTFSS STATUS,C
CLRF T
MOVLW 01H
MOVWF TEMP
CALL SPEAKER
GOTO LOOPT
LOOPT_2 BTFSS GPIO,GP2
GOTO LOOPT_1
MOVF T,0
MOVWF TEMP
CALL SPEAKER
LOOPH BTFSC GPIO,GP3 ;時位按鍵掃描
GOTO LOOPM
CALL DELAY01S
BTFSC GPIO,GP3
GOTO LOOPM
CLRF J
LOOPH_1 CALL DELAY01S
INCF J,1
MOVF J,0
SUBLW 14H
BTFSC STATUS,C
GOTO LOOPH_2
INCF H,1
MOVF H,0
SUBLW 0BH
BTFSS STATUS,C
CLRF H
MOVLW 01H
MOVWF TEMP
CALL SPEAKER
GOTO LOOPH
LOOPH_2 BTFSS GPIO,GP3
GOTO LOOPH_1
MOVF H,0
MOVWF TEMP
CALL SPEAKER
GOTO LOOPM
SPEAKER ;發聲子程序
INCF TEMP,1
S1 DECFSZ TEMP,1
GOTO S2
GOTO S3
S2 BSF GPIO,GP0
CALL DELAY025S
BCF GPIO,GP0
CALL DELAY025S
GOTO S1
S3 RETURN
DELAY01S ;0.1s延時子程序
MOVLW 84H
MOVWF X
D01_1 MOVLW 0FBH
MOVWF Y
D01_2 DECFSZ Y,1
GOTO D01_2
DECFSZ X,1
GOTO D01_1
RETURN
DELAY025S ;0.5s延時子程序
MOVLW 05H
MOVWF N
D025_1 MOVLW 42H
MOVWF X
D025_2 MOVLW 0FBH
MOVWF Y
D025_3 DECFSZ Y,1
GOTO D025_3
DECFSZ X,1
GOTO D025_2
DECFSZ N,1
GOTO D025_1
RETURN
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -