📄 switch.asm
字号:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER2
ORG 0030H
MAIN:
MOV SP,#70H
MOV R0,#40H
MOV @R0,#3FH
INC R0
MOV @R0,#06H
INC R0
MOV @R0,#5BH
INC R0
MOV @R0,#4FH
INC R0
MOV @R0,#66H
INC R0
MOV @R0,#6DH
INC R0
MOV @R0,#7DH
INC R0
MOV @R0,#07H
INC R0
MOV @R0,#7FH
INC R0
MOV @R0,#6FH
MOV 38H,#01H
MOV 39H,#03H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV TMOD,#01H
SETB ET0
SETB EA
MOV TH0,#0E6H
MOV TL0,#00H
SETB TR0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JMAIN:
MOV R2,#07FH
WTEMP: MOV R1,#0FFH
TEMP: DJNZ R1,TEMP
DJNZ R2,WTEMP
ACALL KS1 ;调用查键子程序
JNZ DSHAKE
AJMP JMAIN
;消抖子程序
DSHAKE: ACALL DELAY ;调用延时子程序
ACALL KS1
JNZ SCAN
AJMP JMAIN
;扫描查键
SCAN: MOV R2,#01H ;将第0行置一
MOV R4,#00H ;从第0号开始检查
SCAN1: MOV DPTR,#8000H
MOV A,R2
MOVX @DPTR,A
MOVX A,@DPTR
JNB ACC.0,LONE
MOV A,#00H
AJMP LKP
LONE: JNB ACC.1,LTWO
MOV A,#01H
AJMP LKP
LTWO: JNB ACC.2,LTHR
MOV A,#02H
AJMP LKP
LTHR: JNB ACC.3,NEXT
MOV A,#03H
LKP: ADD A,R4
PUSH ACC
SCAN2: ACALL KS1
JNZ SCAN2
POP ACC
AJMP SCANED
NEXT: INC R4
INC R4
INC R4
INC R4
MOV A,R2
JB ACC.3,JMAIN
RL A
MOV R2,A
AJMP SCAN1
SCANED: MOV 4AH,A
MOV A,4AH
CLR CY
SUBB A,#0EH
JNZ JMAIN
MOV A,39H
INC A
MOV 39H,A
AJMP JMAIN
TIMER2: MOV TH0,#0E6H
MOV TL0,#00H
ACALL DPLAY
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DPLAY: MOV A,38H
MOV DPTR,#8000H
MOVX @DPTR,A
MOV A,39H
ADD A,#40H
MOV R0,A
MOV A,@R0
MOV DPTR,#9000H
MOVX @DPTR,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KS1: MOV DPTR,#8000H
MOV A,#0FFH
MOVX @DPTR,A
MOVX A,@DPTR
ANL A,#0FH
RET
DELAY: MOV R2,#18H
DELAY2: MOV R1,#0FFH
DELAY3: DJNZ R1,DELAY3
DJNZ R2,DELAY2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -