scan:
clr p_ia_c
set p_ia ;A口置一
set p_ia_c ;A输入口
$1:
mov a,R_Nc ;C初始为0FEH然后依次左移一位
mov p_oc,a ;C输出口
$2:
mov a,p_ia ;将A口的实际值给入累加器
sub a,R_Fnum ;R_Fnum自然数初始值0FEH
sz z ;R_Lie列数,R_Hang行数。R_Lie,R_Hang初始都为0
jmp loop ;跳到loop中从而获得10进制的按键值
rl R_Fnum
inc R_Lie
mov a,R_Lie
sub a,8
snz z
jmp $2
clr R_Lie ;扫完8列将列清0
rl R_Nc
inc R_Hang
mov a,R_Hang
sub a,8
snz z
jmp $1
clr R_Hang ;扫完8行将行清0
ret
loop:
rl R_Hang
rl R_Hang
rl R_Hang
mov a,R_Hang ;行乘以8然后加列值即为按键的值(0到64)
add a,R_Lie
rr R_Hang ;乘完后恢复行的值
rr R_Hang
rr R_Hang
jmp l_led_num_dispose ;跳到将10进制的数处理成个位十位并查表获得对应数码管的值
ret
现在想加一个判断按键按下与抬起,按下时显示某一个键值,抬起后显示的是键值加上80,该怎么修改,大家帮帮忙,谢谢(显示部分在主循环里,这里没写) |