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

📄 exp3.asm

📁 能显示时间
💻 ASM
字号:
ORG 0000H
3AJMP MAIN
ORG 001BH
AJMP TIMER1
ORG 000BH
LJMP TIMER0
ORG 0030H
MAIN:	MOV SP,#6AH	;栈堆设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;建立译码器对应查找表
	MOV 40H,#3FH	;0
	MOV 41H,#06H	;1
	MOV 42H,#5BH	;2
	MOV 43H,#4FH	;3
	MOV 44H,#66H	;4
	MOV 45H,#6DH	;5
	MOV 46H,#7DH	;6
	MOV 47H,#07H	;7
	MOV 48H,#7FH	;8
	MOV 49H,#6FH	;9
	MOV 4AH,#00H	;无
	MOV 4BH,#40H	;-
	MOV 4CH,#08H	;_
;
;建立查找日子的查找表:由于程序中只用了第一组R寄存器,故存放于11H到1CH中
	MOV 11H,#32H
	MOV 12H,#30H
	MOV 13H,#32H
	MOV 14H,#31H
	MOV 15H,#32H
	MOV 16H,#31H
	MOV 17H,#32H
	MOV 18H,#32H
	MOV 19H,#31H
	MOV 1AH,#32H
	MOV 1BH,#31H
	MOV 1CH,#32H
	CLR A
;变量初始化:
	MOV 20H,#28H	;时钟频率
	MOV 21H,#1DH	;日期错位次数
	MOV 22H,#07H	;记录闹钟开始响的时间
	MOV 23H,#59H
	MOV 24H,#00H	;存放是否显示调整某组约会的变量
	MOV 25H,#00H	;存放是否显示约会时间的变量
	MOV 26H,#00H	;存放是否显示闹钟时间的变量
	MOV 27H,#01H	;存放此时显示的是第几组和调整的是第几组的变量
	MOV 30H,#21H	;分别存放:时,分,秒
	MOV 31H,#33H
	MOV 32H,#00H
	MOV 33H,#20H	;分别存放:年,月,日
	MOV 34H,#08H
	MOV 35H,#02H
	MOV 36H,#27H
	MOV 38H,#01H	;分别存放显示内容,在38位显示39的内容
	MOV 39H,#4AH
	MOV 3AH,#00H	;记录按键号码
	MOV 3BH,#00H	;记录时间是否到达5分钟,定时显示日期用
	MOV 3CH,#00H	;记录时间是否到达500毫秒,显示日期滚动速度
	MOV 3DH,#01H	;存放约会断续响铃变量
	MOV 3EH,#00H	;记录现在是否到达约会时间
	MOV 3FH,#00H	;记录现在是否到达闹钟时间
;;记录约会时间,五个时间:
	MOV 56H,#07H	;月
	MOV 57H,#08H
	MOV 58H,#07H
	MOV 59H,#04H
	MOV 5AH,#04H
	MOV 5BH,#01H	;日
	MOV 5CH,#01H
	MOV 5DH,#01H
	MOV 5EH,#05H
	MOV 5FH,#06H
	MOV 60H,#00H	;时
	MOV 61H,#00H
	MOV 62H,#00H
	MOV 63H,#10H
	MOV 64H,#10H
	MOV 65H,#00H	;分
	MOV 66H,#01H
	MOV 67H,#03H
	MOV 68H,#28H
	MOV 69H,#28H
;
	ACALL DATPUT	;装载日期

	;开启计时器:
	MOV TMOD,#11H
	SETB ET1
	SETB EA
	MOV IP,#08H	;中断优先级控制,计时器1为高优先级
	MOV TH1,#0A6H
	MOV TL1,#00H
	SETB TR1
	SETB ET0
	MOV TH0,#0F4H
	MOV TL0,#00H
	SETB TR0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;	SJMP $		;主函数循环体
JMAIN:	
	MOV R3,#0FFH	;延时
WTEMP:	MOV R4,#0FFH
TEMP:	DJNZ R4,TEMP
	DJNZ R3,WTEMP
	
	ACALL ALARM	;调用响钟函数
	MOV A,3FH	;当闹钟响时,屏蔽约会响钟
	JNZ DNTREM
	ACALL REMIN	;调用约会函数
	;是否为5分钟:
DNTREM:	MOV A,3BH	;检查是否到达5分钟整
	JZ NFIVMN	;显示日期时屏蔽案件
	AJMP FIVMN
NFIVMN:	ACALL KEY	;调用按键检测程序,定位按键号码
	ACALL KPRO	;调用按键处理程序
	AJMP ENDJM
FIVMN:	ACALL XCHDAT	;调用日期交换显示程序
ENDJM:	
;	CALL TIMECT	;调用时钟系统优化子程序
	AJMP JMAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;计时器1中断服务程序,提供基准时间
TIMER1:	PUSH PSW	
	PUSH ACC
	MOV TH1,#0A6H
	MOV TL1,#00H
	MOV A,20H
	SUBB A,#14H
	JZ FOMINI
TMAIN:	DJNZ 20H,RETUNTM
	MOV 20H,#28H
	MOV A,#01H
	ADD A,32H
	DA A
	MOV 32H,A
	CJNE A,#60H,RETUNTM
	MOV 32H,#00H
	MOV A,#01H
	ADD A,31H
	DA A
	MOV 31H,A
	CJNE A,#60H,RETUNT
	MOV 31H,#00H
	MOV A,#01H
	ADD A,30H
	DA A
	MOV 30H,A
	CJNE A,#24H,RETUNT
	MOV 30H,#00H
	MOV A,#01H	;日子增1,需要考虑该日是否为本月份的最后一天
	ADD A,36H
	DA A
	MOV 36H,A
	MOV A,35H
	ADD A,#10H
	MOV R0,A	;取出当月的最后一天的日子
	MOV A,@R0
	MOV R0,A
	MOV A,36H
	CLR CY
	SUBB A,R0	;到了每月最后一天,则向月份进位
	JNZ RETUNT
	MOV 36H,#01H
	MOV A,#01H
	ADD A,35H
	DA A
	MOV 35H,A
	CJNE A,#13H,RETUNT
	MOV 35H,#01H
	AJMP RETUNT
RETUNTM:POP ACC		;做了两个不同的retunt
	POP PSW
	RETI
RETUNT:	ACALL FIV	;月,日,时,或分改变时,检查一次是否到了整5分钟,是为了同一有歧义的时间.
	ACALL ALATIM	;之所以在这里调用闹钟时间检测,是为了统一有歧异的时间。
	ACALL REMTIM
	POP ACC
	POP PSW
	RETI
FOMINI:	MOV 3CH,#01H	;半秒
	XRL 3DH,#01H
	AJMP TMAIN


;计时器2中断服务程序,扫描显示控制
TIMER0:	PUSH PSW
	PUSH ACC
	MOV TH0,#0F4H	
	MOV TL0,#00H
	MOV A,3BH	;判断是否到达5分钟
	JNZ DSP
	MOV A,26H	;判断是否显示闹钟和约会
	JNZ ASP
	MOV A,24H
	JNZ RGSP
	ACALL TDSP
	AJMP T0RE
ASP:	ACALL ADSP
	AJMP T0RE
RGSP:	MOV A,25H
	JNZ RSP
	ACALL RGDSP
	AJMP T0RE
RSP:	ACALL RDSP
	AJMP T0RE
DSP:	MOV A,21H	;判断是否已经显示了三次
	JNZ DSPOK
	AJMP T0RE
DSPOK:	ACALL DDSP	;双次判断后,调用日期显示
T0RE:	POP ACC
	POP PSW
	RETI


;显示时间函数,在计时器0中调用
TDSP:	PUSH ACC
	MOV A,38H	
	INC A
	CJNE A,#09H,TREL
	MOV A,#01H
TREL:	MOV 38H,A
	DEC A
	JZ T01
	DEC A
	JZ T02
	DEC A
	JZ T03
	DEC A
	JZ T04
	DEC A
	JZ T05
	DEC A
	JZ T06
	DEC A
	JZ T07
	DEC A
	JZ T08
T01:	MOV A,#0FH
	ANL A,32H
	AJMP RTT2
T02:	MOV A,#0F0H
	ANL A,32H
	SWAP A
	AJMP RTT2
T03:	MOV A,#0BH
	AJMP RTT2
T04:	MOV A,#0FH
	ANL A,31H
	AJMP RTT2
T05:	MOV A,#0F0H
	ANL A,31H
	SWAP A
	AJMP RTT2
T06:	MOV A,#0BH
	AJMP RTT2
T07:	MOV A,#0FH
	ANL A,30H
	AJMP RTT2
T08:	MOV A,#0F0H
	ANL A,30H
	SWAP A
	AJMP RTT2
RTT2:	MOV 39H,A
	ACALL DPLAY
	POP ACC
	RET


;显示日期函数,在计时器0中调用
DDSP:	PUSH ACC
	MOV A,38H
	INC A
	CJNE A,#09H,DREL
	MOV A,#01H
DREL:	MOV 38H,A
	DEC A
	JZ D01
	DEC A
	JZ D02
	DEC A
	JZ D03
	DEC A
	JZ D04
	DEC A
	JZ D05
	DEC A
	JZ D06
	DEC A
	JZ D07
	DEC A
	JZ D08
D01:	MOV A,#0FH
	ANL A,53H
	AJMP RDD2
D02:	MOV A,#0F0H
	ANL A,53H
	SWAP A
	AJMP RDD2
D03:	MOV A,#0FH
	ANL A,52H
	AJMP RDD2
D04:	MOV A,#0F0H
	ANL A,52H
	SWAP A
	AJMP RDD2
D05:	MOV A,#0FH
	ANL A,51H
	AJMP RDD2
D06:	MOV A,#0F0H
	ANL A,51H
	SWAP A
	AJMP RDD2
D07:	MOV A,#0FH
	ANL A,50H
	AJMP RDD2
D08:	MOV A,#0F0H
	ANL A,50H
	SWAP A
	AJMP RDD2
RDD2:	MOV 39H,A
	ACALL DPLAY
	POP ACC
	RET


;显示闹钟时间的函数,在计时器0中调用
ADSP:	PUSH ACC
	MOV A,38H
	INC A
	CJNE A,#05H,AREL
	MOV A,#01H
AREL:	MOV 38H,A
	DEC A
	JZ A01
	DEC A
	JZ A02
	DEC A
	JZ A03
	DEC A
	JZ A04
A01:	MOV A,#0FH
	ANL A,23H
	AJMP RAA2
A02:	MOV A,#0F0H
	ANL A,23H
	SWAP A
	AJMP RAA2
A03:	MOV A,#0FH
	ANL A,22H
	AJMP RAA2
A04:	MOV A,#0F0H
	ANL A,22H
	SWAP A
	AJMP RAA2
RAA2:	MOV 39H,A
	ACALL DPLAY
	POP ACC
	RET


;显示约会调整组的函数,在计时器0中调用
RGDSP:	PUSH ACC
	MOV 38H,#01H
	MOV A,27H
	MOV 39H,A
	ACALL DPLAY
	POP ACC
	RET


;显示约会函数,在计时器0中调用
RDSP:	PUSH ACC
	MOV A,38H	
	INC A
	CJNE A,#09H,RREL
	MOV A,#01H
RREL:	MOV 38H,A
	DEC A
	JZ R01
	DEC A
	JZ R02
	DEC A
	JZ R03
	DEC A
	JZ R04
	DEC A
	JZ R05
	DEC A
	JZ R06
	DEC A
	JZ R07
	DEC A
	JZ R08
R01:	MOV A,#64H
	ADD A,27H
	MOV R1,A
	MOV A,#0FH
	ANL A,@R1
	AJMP RRR2
R02:	MOV A,#64H
	ADD A,27H
	MOV R1,A
	MOV A,#0F0H
	ANL A,@R1
	SWAP A
	AJMP RRR2
R03:	MOV A,#5FH
	ADD A,27H
	MOV R1,A
	MOV A,#0FH
	ANL A,@R1
	AJMP RRR2
R04:	MOV A,#5FH
	ADD A,27H
	MOV R1,A
	MOV A,#0F0H
	ANL A,@R1
	SWAP A
	AJMP RRR2
R05:	MOV A,#5AH
	ADD A,27H
	MOV R1,A
	MOV A,#0FH
	ANL A,@R1
	AJMP RRR2
R06:	MOV A,#5AH
	ADD A,27H
	MOV R1,A
	MOV A,#0F0H
	ANL A,@R1
	SWAP A
	AJMP RRR2
R07:	MOV A,#55H
	ADD A,27H
	MOV R1,A
	MOV A,#0FH
	ANL A,@R1
	AJMP RRR2
R08:	MOV A,#55H
	ADD A,27H
	MOV R1,A
	MOV A,#0F0H
	ANL A,@R1
	SWAP A
	AJMP RRR2
RRR2:	MOV 39H,A
	ACALL DPLAY
	POP ACC
	RET



;显示函数,将39里的内容显示到数码管第38位
DPLAY:	MOV R1,38H
	CLR A
	SETB CY
LOOPC:	RLC A
	DJNZ R1,LOOPC
	MOV DPTR,#8000H
	MOVX @DPTR,A
	MOV A,39H
	ADD A,#40H
	MOV R1,A
	MOV A,@R1
	MOV DPTR,#9000H
	MOVX @DPTR,A
	CLR CY
	RET


;检查是否为5分钟:
FIV:	PUSH ACC
	MOV A,31H
	ANL A,#0FH
	JNZ NZERO
	AJMP FIVM
NZERO:	CJNE A,#05H,NFIVM
FIVM:	MOV A,#01H
	MOV 3BH,A
	ACALL DATPUT	;每五分钟重新装载日期一次
	MOV A,#1DH
	MOV 21H,A
	AJMP ENDFIV
NFIVM:	MOV 3BH,#00H
ENDFIV:	POP ACC
	RET


;时钟优化程序
TIMECT:	MOV A,31H
	CLR CY
	SUBB A,#60H
	JNZ CTEND
	MOV 31H,#00H
CTEND:	RET


;判断是否到达闹钟时间
ALATIM:	PUSH ACC
	MOV A,30H
	CJNE A,22H,NALATM
	MOV A,31H
	CJNE A,23H,NALATM
	MOV 3FH,#01H
	POP ACC
	RET
NALATM:	MOV 3FH,#00H
	POP ACC
	RET


;响钟程序
ALARM:	MOV A,3FH
	JZ NALARM
	MOV P1,#00H
	RET
NALARM:	MOV P1,#0FFH
	RET


;判断是否到达约会时间
REMTIM:	PUSH ACC
	MOV A,35H	;判断第一组
	CJNE A,56H,BREMTM
	MOV A,36H
	CJNE A,5BH,BREMTM
	MOV A,30H
	CJNE A,60H,BREMTM
	MOV A,31H
	CJNE A,65H,BREMTM
	AJMP YREMTM
BREMTM:	MOV A,35H	;判断第二组
	CJNE A,57H,CREMTM
	MOV A,36H
	CJNE A,5CH,CREMTM
	MOV A,30H
	CJNE A,61H,CREMTM
	MOV A,31H
	CJNE A,66H,CREMTM
	AJMP YREMTM
	MOV A,35H	;判断第三组
CREMTM:	CJNE A,58H,DREMTM
	MOV A,36H
	CJNE A,5DH,DREMTM
	MOV A,30H
	CJNE A,62H,DREMTM
	MOV A,31H
	CJNE A,67H,DREMTM
	AJMP YREMTM
DREMTM:	MOV A,35H	;判断第四组
	CJNE A,59H,EREMTM
	MOV A,36H
	CJNE A,5EH,EREMTM
	MOV A,30H
	CJNE A,63H,EREMTM
	MOV A,31H
	CJNE A,68H,EREMTM
	AJMP YREMTM
EREMTM:	MOV A,35H	;判断第五组
	CJNE A,5AH,NREMTM
	MOV A,36H
	CJNE A,5FH,NREMTM
	MOV A,30H
	CJNE A,64H,NREMTM
	MOV A,31H
	CJNE A,69H,NREMTM
YREMTM:	MOV 3EH,#01H
	POP ACC
	RET
NREMTM:	MOV 3EH,#00H
	POP ACC
	RET


;约会提醒程序
REMIN:	MOV A,3EH
	JZ NREMIN
	MOV A,3DH
	JZ NREMIN
	MOV P1,#00H
	RET
NREMIN:	MOV P1,#0FFH
	RET


;定位按键号码程序:
KEY:	ACALL KEYCH	;调用查键子程序
	JNZ DSHAKE
	AJMP KEND
DSHAKE:	ACALL DELAY	;消抖子程序调用延时子程序	
	ACALL KEYCH
	JNZ SCAN
	AJMP KEND


;扫描查键
SCAN:	MOV R6,#01H	;将第0行置一
	MOV R7,#00H	;从第0号开始检查
SCAN1:	MOV DPTR,#8000H
	MOV A,R6
	MOVX @DPTR,A
	MOVX A,@DPTR
	JNB ACC.0,LONE
	MOV A,#00H
	AJMP LKP
LONE:	JNB ACC.1,LTWO
	MOV A,#01H
	AJMP LKP
LTWO:	JNB ACC.2,LTHR
	MOV A,#02H
	AJMP LKP
LTHR:	JNB ACC.3,NEXT
	MOV A,#03H
LKP:	ADD A,R7
	PUSH ACC
SCAN2:	ACALL KEYCH
	JNZ SCAN2
	POP ACC
	AJMP SCANED
NEXT:	INC R7
	INC R7
	INC R7
	INC R7
	MOV A,R6
	JB ACC.3,KEND
	RL A
	MOV R6,A
	AJMP SCAN1
SCANED:	INC A
	MOV 3AH,A
	RET
KEND:	MOV 3AH,#0H
	RET


KEYCH:	MOV DPTR,#8000H	;查询按键是否改变子程序,将改变的列置1
	MOV A,#0FH
	MOVX @DPTR,A
	MOVX A,@DPTR
	ANL A,#0FH
	RET

DELAY:	MOV R2,#20H	;延时程序,按键消抖用
DELAY2:	MOV R3,#0FFH
DELAY3:	DJNZ R3,DELAY3
	DJNZ R2,DELAY2
	RET


;按键处理程序
KPRO:	MOV A,3AH
	JZ KPEND
	DEC A
	JZ KEY1
	DEC A
	JZ KEY2
	DEC A
	JZ KEY3
	DEC A
	JZ KEY4
	DEC A
	JZ KEY5
	DEC A
	JZ KEY6
	DEC A
	JZ KEY7
	DEC A
	JZ KEY8
	DEC A
	JZ KEY9
	DEC A
	JZ KEY10
	DEC A
	JZ KEY11
	DEC A
	JZ KEY12
	DEC A
	JZ KEY13
	DEC A
	JZ KEY14
	DEC A
	JZ KEY15
	DEC A
	JZ KEY16
KPEND:	RET

KEY1:	AJMP K1	;按键跳转,跳转到各个按键处理子程序中去
KEY2:	AJMP K2
KEY3:	AJMP K3
KEY4:	AJMP K4
KEY5:	AJMP K5
KEY6:	AJMP K6
KEY7:	AJMP K7
KEY8:	AJMP K8
KEY9:	AJMP K9
KEY10:	AJMP K10
KEY11:	AJMP K11
KEY12:	AJMP K12
KEY13:	AJMP K13
KEY14:	AJMP K14
KEY15:	AJMP K15
KEY16:	AJMP K16

;各个按键处理子程序
K1:	MOV A,35H	;系统日期月增1
	INC A
	DA A
	MOV 35H,A
	SUBB A,#13H
	JNZ K1OK
	MOV 35H,#00H
K1OK:	AJMP KPEND

K2:	MOV A,36H	;系统日期日增1
	INC A
	DA A
	MOV 36H,A
	MOV A,35H
	ADD A,#10H
	MOV R1,A	;取出当月的最后一天的日子
	MOV A,@R1
	MOV R1,A
	MOV A,36H
	CLR CY
	SUBB A,R1	;到了每月最后一天,则向月份进位
	JNZ K2OK
	MOV 36H,#01H
K2OK:	AJMP KPEND

K3:	MOV A,30H	;系统时间时增1
	INC A
	DA A
	MOV 30H,A
	SUBB A,#24H
	JNZ K3OK
	MOV 30H,#00H
K3OK:	AJMP KPEND
	
K4:	MOV A,31H	;系统时间分增1
	INC A
	DA A
	MOV 31H,A
	SUBB A,#60H
	JNZ K4OK
	MOV 31H,#00H
K4OK:	AJMP KPEND

K5:	MOV P1,#0FFH	;关闭闹钟和约会响铃
	MOV 3FH,#00H
	MOV 3EH,#00H
	AJMP KPEND

K6:	MOV A,26H	;显示闹钟时间
	XRL A,#01H
	MOV 26H,A
	JNZ K60K
	MOV 24H,#00H
K60K:	AJMP KPEND

K7:	MOV A,22H	;闹钟时增1
	INC A
	DA A
	MOV 22H,A
	SUBB A,#24H
	JNZ K7OK
	MOV 22H,#00H
K7OK:	AJMP KPEND

K8:	MOV A,23H	;闹钟分增1
	INC A
	DA A
	MOV 23H,A
	SUBB A,#60H
	JNZ K8OK
	MOV 23H,#00H
K8OK:	AJMP KPEND

K9:	AJMP KPEND

K10:	MOV A,24H	;显示目前调整的是某组约会
	XRL A,#01H
	MOV 24H,A
	JNZ K100K
	MOV 25H,#00H
K100K:	AJMP KPEND

K11:	MOV A,27H	;调整第几组约会
	INC A
	MOV 27H,A
	CJNE A,#06H,K110K
	MOV 27H,#01H
K110K:	AJMP KPEND

K12:	MOV A,25H	;显示某组约会时间
	XRL A,#01H
	MOV 25H,A
K120K:	AJMP KPEND

K13:	MOV A,#55H	;更改选定组的约会日期的月份
	ADD A,27H
	MOV R1,A
	MOV A,@R1	;取出选定组的月份
	INC A
	DA A
	MOV @R1,A
	CJNE A,#13H,K130K
	MOV @R1,#01H
K130K:	AJMP KPEND

K14:	MOV A,#5AH	;日增加,要考虑每月的最后一天
	ADD A,27H
	MOV R1,A
	MOV A,@R1	;取出选定组的日子
	INC A
	DA A
	MOV @R1,A
	MOV R3,A
	MOV A,#55H	;取出当月月份
	ADD A,27H
	MOV R1,A
	MOV A,@R1
	ADD A,#10H
	MOV R1,A	;取出当月的最后一天的日子
	MOV A,@R1
	CLR CY
	SUBB A,R3	;相减,检查是否到了每月最后一天,若是,则归1
	JNZ K140K
	MOV A,#5AH
	ADD A,27H
	MOV R1,A
	MOV @R1,#01H
K140K:	AJMP KPEND

K15:	MOV A,#5FH
	ADD A,27H
	MOV R1,A
	MOV A,@R1
	ADD A,#01H
	DA A
	MOV @R1,A
	CJNE A,#24H,K150K
	MOV @R1,#00H
K150K:	AJMP KPEND

K16:	MOV A,#64H
	ADD A,27H
	MOV R1,A
	MOV A,@R1
	INC A
	DA A
	MOV @R1,A
	CJNE A,#60H,K160K
	MOV @R1,#00H
K160K:	AJMP KPEND




;装载日期函数,每五分钟重新装载一次
DATPUT:	MOV 50H,#0AAH
	MOV A,33H
	MOV 51H,A
	MOV A,34H
	MOV 52H,A
	MOV A,35H
	ANL A,#0F0H
	ORL A,#00CH
	SWAP A
	MOV 53H,A
	MOV A,35H
	ANL A,#0FH
	ORL A,#0C0H
	SWAP A
	MOV 54H,A
	MOV A,36H
	MOV 55H,A
	RET


;日期交换显示函数:(快速移位算法)
XCHDAT:	MOV A,3CH
	JZ ENDXD	;每3CH错位一次,3CH控制移位速度
	MOV A,50H
	SWAP A
	MOV 50H,A
	MOV A,51H
	SWAP A
	MOV 51H,A
	MOV A,52H
	SWAP A
	MOV 52H,A
	MOV A,53H
	SWAP A
	MOV 53H,A
	MOV A,54H
	SWAP A
	MOV 54H,A
	MOV A,55H
	SWAP A
	MOV 55H,A

	MOV A,50H
	MOV R1,#51H
	XCHD A,@R1
	MOV 50H,A

	MOV A,51H
	MOV R1,#52H
	XCHD A,@R1
	MOV 51H,A

	MOV A,52H
	MOV R1,#53H
	XCHD A,@R1
	MOV 52H,A

	MOV A,53H
	MOV R1,#54H
	XCHD A,@R1
	MOV 53H,A

	MOV A,54H
	MOV R1,#55H
	XCHD A,@R1
	MOV 54H,A

	MOV A,21H
	DEC A
	MOV 21H,A
	JNZ ENDXD
	MOV 3BH,#00H	;循环3遍,将5分钟标志置零
ENDXD:	CLR A
	MOV 3CH,A	;移位一次,将3C标志置零
	RET




END

⌨️ 快捷键说明

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