本人新手,有一个想法,实现了,跟大家讨论一下~
main: clr p1.4
loop: clr A
cpl A
mov p3, #0F0H
mov A, p3
ORL A, #0FH
mov p3, #0FH
mov r3, p3
xch A, r3
ORL A, #0F0H
ANL A, r3
here: mov p0, A
ajmp loop
end
程序先向p3写0xF0,读P3(其实要的是P3的高4位),此时获取哪一行的按键被按下(如果按键按下,相应的行变为0)。
然后向P3写0x0F,读P3(其实要的是P3的第4位),此时获取哪一列的按键被按下(如果按键按下,相应的列变为0)。
在here标签处,A的高四位标记,按键的行。 (0011表示第0、1行被按下。0101表示第0、2行被按下)。A的低四位,同理。
注,没有防抖。。。
|