⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blind_clock.asm

📁 盲人时钟
💻 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 + -