📄 1.asm
字号:
MOV R0 ,#TIMEBUF
MOV R1 ,#02H
LCALL WR_PCF8563
RET
;************************************
;闹钟设置子程序
;************************************
NAOZHONG_1:
MOV R2,#10H
NAOZHONG_11:
MOV CLOCK, #03H
MOV R0 ,#CLOCK
MOV R1 ,#0DH
LCALL WR_PCF8563
LCALL QUANLING
LCALL KEY
JNB ACC.1,NZMINSZ
DJNZ R2,NAOZHONG_11
LJMP REREAD
;*******************************************
;闹钟分钟的设置子程序
;*******************************************
NZMINSZ:
CLR EA
MOV R4,#10H
LCALL KEY
NZMINSZ_:
MOV LEDBUF1 ,#14H ;闹钟分钟的设置?
MOV LEDBUF2, #14H
LCALL DISPNUMBER
LCALL DELAY
MOV R7 ,TIMEBUF+7
LCALL KEY1
JNB ACC.1, MIN_1
JNB ACC.3,NZHOURSZ
JB ACC.0 ,NZMINSZ1
LCALL INC_NZMINSZ
MOV TIMEBUF+7,A
NZMINSZ1:
MOV R0, #TIMEBUF+7
MOV R1,#09H
LCALL WR_PCF8563
LCALL QUANLING
DJNZ R4 ,NZMINSZ_
AJMP REREAD
INC_NZMINSZ:
MOV R4,#10H
MOV A ,R7
ADD A,#01H
DA A
MOV R7,A
SUBB A,#60H
JC MINNEXT
MOV R7,#00H
MINNEXT:
MOV A, R7
RET
MIN_1: LCALL KEY
MOV CNTRL1, #02H
MOV R0 ,#CNTRL1
MOV R1 ,#01H
LCALL WR_PCF8563
LJMP REREAD
;****************************************
;闹钟时的设置子程序
;****************************************
NZHOURSZ:
MOV R4,#10H
LCALL KEY
NZHOURSZ_:
MOV LEDBUF3,#14H ;闹钟时的设置?
MOV LEDBUF4,#14H
LCALL DISPNUMBER
LCALL DELAY
MOV R7 ,TIMEBUF+8
LCALL KEY1
JNB ACC.1, HOUR_1
JNB ACC.3,NZDATSZ
JB ACC.0 ,NZHOURSZ1
LCALL INC_NZHOURSZ
MOV TIMEBUF+8,A
NZHOURSZ1:
MOV R0, #TIMEBUF+8
MOV R1,#0AH
LCALL WR_PCF8563
LCALL QUANLING
DJNZ R4 ,NZHOURSZ_
AJMP REREAD
INC_NZHOURSZ:
MOV R4,#10H
MOV A ,R7
ADD A,#01H
DA A
MOV R7,A
SUBB A,#24H
JC HOURNEXT
MOV R7,#00H
HOURNEXT:
MOV A, R7
RET
HOUR_1:LCALL KEY
MOV CNTRL1, #02H
MOV R0 ,#CNTRL1
MOV R1 ,#01H
LCALL WR_PCF8563
LJMP REREAD
;*******************************************
;闹钟天的设置子程序
;*******************************************
NZDATSZ:
MOV R4,#10H
LCALL KEY
NZDATSZ_:
MOV LEDBUF5,14H ;闹钟天的设置?
MOV LEDBUF6,14H
LCALL DISPNUMBER
LCALL DELAY
MOV R7 ,TIMEBUF+9
LCALL KEY1
JNB ACC.1, DAT_1
JNB ACC.3,NZMINSZ11
JB ACC.0 ,NZDATSZ1
LCALL INC_NZDATSZ
MOV TIMEBUF+9,A
NZDATSZ1:
MOV R0, #TIMEBUF+9
MOV R1,#0BH
LCALL WR_PCF8563
LCALL QUANLING
DJNZ R4 ,NZDATSZ_
AJMP REREAD
INC_NZDATSZ:
MOV R4,#10H
MOV A ,R7
ADD A,#01H
DA A
MOV R7,A
SUBB A,#32H
JC DATNEXT
MOV R7,#00H
DATNEXT:
MOV A, R7
RET
NZMINSZ11:
LCALL KEY
LJMP NZMINSZ
DAT_1: LCALL KEY
MOV CNTRL1, #02H
MOV R0 ,#CNTRL1
MOV R1 ,#01H
LCALL WR_PCF8563
LJMP REREAD
;************延时程序*******************
;延时程序
;***************************************
DL10MS:
MOV R5, #100
DELAY1: MOV R6, #100
DJNZ R6, $
DJNZ R5, DELAY1
RET
;***********显示年月日子程序*************
;显示年月日子程序
;****************************************
DISP_NUM:
PUSH 02H
MOV R0,#TIMEBUF ;指向读出数据缓冲区首地址
LCALL RD_PCF8563 ;读时钟、日期数据
MOV A,TIMEBUF ;秒单元
ANL A,#7FH ;屏蔽数据无关位
MOV TIMEBUF,A
MOV A,TIMEBUF+1 ;分单元
ANL A,#7FH
MOV TIMEBUF+1,A
MOV A,TIMEBUF+2 ;小时
ANL A,#3FH
MOV TIMEBUF+2,A
MOV A,TIMEBUF+3 ;天
ANL A,#3FH
MOV TIMEBUF+3,A
MOV A,TIMEBUF+4 ;星期
ANL A,#07H
MOV TIMEBUF+4,A
MOV A,TIMEBUF+5 ;月份
ANL A,#1FH
MOV TIMEBUF+5,A
MOV A,TIMEBUF+7
ANL A,#7FH
MOV TIMEBUF+7,A
MOV A,TIMEBUF+8
ANL A,#3FH
MOV TIMEBUF+8,A
MOV A,TIMEBUF+9
ANL A,#3FH
MOV TIMEBUF+9,A
MOV A,TIMEBUF+3 ;对天的处理
ANL A,#0FH
MOV LEDBUF1,A ;低四送显示缓冲器
MOV A,TIMEBUF+3
SWAP A
ANL A,#0FH
MOV LEDBUF2,A ;高四位送显示缓冲器
MOV A,TIMEBUF+5 ;对月的处理
ANL A,#0FH
MOV LEDBUF3,A
MOV A,TIMEBUF+5
SWAP A
ANL A,#0FH
MOV LEDBUF4,A
MOV A,TIMEBUF+6 ;对年的处理
ANL A,#0FH
MOV LEDBUF5,A ;低四送显示缓冲器
MOV A,TIMEBUF+6
SWAP A
ANL A,#0FH
MOV LEDBUF6,A ;高四位送显示缓冲器
LCALL DISPNUMBER ;调显示程序
LCALL DELAY ;延时
POP 02H
RET
;**************显示时间的子程序************************
;显示时间的子程?
;******************************************************
TIME:
PUSH 02H
MOV R0,#TIMEBUF ;指向读出数据缓冲区首地址
LCALL RD_PCF8563 ;读时钟、日期数据
MOV A,TIMEBUF ;秒单元
ANL A,#7FH ;屏蔽数据无关位
MOV TIMEBUF,A
MOV A,TIMEBUF+1 ;分单元
ANL A,#7FH
MOV TIMEBUF+1,A
MOV A,TIMEBUF+2 ;小时
ANL A,#3FH
MOV TIMEBUF+2,A
MOV A,TIMEBUF+3 ;天
ANL A,#3FH
MOV TIMEBUF+3,A
MOV A,TIMEBUF+4 ;星期
ANL A,#07H
MOV TIMEBUF+4,A
MOV A,TIMEBUF+5 ;月份
ANL A,#1FH
MOV TIMEBUF+5,A
MOV A,TIMEBUF+7
ANL A,#3FH
MOV TIMEBUF+7,A
MOV A,TIMEBUF+8
ANL A,#3FH
MOV TIMEBUF+8,A
MOV A,TIMEBUF+9
ANL A,#3FH
MOV TIMEBUF+9,A
JB FLAG,BUJIASHI
LJMP JIASHI
BUJIASHI:
MOV A,TIMEBUF+1 ;对分的处理
ANL A,#0FH
MOV LEDBUF1,A ;低四送显示缓冲器
MOV A,TIMEBUF+1
SWAP A
ANL A,#0FH
MOV LEDBUF2,A ;高四位送显示缓冲器
MOV A,TIMEBUF+2 ;对小时的处理
ANL A,#0FH
MOV LEDBUF3,A
MOV A,TIMEBUF+2
SWAP A
ANL A,#0FH
MOV LEDBUF4,A
MOV A,TIMEBUF+4 ;对星期的处理
ANL A,#0FH
MOV LEDBUF5,A ;低四送显示缓冲器
MOV A,TIMEBUF+4
SWAP A
ANL A,#0FH
MOV LEDBUF6,A ;高四位送显示缓冲器
XIANSHI:
LCALL DISPNUMBER ;调显示程序
LCALL DELAY ;延时
LCALL DL10MS
POP 02H
RET
;***********************************************
;加小数点显示时间
;************************************************
JIASHI:
MOV A,TIMEBUF+1 ;对分的处理
ANL A,#0FH
JB FLAG1,NO_ADD1 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD1:
MOV LEDBUF1,A ;低四送显示缓冲器
MOV A,TIMEBUF+1
SWAP A
ANL A,#0FH
JB FLAG1,NO_ADD2 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD2:
MOV LEDBUF2,A ;高四位送显示缓冲器
MOV A,TIMEBUF+2 ;对小时的处理
ANL A,#0FH
JB FLAG1,NO_ADD3 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD3:
MOV LEDBUF3,A
MOV A,TIMEBUF+2
SWAP A
ANL A,#0FH
JB FLAG1,NO_ADD4 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD4:
MOV LEDBUF4,A
MOV A,TIMEBUF+4 ;对星期的处理
ANL A,#0FH
JB FLAG1,NO_ADD5 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD5:
MOV LEDBUF5,A ;低四送显示缓冲器
MOV A,TIMEBUF+4
SWAP A
ANL A,#0FH
JB FLAG1,NO_ADD6 ;依据标志位判断是否对小数点进行显示
ADD A,#0AH
NO_ADD6:
MOV LEDBUF6,A ;高四位送显示缓冲器
CPL FLAG1 ;标志位取反
LJMP XIANSHI
;*************************************************
;显示全零子程序
;***********************************************
QUANLING:
PUSH 02H
MOV R0,#TIMEBUF ;指向读出数据缓冲区首地址
LCALL RD_PCF8563 ;读时钟、日期数据
MOV A,TIMEBUF ;秒单元
ANL A,#7FH ;屏蔽数据无关位
MOV TIMEBUF,A
MOV A,TIMEBUF+1 ;分单元
ANL A,#7FH
MOV TIMEBUF+1,A
MOV A,TIMEBUF+2 ;小时
ANL A,#3FH
MOV TIMEBUF+2,A
MOV A,TIMEBUF+3 ;天
ANL A,#3FH
MOV TIMEBUF+3,A
MOV A,TIMEBUF+4 ;星期
ANL A,#07H
MOV TIMEBUF+4,A
MOV A,TIMEBUF+5 ;月份
ANL A,#1FH
MOV TIMEBUF+5,A
MOV A,TIMEBUF+7
ANL A,#7FH
MOV TIMEBUF+7,A
MOV A,TIMEBUF+8
ANL A,#3FH
MOV TIMEBUF+8,A
MOV A,TIMEBUF+9
ANL A,#3FH
MOV TIMEBUF+9,A
MOV A,TIMEBUF+7 ;对分的处理
ANL A,#0FH
MOV LEDBUF1,A ;低四送显示缓冲器
MOV A,TIMEBUF+7
SWAP A
ANL A,#0FH
MOV LEDBUF2,A ;高四位送显示缓冲器
MOV A,TIMEBUF+8 ;对小时的处理
ANL A,#0FH
MOV LEDBUF3,A
MOV A,TIMEBUF+8
SWAP A
ANL A,#0FH
MOV LEDBUF4,A
MOV A,TIMEBUF+9 ;对星期的处理
ANL A,#0FH
MOV LEDBUF5,A ;低四送显示缓冲器
MOV A,TIMEBUF+9
SWAP A
ANL A,#0FH
MOV LEDBUF6,A ;高四位送显示缓冲器
LCALL DISPNUMBER ;调显示程序
LCALL DELAY ;延时
POP 02H
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -