📄 时钟程序.txt
字号:
ORG 000BH
LJMP TINTRUP
ORG 0340h ;SY11
CLOCK0: MOV SP,#50H
MOV R0,#7EH
MOV R4,#06H
CLR A
CLOCK1: MOV @R0,A
DEC R0
DJNZ R4,CLOCK1
MOV A,#7EH
MOV DPTR,#1FFFH
MOVX @DPTR,A
MOV 76H,#00H
MOV 77H,#00H
LCALL KEYDISP0
LCALL DISDA0
MOV TMOD,#01H
ORL IE,#82H
MOV TL0,#0B7H
MOV TH0,#3CH
MOV 23H,#00H
SETB TR0
CLOCK2: LCALL DISP
LCALL DISDA0
SJMP CLOCK2
DISDA0: MOV R0,#79H
MOV A,22H
ACALL DISDA
MOV A,21H
ACALL DISDA
MOV A,20H
ACALL DISDA
RET
DISDA: MOV R1,A
ACALL DISDA1
MOV A,R1
SWAP A
DISDA1: ANL A,#0FH
MOV @R0,A
INC R0
RET
TINTRUP: MOV TL0,#0B7H
MOV TH0,#3CH
PUSH PSW
PUSH ACC
SETB 0D3H
INC 23H
MOV A,23H
CJNE A,#0AH,TINTRUP1
MOV 23H,#00H
MOV A,22H
INC A
DA A
MOV 22H,A
CJNE A,#60H,TINTRUP1
MOV 22H,#00H
MOV A,21H
INC A
DA A
MOV 21H,A
CJNE A,#60H,TINTRUP1
MOV 21H,#00H
MOV A,20H
INC A
DA A
MOV 20H,A
CJNE A,#24H,TINTRUP1
MOV 20H,#00H
TINTRUP1:POP ACC
POP PSW
RETI
KEYDISP0:LCALL KEY
JNC FANCKEY
DATAKEY:LCALL DATAKEY1
DB 79H,7EH
SJMP KEYDISP0
FANCKEY:CJNE A,#16H,KEYDISP0
MOV A,7AH
SWAP A
ORL A,79H
MOV 22H,A
CJNE A,#60H,FANCKEY1
FANCKEY1:JNC FANCKEY4
MOV A,7CH
SWAP A
ORL A,7BH
MOV 21H,A
CJNE A,#60H,FANCKEY2
FANCKEY2:JNC FANCKEY4
MOV A,7EH
SWAP A
ORL A,7DH
MOV 20H,A
CJNE A,#24H,FANCKEY3
FANCKEY3:JNC FANCKEY4
RET
FANCKEY4:CLR TR0
LJMP CLOCK0
DATAKEY1:MOV R4,A
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R1,A
MOV A,R4
MOV @R1,A
CLR A
POP 83H
POP 82H
MOVC A,@A+DPTR
INC DPTR
CJNE A,01H,DATAKEY3
DEC R1
CLR A
MOVC A,@A+DPTR
DATAKEY2:PUSH 82H
PUSH 83H
MOV DPTR,#1FFFH
MOVX @DPTR,A
POP 83H
POP 82H
INC DPTR
PUSH 82H
PUSH 83H
RET
DATAKEY3:DEC R1
MOV A,R1
SJMP DATAKEY2
KEY0: MOV R6,#20H
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R0,A
MOV A,@R0
MOV R7,A
MOV A,#10H
MOV @R0,A
KEY3: LCALL KEYDISP
JNB 0E5H,KEY2
DJNZ R6,KEY3
MOV DPTR,#1FFFH ;***
MOVX A,@DPTR
MOV R0,A ;***
MOV A,R7
MOV @R0,A
KEY: MOV R6,#50H
KEY1: LCALL KEYDISP
JNB 0E5H,KEY2 ;***
DJNZ R6,KEY1
SJMP KEY0
KEY2: MOV R6,A
MOV A,R7
MOV @R0,A
MOV A,R6 ;A=KEYDATA
KEYEND: RET
KEYDISP:LCALL DISP
LCALL KEYSM
MOV R4,A ;KEYDATA
MOV R1,#76H ;DATASAME TIME
MOV A,@R1
MOV R2,A
INC R1
MOV A,@R1
MOV R3,A ;LAST KEYDATA
XRL A,R4
;TWO TIME KEYDATA
MOV R3,04H ;NEW KEYDATA---R3
MOV R4,02H ;TIME---R4
JZ KEYDISP1
MOV R2,#88H
MOV R4,#88H
KEYDISP1:DEC R4
MOV A,R4
XRL A,#82H
JZ KEYDISP2
MOV A,R4 ;R4=TIME
XRL A,#0EH
JZ KEYDISP2
MOV A,R4
ORL A,R4
JZ KEYDISP3
MOV R4,#20H ;R4=20H
DEC R2
LJMP KEYDISP5
KEYDISP3:MOV R4,#0FH
KEYDISP2:MOV R2,04H
MOV R4,03H
KEYDISP5:MOV R1,#76H
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
MOV A,R4 ;****
CJNE R3,#10H,KEYDISP4
KEYDISP4:RET
DISP: SETB 0D4H
MOV R1,#7EH
MOV R2,#20H
MOV R3,#00H
DISP1: MOV DPTR,#0FF21H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#DATACO
MOV A,@R1
MOVC A,@A+DPTR
MOV DPTR,#0FF22H
MOVX @DPTR,A
DISP2: DJNZ R3,DISP2
DEC R1
CLR C
MOV A,R2
RRC A
MOV R2,A
JNZ DISP1
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A
CLR 0D4H
RET
DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
KEYSM:
SETB 0D4H
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A ;OFF DISP
KEYSM0: MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
KEYSM1: MOV A,R2
MOV DPTR,#0FF21H
MOVX @DPTR,A
NOP
RL A
MOV R2,A
MOV DPTR,#0FF23H
MOVX A,@DPTR
CPL A
NOP
NOP
NOP
ANL A,#0FH
JNZ KEYSM2
INC R0 ;NOKEY
DJNZ R3,KEYSM1
SJMP KEYSM10
KEYSM2: ;YKEY
CPL A
JB 0E0H,KEYSM3
MOV A,#00H
SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
MOV A,#08H
SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
MOV A,#10H
SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM10
MOV A,#18H
KEYSM7: ADD A,R0
CLR 0D4H
CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM10
MOV DPTR,#KEYDATA
MOVC A,@A+DPTR
KEYSM10:RET
KEYDATA:DB 07H,04H,08H,05H,09H,06H,0AH,0BH
DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -