📄 数字钟2.asm
字号:
RIQI BIT P1.0
DAY_SET BIT P1.1
MON_SET BIT P1.2
YEL_SET BIT P1.3
YEH_SET BIT P1.4
ENSURE BIT P1.5
SECOND EQU 30H
MINUTE EQU 31H
HOUR EQU 32H
ALARM_SECOND EQU 33H
ALARM_MINUTE EQU 34H
ALARM_HOUR EQU 35H
CLOCK_SECOND EQU 36H
CLOCK_MINUTE EQU 37H
CLOCK_HOUR EQU 38H
DAY EQU 39H
MONTH EQU 40H
YEARL EQU 41H
YEARH EQU 42H
TCNT EQU 43H
ORG 0000H
LJMP START
ORG 000BH
LJMP T00
ORG 0030H
START: MOV DPTR,#TAB
MOV TCNT,#0
MOV HOUR,#23
MOV MINUTE,#59
MOV SECOND,#56
MOV ALARM_SECOND,#0
MOV ALARM_MINUTE,#0
MOV ALARM_HOUR,#7
MOV DAY,#28
MOV MONTH,#2
MOV YEARL,#00
MOV YEARH,#19
MOV TMOD,#01H
MOV TH0,#(65536-50000)/256
MOV TL0,#(65536-50000) MOD 256
MOV IE,#83H
SETB PT0
SETB TR0
L1: LCALL DISPLAY
SJMP L1
T00: MOV TH0,#(65536-50000)/256
MOV TL0,#(65536-50000) MOD 256
INC TCNT
MOV A,TCNT
CJNE A,#20,RETUNE1
MOV TCNT,#0
INC SECOND
MOV A,SECOND
CJNE A,#60,RETUNE1
INC MINUTE
MOV SECOND,#0
MOV A,MINUTE
CJNE A,#60,RETUNE1
INC HOUR
MOV MINUTE,#0
MOV A,HOUR
CJNE A,#24,RETUNE1
MOV HOUR,#0
INC DAY
MOV A,MONTH
CJNE A,#8,T01
LJMP T01
RETUNE1:LJMP RETUNE
T01: JC T02
RRC A
JC T011
MOV A,DAY
CJNE A,#32,RETUNE
INC MONTH
MOV DAY,#1
MOV A,MONTH
CJNE A,#13,RETUNE
INC YEARL
MOV MONTH,#1
MOV A,YEARL
CJNE A,#100,RETUNE
INC YEARH
MOV YEARL,#1
SJMP RETUNE
T011: MOV A,DAY
CJNE A,#31,RETUNE
INC MONTH
MOV DAY,#1
SJMP RETUNE
T02: RRC A
JNC T03
MOV A,DAY
CJNE A,#32,RETUNE
INC MONTH
MOV DAY,#1
SJMP RETUNE
T03: MOV A,MONTH
CJNE A,#2,T04
MOV A,YEARL
CJNE A,#0,T031
MOV A,YEARH
MOV B,#04
DIV AB
MOV A,B
CJNE A,#0,T04
SJMP T032
T031: MOV A,YEARL
MOV B,#04
DIV AB
MOV A,B
CJNE A,#0,T04
T032: MOV A,DAY
CJNE A,#30,RETUNE
INC MONTH
MOV DAY,#1
SJMP RETUNE
T04: MOV A,DAY
CJNE A,#29,RETUNE
INC MONTH
MOV DAY,#1
RETUNE: LCALL DISPLAY
RETI
DISPLAY:JNB P1.0,DISDATA
MOV A,SECOND
MOV B,#10
DIV AB
CLR P2.6
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.6
MOV A,B
CLR P2.7
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.7
CLR P2.5
MOV P0,#40H
LCALL DELAY
SETB P2.5
MOV A,MINUTE
MOV B,#10
DIV AB
CLR P2.3
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,B
CLR P2.4
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.4
CLR P2.2
MOV P0,#40H
LCALL DELAY
SETB P2.2
MOV A,HOUR
MOV B,#10
DIV AB
CLR P2.0
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.0
MOV A,B
CLR P2.1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.1
SJMP EXIT
DISDATA:MOV R0,#DAY
MOV R1,#60H
MOV R7,#4
DIS1: MOV A,@R0
MOV B,#10
DIV AB
MOV @R1,B
INC R1
MOV @R1,A
INC R1
INC R0
DJNZ R7,DIS1
MOV R0,#60H
MOV R7,#8
DIS2: MOV A,@R0
MOVC A,@A+DPTR
MOV @R0,A
INC R0
DJNZ R7,DIS2
MOV R0,#67H
MOV R7,#8
MOV A,#0FEH
DIS3: MOV P2,A
MOV P0,@R0
LCALL DELAY
DEC R0
RL A
DJNZ R7,DIS3
EXIT: RET
DELAY: MOV R5,#10
D1: MOV R6,#100
DJNZ R6,$
DJNZ R5,D1
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
; 0 1 2 3 4 5 6 7 8 9
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -