本人新手,有一個想法,實現了,跟大家討論一下~
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的低四位,同理。
注,沒有防抖。。。
|