📄 prg.asm
字号:
NAME ROWSCAN ;反转法
KEY_ROW1 equ 0EFh
KEY_ROW2 equ 0DFh
KEY_ROW3 equ 0BFh
KEY_ROW4 equ 07Fh
ORG 0000H
ljmp START
ORG 0100H
START: mov R0,#00 ;行号
mov R1,#00 ;列号
;读列号
mov p1,#0FH
nop
mov A,p1
anl A,#0Fh
c1: cjne A,#0EH, c2
mov R1,#1
jmp row
c2: cjne A,#0DH, c3
mov R1,#2
jmp row
c3: cjne A,#0BH, c4
mov R1,#3
jmp row
c4: cjne A,#07H, START
mov R1,#4
;读行号
row: mov p1,#0F0H
nop
mov A,p1
anl A,#0F0H
row1: cjne A,#0E0H, row2
mov R0,#1
jmp count
row2: cjne A,#0D0H, row3
mov R0,#2
jmp count
row3: cjne A,#0B0H, row4
mov R0,#3
jmp count
row4: cjne A,#070H, START
mov R0,#4
;(R0 - 1) * 4 + (R1 - 1)
count: dec R0
dec R1
mov A,R0
mov B,#4
mul AB
add A,R1
ksnew: mov DPTR,#keycodes
movc A,@A+DPTR
mov P0,A
nop
nop
ksend: ljmp START
keycodes: db 3FH,06H,5BH,4FH
db 66H,6DH,7DH,07H
db 7FH,6FH,77H,7CH
db 39H,5EH,79H,71H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -