📄 数字钟.asm
字号:
S_SET BIT P1.0
M_SET BIT P1.1
H_SET BIT P1.2
RESET BIT P1.3
SECOND EQU 30H
MINUTE EQU 31H
HOUR EQU 32H
TCNT EQU 33H
ORG 0000H
LJMP START
ORG 000BH
LJMP T00
ORG 0030H
START: MOV DPTR,#TAB
MOV HOUR,#0
MOV MINUTE,#0
MOV SECOND,#0
MOV TCNT,#0
MOV TMOD,#01H
MOV TH0,#(65536-50000)/256
MOV TL0,#(65536-50000) MOD 256
MOV IE,#82H
SETB TR0
A1: LCALL DISPLAY
MOV P1,#0FFH
JNB S_SET,S1
JNB M_SET,S2
JNB H_SET,S3
JNB RESET,START
LJMP A1
S1: LCALL DELAY
JB S_SET,A1
INC SECOND
LCALL DISPLAY
MOV A,SECOND
CJNE A,#60,J0
MOV SECOND,#0
LJMP K1
S2: LCALL DELAY
JB M_SET,A1
K1: INC MINUTE
LCALL DISPLAY
MOV A,MINUTE
CJNE A,#60,J1
MOV MINUTE,#0
LJMP K2
S3: LCALL DELAY
JB H_SET,A1
K2: INC HOUR
LCALL DISPLAY
MOV A,HOUR
CJNE A,#24,J2
MOV HOUR,#0
LJMP A1
J0: JB S_SET,A1
LCALL DISPLAY
SJMP J0
J1: JB M_SET,A1
LCALL DISPLAY
SJMP J1
J2: JB H_SET,A1
LCALL DISPLAY
SJMP J2
T00: MOV TH0,#(65536-50000)/256
MOV TL0,#(65536-50000) MOD 256
INC TCNT
MOV A,TCNT
CJNE A,#20,RETUNE
INC SECOND
MOV TCNT,#0
MOV A,SECOND
CJNE A,#60,RETUNE
INC MINUTE
MOV SECOND,#0
MOV A,MINUTE
CJNE A,#60,RETUNE
INC HOUR
MOV MINUTE,#0
MOV A,HOUR
CJNE A,#24,RETUNE
MOV HOUR,#0
RETUNE: RETI
DISPLAY:MOV A,SECOND
MOV B,#10
DIV AB
CLR P3.6
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.6
MOV A,B
CLR P3.7
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.7
CLR P3.5
MOV P0,#40H
LCALL DELAY
SETB P3.5
MOV A,MINUTE
MOV B,#10
DIV AB
CLR P3.3
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.3
MOV A,B
CLR P3.4
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.4
CLR P3.2
MOV P0,#40H
LCALL DELAY
SETB P3.2
MOV A,HOUR
MOV B,#10
DIV AB
CLR P3.0
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.0
MOV A,B
CLR P3.1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P3.1
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 + -