用这个矩阵键盘做单片机输入,插 P1 口的 P1.0~P1.6。
想问的是,当:
按下 1 键 P0 口的 P0.0 输出高电平;
按下 2 键 P0.1 输出高电平;
……
一直到 8 键就可以了。
还有一个要求,当按下一个键时延时5秒并锁住其它按键,5秒之后回到起点。用汇编语言
;=====================================================
;如下即可:
ORG 0000H
START:
MOV P0, #255
MOV P1, #255
CLR P1.0
NOP
JNB P1.4, K1
JNB P1.5, K2
JNB P1.6, K3
MOV P1, #255
CLR P1.1
NOP
JNB P1.4, K4
JNB P1.5, K5
JNB P1.6, K6
MOV P1, #255
CLR P1.2
NOP
JNB P1.4, K7
JNB P1.5, K8
; JNB P1.6, K9
SJMP START
K1: CLR P0.0
SJMP DELAY
K2: CLR P0.1
SJMP DELAY
K3: CLR P0.2
SJMP DELAY
K4: CLR P0.3
SJMP DELAY
K5: CLR P0.4
SJMP DELAY
K6: CLR P0.5
SJMP DELAY
K7: CLR P0.6
SJMP DELAY
K8: CLR P0.7
DELAY:
MOV R5, #10
DJNZ R7, $
DJNZ R6, $ – 2
DJNZ R5, $ – 4
LJMP START
END
假如需求按键操控输出高电平,把上述程序中的 CLR,全改成 SETB。
再把: MOV P0, #255
改成: MOV P0, #0