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

📄 s2.asm

📁 时钟程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	GOTO	L824
	RETURN

XG_HOUR	NOP
L82	BTFSC	PORTA,4
	GOTO	L81
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L81
L416	BTFSS	PORTA,4;RA4有没释放
	GOTO	L416
	CALL	DELAY_10MS
	BTFSS	PORTA,4
	GOTO	L416		


	INCF	HOUR,F
	CALL	SJXS
	MOVLW	.24
	SUBWF	HOUR,W
	BTFSS	STATUS,C
	GOTO	L81
	CLRF	HOUR
	CALL	SJXS
L81	BTFSC	PORTB,0
	GOTO	L82
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L82
	BTFSC	PORTB,0
	GOTO	L82
;	MOVF	HOUR,W
;	MOVWF	HOUR1


	RETURN

XG_MINUTE	NOP		;修改分
L92	BTFSC	PORTA,4
	GOTO	L91
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L91
L417	BTFSS	PORTA,4;RA4有没释放
	GOTO	L417
	CALL	DELAY_10MS
	BTFSS	PORTA,4
	GOTO	L417		



	INCF	MINUTE,F
	CALL	SJXS
	MOVLW	.60
	SUBWF	MINUTE,W
	BTFSS	STATUS,C
	GOTO	L91
	CLRF	MINUTE
	CALL	SJXS
L91	BTFSC	PORTB,0
	GOTO	L92
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L92
	BTFSC	PORTB,0
	GOTO	L92
	
;	MOVF	MINUTE,W
;	MOVWF	MINUTE1
	RETURN

XG_SECOND	NOP		;修改秒
L921	BTFSC	PORTA,4
	GOTO	L911
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L911
L419	BTFSS	PORTA,4;RA4有没释放
	GOTO	L419
	CALL	DELAY_10MS
	BTFSS	PORTA,4
	GOTO	L419	

	CLRF	SECOND
	CALL	SJXS
L911	BTFSC	PORTB,0
	GOTO	L921
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L921
	
	
	MOVLW	B'00000001'
	CALL	LCD_W8BIT
	MOVLW	.2
	CALL	DELAY_WMS
;	MOVF	SECOND,W
;	MOVWF	SECOND1


	RETURN
	


;*************************************************
;时间显示子程序
;*************************************************
SJXS


	MOVF	HOUR,W
	CALL	BCD
	NOP
	MOVLW	B'10000001';写位置命令
	CALL	LCD_W8BIT
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"		; :的 码
	CALL	LCD_W8BITD
	MOVF	MINUTE,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVF	SECOND,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	RETURN
	


	

	
SJXS2	MOVF	HOUR,W
	CALL	BCD
	NOP
	MOVLW	B'10000001';写位置命令
	CALL	LCD_W8BIT
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	" "		; :的 码
	CALL	LCD_W8BITD
	MOVF	MINUTE,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	" "
	CALL	LCD_W8BITD
	MOVF	SECOND,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	
	
	RETURN


;*************************************************
;日期显示子程序
;*************************************************
RQXS
	MOVLW	B'11000101'	; xian shi ri qi
	CALL	LCD_W8BIT
	MOVLW	.20
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVF	YEAR_L,W	
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	"/"
	CALL	LCD_W8BITD
	MOVF	MONTH,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	"/"
	CALL	LCD_W8BITD
	MOVF	DAY,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	
	CALL	DELAY_2S

	MOVLW	B'00000001'
	CALL	LCD_W8BIT
	MOVLW	.2
	CALL	DELAY_WMS
	CALL	DELAY_2S

	RETURN

;*************************************************
;日期显示子程序2用于修改时间屏幕刷新
;*************************************************
RQXS2

	

	MOVLW	B'11000101'	; xian shi ri qi
	CALL	LCD_W8BIT
	MOVLW	.20
	CALL	BCD
	MOVF	BCD_H,W
	
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVF	YEAR_L,W	
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	"/"
	CALL	LCD_W8BITD
	MOVF	MONTH,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	"/"
	CALL	LCD_W8BITD
	MOVF	DAY,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	


	

	RETURN


;*************************************************
;闹钟时间设置子程序
;*************************************************
NZSZ
		
	CALL	DELAY_WMS

;	MOVF	HOUR,W
;	MOVWF	N_HOUR
;
;	MOVLW	.1
;	ADDWF	MINUTE,F

;	MOVF	MINUTE,W
;	MOVWF	N_MINUTE
	CALL	NZXS2
L52	BTFSC	PORTA,4
	GOTO	L51L
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L51L
L4110	BTFSS	PORTA,4;RA4有没释放
	GOTO	L4110
	CALL	DELAY_10MS
	BTFSS	PORTA,4
	GOTO	L4110		


	INCF	N_HOUR
	CALL	NZXS2
	MOVLW	.24
	SUBWF	N_HOUR,W
	BTFSS	STATUS,C
	GOTO	L51L
	CLRF	N_HOUR
	CALL	NZXS2
L51L	BTFSC	PORTB,0
	GOTO	L52
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L52

BB1	BTFSS	PORTB,0
	GOTO	BB1
	CALL	DELAY_10MS
	BTFSS	PORTB,0
	GOTO	BB1
	


L54	BTFSC	PORTA,4
	GOTO	L53
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L53
	
L4111	BTFSS	PORTA,4;RA4有没释放
	GOTO	L4111
	CALL	DELAY_10MS
	BTFSS	PORTA,4
	GOTO	L4111	

	INCF	N_MINUTE
	CALL	NZXS2
	MOVLW	.60
	SUBWF	N_MINUTE,W
	BTFSS	STATUS,C
	GOTO	L54
	CLRF	N_MINUTE

	CALL	NZXS2
L53	BTFSC	PORTB,0
	GOTO	L54
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L54
BB0	BTFSS	PORTB,0
	GOTO	BB0
	CALL	DELAY_10MS
	BTFSS	PORTB,0
	GOTO	BB0
	MOVLW	B'00000001'
	CALL	LCD_W8BIT
	MOVLW	.2
	CALL	DELAY_WMS	


	RETURN




;*************************************************
;闹钟时间显示子程序
;*************************************************
NZXS	NOP
	
	

	MOVLW	B'10001010'
	CALL	LCD_W8BIT
	MOVLW	"R"
	CALL	LCD_W8BITD
	MOVF	N_HOUR,W		;闹钟时计数器
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVF	N_MINUTE,W	;闹钟分计数器
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	CALL	DELAY_2S
	MOVLW	B'00000001'
	CALL	LCD_W8BIT
	MOVLW	.2
	CALL	DELAY_WMS
	
	CALL	DELAY_2S
	RETURN	

;*************************************************
;闹钟时间显示子程序2
;*************************************************
NZXS2	NOP
	
	

	MOVLW	B'10001010'
	CALL	LCD_W8BIT
	MOVLW	"R"
	CALL	LCD_W8BITD
	MOVF	N_HOUR,W		;闹钟时计数器
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVF	N_MINUTE,W	;闹钟分计数器
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	
	RETURN	
;*************************************************
;计时器计数子程序
;*************************************************

;*********************************计数器功能
JSQ	




	MOVLW	B'11000001'
	CALL	LCD_W8BIT
	MOVLW	"0"
	CALL	LCD_W8BITD	;进入记时期后时的十位显示零	
	MOVLW	"0"
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVLW	"0"
	CALL	LCD_W8BITD
	MOVLW	"0"
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVLW	"0"
	CALL	LCD_W8BITD
	MOVLW	"0"
	CALL	LCD_W8BITD


	;************************88记时期键盘扫描程序
L210	BTFSC	PORTB,0
	GOTO	L210
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L210
CB0	BTFSS	PORTB,0
	GOTO	CB0
	CALL	DELAY_10MS
	BTFSS	PORTB,0
	GOTO	CB0



	
	



;**********************************8开始即使了
	
	CALL	PWM



KSJS	MOVLW	00H	;记时期寄存器清零,在此基础上累加技术
	MOVWF	HOUR_J	
	MOVWF	MINUTE_J
	MOVWF	SECOND_J
	MOVWF	MS_J
L211
;	MOVLW	B'00000001'
;	CALL	LCD_W8BIT
;	MOVLW	.2
;	CALL	DELAY_WMS
	



	MOVLW	B'11000001'	;时时刷新屏幕
	CALL	LCD_W8BIT
	;MOVLW	.20
;	CALL	DELAY_WMS

	MOVF	HOUR_J,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVF	MINUTE_J,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD
	MOVF	SECOND_J,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD
	MOVLW	":"
	CALL	LCD_W8BITD	
	MOVF	MS_J,W
	CALL	BCD
	MOVF	BCD_H,W
	CALL	LCD_W8BITD
	MOVF	BCD_L,W
	CALL	LCD_W8BITD

	CALL	LCD_W8BITD
	MOVLW	" "
	CALL	LCD_W8BITD
	MOVLW	" "
	CALL	LCD_W8BITD
	MOVLW	.80
	CALL	DELAY_WMS

	BTFSC	PORTA,4		;RA4按;下则停止刷新屏幕,技术停止
	GOTO	L211
	CALL	DELAY_10MS
	BTFSC	PORTA,4
	GOTO	L211
	CALL	PWM



RR1	BTFSS	PORTA,4
	GOTO	RR1
	CALL	DELAY_10MS
	
	
	BTFSS	PORTA,4
	GOTO	RR1

	
L212	BTFSC	PORTB,0		;退出即使器
	GOTO	L212
	CALL	DELAY_10MS
	BTFSC	PORTB,0
	GOTO	L212

	


MX1	BTFSS	PORTB,0
	GOTO	MX1
	BTFSS	PORTB,0
	GOTO	MX1


	MOVLW	B'00000001'
	CALL	LCD_W8BIT
	



	RETURN	;退出记时器


;*************************************************
;LCD 显示相关程序
;*************************************************
;====================================
LCD_CSH
	MOVLW	.15		;上电后延时15ms
	CALL DELAY_WMS
;1
	MOVLW	B'0011'
	MOVWF	R0
	CALL LCD_W4BIT	;LCD,写四位控制命令
	MOVLW	.5		;延时5ms
	CALL DELAY_WMS
;2
	MOVLW	B'0011'
	MOVWF	R0
	CALL LCD_W4BIT	;LCD,写四位控制命令
	MOVLW	.100
	CALL	DELAY_WUS;延时100us
;3
	MOVLW	B'0011'
	MOVWF	R0
	CALL LCD_W4BIT	;LCD,写四位控制命令
	MOVLW	.100
	CALL	DELAY_WUS;延时100us
;4
	MOVLW	B'0010'
	MOVWF	R0
	CALL LCD_W4BIT	;LCD,写四位数据格式命令
;5
	MOVLW	B'00101000'	;写功能设置命令,8位::4位数据格式
	MOVWF	R0
	CALL 	LCD_W8BIT	;LCD,写八位
;6
	MOVLW	B'00001100'	;发送显示控制命令
	MOVWF	R0
	CALL 	LCD_W8BIT	;LCD,写八位
;7
	MOVLW	B'00000001'	;写清除命令	
	MOVWF	R0
	CALL 	LCD_W8BIT	
	MOVLW	.2		;延时5ms
	CALL DELAY_WMS
;8
	MOVLW	B'00000110'	;写输入模式命令
	MOVWF	R0
	CALL 	LCD_W8BIT	;LCD,写八位
	RETURN


CSH
	BSF	STATUS,RP0	;BANK_1
	
	MOVLW	B'11110000'
	MOVWF	TRISA



	CLRF	TRISD	;D口0/1/2/3输出
	MOVLW	B'00000110';A口设为数字量通道
	MOVWF	ADCON1
	BCF	STATUS,RP0	;BANK_0
	RETURN
;********************************	

LCD_W4BIT		;LCD,写四位命令
	

	MOVWF	R0
	BSF	LCD_E
	NOP
	BCF	LCD_RW
	NOP
	BCF	LCD_RS
	MOVLW	0F0H
	ANDWF	PORTD,F	;低四位清0
	MOVF	R0,W
	MOVWF	PORTD
	NOP
	BCF		LCD_E	;数据有效
	RETURN
;*****************************
LCD_W8BIT		;LCD,写八位命令
	MOVWF	R0
	BSF	LCD_E
	NOP
	BCF	LCD_RW
	NOP
	BCF	LCD_RS
	MOVLW	0F0H
	ANDWF	PORTD,F	;低四位清0
	SWAPF	R0,W	;高低四位交换
	MOVWF	PORTD
	NOP
	BCF		LCD_E	;数据有效
	NOP
	MOVLW	0F0H
	ANDWF	PORTD,F	;低四位清0
	MOVLW	0FH
	ANDWF	R0,W	;R0高四位清0
	MOVWF	PORTD
	BSF		LCD_E	
	NOP
	BCF		LCD_E	;数据有效	
	RETURN
;====================================	
LCD_W8BITD		;LCD,写八位数据
	
	MOVWF	R0
	BSF	LCD_E
	NOP
	BCF	LCD_RW
	NOP
	BSF	LCD_RS
	MOVLW	0F0H
	ANDWF	PORTD,F	;低四位清0
	SWAPF	R0,W	;高低四位交换
	MOVWF	PORTD
	NOP
	BCF		LCD_E	;数据有效
	NOP
	MOVLW	0F0H
	ANDWF	PORTD,F	;低四位清0
	MOVLW	0FH
	ANDWF	R0,W	;R0高四位清0
	MOVWF	PORTD
	BSF		LCD_E	
	NOP
	BCF		LCD_E	;数据有效	
	RETURN

;*************************************************
;TMR1初始化子程序
;*************************************************

TMR1_CSH
		BSF	STATUS,RP0		;TIMR1初始化程序段
		BSF	TRISC,0

		BSF		PIE1,TMR1IE
		BCF		STATUS,RP0
		MOVLW	B'00001010'
		MOVWF	T1CON
		MOVLW	B'11000000'
		MOVWF	INTCON
		MOVLW	.0		;TMRI低8位
		MOVWF	TMR1L
		MOVLW	.230	;
		MOVWF	TMR1H
		BSF		T1CON,TMR1ON	;开TMR1
		RETURN
;*************************************************
;PWM  闹钟铃声子程序
;*************************************************
PWM		BSF	STATUS,RP0
	MOVLW	00H
	MOVWF	TRISC
	MOVLW	0F3H
	MOVWF	PR2
	BCF	STATUS,RP0
	

	BSF		BZ0,0



	MOVLW	.48
	MOVWF	CCPR1L
	MOVLW	3CH
	MOVWF	CCP1CON
	CLRF	T2CON
	;BTFSC	PORTB,0
	BSF	T2CON,TMR2ON
	MOVLW	.20
	CALL	DELAY_WMS
	BCF	T2CON,TMR2ON
;
;	NOR10	
	
;	GOTO	L38
	;CALL	DELAY_10MS


;	BTFSC	PORTB,0

JR10	RETURN



;*************************************************
;延时子程序
;*************************************************

;延时Wms子程序
DELAY_WMS
	
;		RETURN
;

	MOVWF	R1	;外循环
MSS	MOVLW	.249
	MOVWF	R2	;内循环
	NOP	
	DECFSZ	R2,F
	GOTO	$-2
	DECFSZ	R1,F
	GOTO	MSS
	RETURN	
;*************
;延时Wus子程序
DELAY_WUS	


;		RETURN

	MOVWF	R1
	DECFSZ	R1
	GOTO $-1
	RETURN
;*****************
;延时10MS

DELAY_10MS				;*********10MS延迟
	
;	RETURN



	MOVLW	.10
	MOVWF	R1	;外循环
MSS1	MOVLW	.249
	MOVWF	R2	;内循环
	NOP	
	DECFSZ	R2,F
	GOTO	$-2
	DECFSZ	R1,F
	GOTO	MSS1
	RETURN	
;******************
;1秒延迟
DELAY_1S

;		RETURN

	MOVLW	06H
	MOVWF	W1
LOOP1	MOVLW	0EBH	
	MOVWF	W2
LOOP2
	MOVLW	0ECH
	MOVWF	W3
LOOP3
	DECFSZ	W3
	GOTO	LOOP3	


	DECFSZ	W2
	GOTO	LOOP2
	DECFSZ	W1
	GOTO	LOOP1
	RETURN	
	
;*****************
;延时2S
DELAY_2S

;	RETURN

	MOVLW	01H	
	MOVWF	W10
LOOP10	MOVLW	06H
	MOVWF	W11
LOOP11	MOVLW	0EBH	
	MOVWF	W21
LOOP12
	MOVLW	0ECH
	MOVWF	W31
LOOP13
	DECFSZ	W31
	GOTO	LOOP13	
	DECFSZ	W2
	GOTO	LOOP12
	DECFSZ	W11
	GOTO	LOOP11
	DECFSZ	W10
	GOTO	LOOP10
	RETURN	
	

;*******************
;延是5S

DELAY_5S


;	RETURN

	MOVLW	04H	
	MOVWF	W10
LOOP101	MOVLW	06H
	MOVWF	W11
LOOP111	MOVLW	0EBH	
	MOVWF	W21
LOOP121
	MOVLW	0ECH
	MOVWF	W31
LOOP131
	DECFSZ	W31
	GOTO	LOOP131	
	DECFSZ	W2
	GOTO	LOOP121
	DECFSZ	W11
	GOTO	LOOP111
	DECFSZ	W10
	GOTO	LOOP101
	RETURN	

;*************************************************
;BCD转换程序
;*************************************************

BCD				CLRF	BW
		CLRF	SW
		CLRF	GW


		MOVWF	BCD_R0
L10		MOVLW	.100
			SUBWF	BCD_R0,F
			BTFSC	STATUS,C
			GOTO	B1
			GOTO	B2
B1			INCF	BW,F
			GOTO	L10
B2			NOP
			MOVLW	.100
			ADDWF	BCD_R0
L2			MOVLW	.10
			SUBWF	BCD_R0,F
			BTFSC	STATUS,C
			GOTO	M11
			GOTO	M12
M11			INCF	SW,F
			GOTO	L2
M12			NOP
			MOVLW	.10
			ADDWF	BCD_R0,F
			MOVF	BCD_R0,W
			MOVWF	GW
			MOVLW	.48
			ADDWF	BW
			ADDWF	SW
			ADDWF	GW	
			MOVF	SW,W
			MOVWF	BCD_H
			MOVF	GW,W
			MOVWF	BCD_L

	RETURN
	
	



	END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -