实在搞不定了,希望大神们能指教一下
矩阵键盘8*8扫描程序显示键值程序现在已经搞定,现在又有一个新的问题就是判断按键的按下与抬起问题。要求按下去且不松开则显示键值,松开后显示的内容为键值加上80。怎么去判断按键的抬起呀?搞了好长时间了,前辈指教一下吧。下面是我的扫描程序。、
L_scan:
clr p_ia_c
set p_ia ;A口置一
nop
nop
nop
set p_ia_c ;A输入口
$1:
clr R_num
mov a,R_Nc ;C初始为0FEH然后依次左移一位
mov p_oc,a ;C输出口
$2:
mov a,p_ia
mov R_Lie,a
$3:
snz R_Lie.0 ;关键是这里,这里是判断按下去了就跳到loop中计算得到键值。否则继续扫描
call loop ;R_lie是个变量初值是1换成二进制也就是8个1,,然后分别判断每一位(移位的方法),哪位
rr R_lie ;哪位变成0了则那一位就按下了,R_num表示移位的次数,也就是按下的列值。
inc R_num
mov a,R_num
sub a,8
snz c
jmp $3
clr R_num
rl R_Nc
inc R_Hang
mov a,R_Hang
sub a,8
snz c
jmp L_scan
clr R_Hang
ret
loop:
mov a,R_Hang
rl acc
rl acc
rl acc
add a,R_num
jmp l_led_num_dispose
ret