📄 scankey.asm
字号:
SET8255: MOV DPTR,#8003H
MOV A,#81H
MOVX @DPTR,A
MOV R1,#6AH
START1:LCALL SCAN
LCALL KEYPLAY
SJMP START1
SCAN:
DIR1: MOV R0,#6AH
MOV R3,#01H
MOV A,R3
DI1: MOV DPTR,#8000H
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#CODE1
MOVC A,@A+DPTR
MOV DPTR,#8001H
MOVX @DPTR,A
ACALL DELAY1
INC R0
MOV A,R3
JB ACC.5,DI11
RL A
MOV R3,A
AJMP DI1
DI11:JMP SCANOUT
CODE1:DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H,73H,3EH
DB 31H,6EH,1CH,23H,40H,03H
DB 18H,00H,00H,00H
DELAY1:MOV R7,#02H
DE1: MOV R6,#0FFH
DE2: DJNZ R6,DE2
DJNZ R7,DE1
SCANOUT:RET
KEYPLAY:
KKEYBORAD:
KEY1: ACALL KS1
JNZ LK1
KEY2: ACALL TM6ms
RET
LK1: ACALL TM12ms
ACALL KS1
JNZ LK2
AJMP KEY2
LK2: MOV R2,#0DFH ;ZU HANG SAOMIAO
MOV R5,#4
MOV R4,#00H
LK4: MOV DPTR,#8000H
MOV A,R2
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
JB ACC.0,LONE ;cha di yi hang
MOV A,#00H ; #00-a
AJMP LKP ;
LONE: JB ACC.1,LTWO
MOV A,#04H
AJMP LKP
LTWO: JB ACC.2,LTHR
MOV A,#08H
AJMP LKP
LTHR: JB ACC.3,NEXT
MOV A,#0CH
LKP: ADD A,R4 ;qiu jian ma
ACALL KEYIN
PUSH ACC
LK3: ACALL KS1 ;deng jian shi fang
JNZ LK3
POP ACC
RET
NEXT: INC R4
MOV A,R2
RR A
MOV R2,A
DJNZ R5,LK4
KEND: RET
KEYIN:
MOV DPTR,#KEYTAB
MOVC A,@A+DPTR
MOV @R1,A
INC R1
RET
KS1: MOV DPTR,#8000H ;判断有无键按下
MOV A,#00H
MOVX @DPTR ,A
INC DPTR
INC DPTR
MOVX A,@DPTR
CPL A
ANL A,#0FH ;A=/0有间暗下
RET
TM12ms: MOV R7,#18
TM: MOV R6,#0FFH
TM6: DJNZ R6,TM6
DJNZ R7,TM
RET
TM6ms: MOV R7,#0CH
TM2: MOV R6,#0FFH
TM62: DJNZ R6,TM62
DJNZ R7,TM
RET
KEYTAB: DB 00H,0FH,0EH,0DH
DB 01H,02H,03H,0CH
DB 04H,05H,06H,0BH
DB 07H,08H,09H,0AH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -