📄 时钟.asm
字号:
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP SERVE
MAIN: MOV TMOD,#10H
MOV 20H,#20
MOV R6,#0FFH
MOV R4,#00H
CLR A
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,A
SETB ET1
MOV TH1,#4CH
MOV TL1,#00H
SETB TR1
SETB EX0
SETB EA
MOV DPTR,#0FF82H
MOV A,#0D1H
MOVX @DPTR,A
WAIT: MOVX A,@DPTR
JB ACC.7,WAIT
MOV A,#00H
MOVX @DPTR,A
MOV A,#2AH
MOVX @DPTR,A
HERE: LCALL DELED
LCALL DISP
SJMP HERE
SERVE:PUSH PSW
PUSH ACC
LCALL DELED
LCALL DISP
MOV TH1,#4CH
MOV TL1,#00H
DJNZ 20H,RETURN
MOV 20H,#20
MOV A,#01H
ADD A,33H
DA A
MOV 33H,A
XRL A,#60H
JNZ RETURN
MOV 33H,#00H
MOV A,#01H
ADD A,32H
DA A
MOV 32H,A
XRL A,#60H
JNZ RETURN
MOV 32H,#00H
MOV A,#01H
ADD A,31H
DA A
MOV 31H,A
XRL A,#24H
JNZ RETURN
MOV 31H,#00H
MOV A,#01H
ADD A,30H
DA A
MOV 30H,A
XRL A,#31H
JNZ RETURN
MOV 30H,#00H
RETURN: LCALL GETKEY
CJNE A,#0FFH,RETURN1
LCALL PD
RETURN1: POP ACC
POP PSW
RETI
GETKEY: PUSH DPH
PUSH DPL
PUSH PSW
MOV DPTR,#0FF82H
MOVX A,@DPTR
ANL A,#07H
JNZ GETVAL
MOV A,#00H
SJMP NKBHIT
GETVAL: MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#0FF80H
MOVX A,@DPTR
ANL A,#0FH
MOV B,A
MOV A,#0FFH
NKBHIT: POP PSW
POP DPL
POP DPH
RET
DELED: MOV A,33H
ANL A,#0F0H
SWAP A
MOV 71H,A
MOV A,33H
ANL A,#0FH
MOV 70H,A
MOV A,32H
ANL A,#0F0H
SWAP A
MOV 73H,A
MOV A,32H
ANL A,#0FH
MOV 72H,A
MOV A,31H
ANL A,#0F0H
SWAP A
MOV 75H,A
MOV A,31H
ANL A,#0FH
MOV 74H,A
MOV A,30H
ANL A,#0F0H
SWAP A
MOV 77H,A
MOV A,30H
ANL A,#0FH
MOV 76H,A
RET
DISP: MOV DPTR,#0FF82H
MOV A,#90H
MOVX @DPTR,A
MOV R0,#70H
MOV R7,#08H
MOV A,R0
ADD A,R4
MOV R0,A
MOV DPTR,#0FF81H
DL0: MOV A,@R0
ADD A,#1DH
MOVC A,@A+PC
PUSH ACC
MOV A,R7
CJNE A,#08H,DL1
AJMP NEXT
DL1: JB ACC.0,NEXT
POP ACC
SETB ACC.7
AJMP DIR1
NEXT: POP ACC
DIR1: MOVX @DPTR,A
INC R0
CJNE R0,#78H,TP
SJMP TP1
TP: DJNZ R7,DL0
TP1: RET
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
PD: MOV A,B
CJNE A,#0CH,KEY_G
LCALL CLEAR_T
KEY_G: CJNE A,#0DH,KEY_A
LCALL STOP_T
KEY_A: CJNE A,#0AH,KEY_B
F1: LCALL GETKEY
CJNE A,#0FFH,F1
MOV A,B
CJNE A,#03H,PTF1
PTF1:JC NEXT2
MOV 30H,#00H
AJMP RETUN
NEXT2:SWAP A
MOV 30H,A
F2: LCALL GETKEY
CJNE A,#0FFH,F2
MOV A,B
CJNE A,#0AH,PTF2
PTF2:JC NEXT3
MOV 30H,#00H
AJMP RETUN
NEXT3:ORL 30H,A
AJMP RETUN
KEY_B:CJNE A,#0BH,KEY_E
F3: LCALL GETKEY
CJNE A,#0FFH,F3
MOV A,B
CJNE A,#02H,PTF3
PTF3:JC NEXT4
MOV 31H,#00H
AJMP RETUN
NEXT4:SWAP A
MOV 31H,A
F4: LCALL GETKEY
CJNE A,#0FFH,F4
MOV A,B
CJNE A,#04H,PTF4
PTF4:JC NEXT5
MOV 31H,#00H
AJMP RETUN
NEXT5:ORL 31H,A
AJMP RETUN
KEY_E:CJNE A,#0EH,KEY_F
F5: LCALL GETKEY
CJNE A,#0FFH,F5
MOV A,B
CJNE A,#06H,PTF5
PTF5: JC NEXT6
MOV 32H,#00H
AJMP RETUN
NEXT6: SWAP A
MOV 32H,A
F6: LCALL GETKEY
CJNE A,#0FFH,F6
MOV A,B
CJNE A,#0AH,PTF7
PTF7:JC NEXT7
MOV 32H,#00H
AJMP RETUN
NEXT7: ORL 32H,A
AJMP RETUN
KEY_F:CJNE A,#0FH,RETUN
F7: LCALL GETKEY
CJNE A,#0FFH,F7
MOV A,B
SWAP A
MOV 33H,A
F8: LCALL GETKEY
CJNE A,#0FFH,F8
MOV A,B
ORL 33H,A
MOV A,33H
CJNE A,#60H,PTF8
PTF8:JC RETUN
MOV 33H,#00H
RETUN:RET
CLEAR_T:
CLR TR1
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,#00H
MOV R6,#0FFH
LCALL DELED
LCALL DISP
SETB TR1
RET
STOP_T:
CLR TR1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -