📄 scankey.asm
字号:
#include ht48c10.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 ; ISR 地址初始
jmp start
start: ; 程序开始
clr pbc ; 设置PB口为输出口
mov a, 0f0h ;(1) ; 设置PA高4位为输入口
; 设置PA低四位为输出口
mov pac, a ;
clr pa ; 清PA 口
set pb ; 清PB 口
keyloop: ; 键扫描循环
mov a, 0feh ;(2) ;扫描第一行是否被按下
mov matrix, a ; 将第一行的代码送matrix
mov pa, a ; 输出扫描码到PA 口
mov a, pa ; 读入PA口 的状态到ACC
xor a, 0feh ;屏蔽高四位,取出键所在的列
sz acc ; 第一行是否有键按下
jmp get_key ;有键按下跳到读键值
mov a, 0fdh ;(2) ; 扫描第二行是否被按下
mov matrix, a ; 将第二行的代码送matrix
mov pa, a ;
mov a, pa ;
xor a, 0fdh ;
sz acc ;
jmp get_key ;
mov a, 0fbh ;(2) ; 扫描第三行是否被按下
mov matrix, a ; 将第三行的代码送matrix
mov pa, a ;
mov a, pa ;
xor a, 0fbh ;
sz acc ;
jmp get_key ;
mov a, 0f7h ;(2) ; 扫描第四行是否被按下
mov matrix, a ; 将第三行的代码送matrix
mov pa, a ;
mov a, pa ;
xor a, 0f7h ;
sz acc ;
jmp get_key ;
jmp keyloop ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -