📄 key.asm
字号:
SECOND1 EQU 60H
SECOND2 EQU 61H
SECOND3 EQU 62H
SECOND4 EQU 63H
ORG 0000h
AJMP MAIN
ORG 000BH
LJMP DISPLAY
ORG 0030h
MAIN:
MOV P1,#00H
MOV P2,#03FH
MOV P0,#0FFH
MOV P3,#0FFH
MOV SECOND1,#00H
MOV SECOND2,#00H
MOV SECOND3,#00H
MOV SECOND4,#00H
MOV 64H,#00H
MOV 65H,#00H
MOV TMOD,#01H
MOV TL0,#0e5H ;wait
MOV TH0,#0BeH
SETB ET0
SETB TR0
SETB EA
MAIN1: MOV P3,#0FFH
JB P3.4, KEY
KEY1: LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
JB P3.4, KEY
AJMP MAIN
KEY: MOV P0,#0FFH
SETB P3.6
SETB P3.7
CLR P3.5
LK: LCALL DELAY2
JB P0.0,L1
MOV A,SECOND1
ORL A,#01H
MOV SECOND1,A
L1: MOV A,SECOND2
JB P0.4,L2
ORL A,#02H
L2: JB P0.5,L3
MOV 64H,#04H
L3: JB P0.6,L4
ORL A,#020H
L4: JB P0.7,L5
ORL A,#040H
L5: MOV SECOND2,A
SETB P3.5
LCALL DELAY2
JNB P0.5,L35
MOV A,64H
ANL A,#04H
JZ L35
MOV A,SECOND2
ORL A,#04H
MOV SECOND2,A
L35: MOV 64H,#00H
SETB P3.5
CLR P3.6
SETB P3.7
MOV P0,#0FFH
LCALL DELAY2
JB P0.0,L7
MOV 64H,#02H
L7: MOV A,SECOND1
JB P0.1,L8
MOV 65H,#04H
L8: JB P0.2,L9
ORL A, #020H
L9: JB P0.3,L10
ORL A,#040H
L10: MOV SECOND1,A
SETB P3.6
LCALL DELAY2
JNB P0.0,L110
MOV A,64H
ANL A,#02H
JZ L110
MOV A,SECOND1
ORL A,#02H
MOV SECOND1,A
L110: JNB P0.1,L111
MOV A,65H
ANL A,#04H
JZ L111
MOV A,SECOND1
ORL A,#04H
MOV SECOND1,A
L111: MOV P0,#0FFH
CLR P3.6
LCALL DELAY2
MOV 64H,#00H
MOV 65H,#00H
JB P0.5,L11
MOV 64H,#08H
L11: JB P0.6,L12
MOV 65H,#010H
L12: SETB P3.6
LCALL DELAY2
JNB P0.5, L32
MOV A,64H
ANL A,#08H
JZ L32
MOV A,SECOND2
ORL A,#08H
MOV SECOND2,A
L32: JNB P0.6,L33
MOV A,65H
ANL A,#010H
JZ L33
MOV A,SECOND2
ORL A,#010H
MOV SECOND2,A
L33: MOV 64H,#00H
MOV 65H,#00H
MOV A,SECOND1
CLR P3.7
SETB P3.5
MOV P0,#0FFH
LCALL DELAY2
JB P0.1,L13
ORL A,#08H
L13: JB P0.2,L14
ORL A, #010H
L14: JB P0.3,L15
ORL A, #080H
L15: MOV SECOND1,A
MOV A,SECOND2
JB P0.4,L16
ORL A, #01H
L16: JB P0.7,L17
MOV 64H,#080H
L17: MOV SECOND2,A
SETB P3.7
LCALL DELAY2
JNB P0.7,L107
MOV A,64H
ANL A,#080H
JZ L107
MOV A,SECOND2
ORL A,#080H
MOV SECOND2,A
L107: CLR P3.7
SETB P2.0
LCALL DELAY2
MOV 64H,#00H
JB P2.0,L171
MOV A,SECOND3
ORL A,#01H
MOV SECOND3,A
L171: MOV P2,#0BFH
SETB P3.7
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
MOV A,SECOND3
JB P2.0,L18
MOV 64H,#02H
L18: JB P2.1,L19
ORL A,#08H
L19: JB P2.2,L20
ORL A,#040H
L20: JB P2.3,L21
ORL A,#080H
L21: MOV SECOND3,A
JB P2.4,L22
MOV A,SECOND4
ORL A, #04H
MOV SECOND4,A
L22: JB P2.5, L23
MOV 65H,#08H
L23: SETB P2.6
LCALL DELAY2
JNB P2.5,L231
MOV A,65H
ANL A,#08H
JZ L231
MOV A,SECOND4
ORL A,#08H
MOV SECOND4,A
L231: JNB P2.0,L232
MOV A,64H
ANL A,#02H
JZ L232
MOV A,SECOND3
ORL A,#02H
MOV A,SECOND3
L232: MOV 65H,#00H
MOV 64H,#00H
MOV P2,#07FH
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2
MOV A,SECOND4
JB P2.4,L241
ORL A,#02H
L241: JB P2.3,L24
ORL A,#01H
L24: MOV SECOND4,A
MOV A,SECOND3
JB P2.1,L25
ORL A,#010H
L25: JB P2.2,L26
ORL A, #020H
L26: MOV SECOND3,A
NOP
LJMP MAIN1
NOP
LJMP MAIN1
NOP
AJMP 0000H
DELAY2: ;延时去抖动子程序
MOV R5,#01H
L70:
MOV R6,#0FAH
L80:
DJNZ R6,L80
DJNZ R5,L70
RET
DLIM: MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1: NOP
NOP
DJNZ 44H,DL1
DJNZ 43H,DL2
RET
DISPLAY: PUSH ACC
PUSH PSW
MOV TL0,#0e0H ;wait how long to display (20ms)
MOV TH0,#0b0H
DIS2: MOV A,SECOND1
CPL A
MOV P1,A
MOV P1,A
CLR P3.0
LCALL DLIM
SETB P3.0
MOV A,SECOND2
CPL A
MOV P1,A
CLR P3.1
LCALL DLIM
SETB P3.1
MOV A,SECOND3
CPL A
MOV P1,A
CLR P3.2
LCALL DLIM
SETB P3.2
MOV A,SECOND4
CPL A
MOV P1,A
CLR P3.3
LCALL DLIM
SETB P3.3
SETB TR0
POP PSW
POP ACC
NOP
NOP
RETI
NOP
NOP
AJMP MAIN1
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -