📄 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 + -