📄 scankey.asm
字号:
#include ht48r10a-1.inc
;------------------------------------------------------------------------------------------------------data
data .section 'data'
temp db ?
disp db ?
count1 db ?
mask db ?
matrix db ?
temp1 db ?
temp2 db ?
;------------------------------------------------------------------code
code .section at 0 'code'
org 00h
jmp start
start:
clr pbc
mov a, 0f0h
mov pac, a
clr pa
set pb
keyloop:
mov a, 0feh
mov matrix, a
mov pa, a
mov a, pa
xor a, 0feh
sz acc
jmp get_key
mov a, 0fdh
mov matrix, a
mov pa, a
mov a, pa
xor a, 0fdh
sz acc ;
jmp get_key
mov a, 0fbh
mov matrix, a
mov pa, a
mov a, pa
xor a, 0fbh
sz acc
jmp get_key
mov a, 0f7h
mov matrix, a
mov pa, a
mov a, pa
xor a, 0f7h
sz acc
jmp get_key
jmp keyloop
get_key:
call key_in
mov pb, a
jmp keyloop
key_in proc
mov a, pa ;
mov temp, a
mov temp1, a
mov temp2, a
call delays
get_release:
mov a, pa
and a, 0f0h
xor a, 0f0h
sz acc
jmp get_release
mov a, 0fh
andm a, temp
mov a, temp
mov a, 0
set c
get_row:
rrc temp
snz status.0
jmp get_column1
clr c
add a, 4h
jmp get_row
get_column1:
mov temp, a
mov a, 0f0h
andm a, temp2
swap temp2
mov a, 0h
get_column:
rrc temp2
snz status.0
jmp next
clr c
add a,1h
jmp get_column
next: add a,temp
xor a,0ffh
ret
key_in endp
delays proc
mov a, 0ffh ;
mov count1, a
d1:
sdz count1
jmp d1
ret
delays endp
org 300h ; light up table
dc 0ffh, 0feh, 0fdh, 0fch
dc 0fbh, 0fah, 0f9h, 0f8h
dc 0f7h, 0f6h, 0f5h, 0f4h
dc 0f3h, 0f2h, 0f1h, 0f0h
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -