2×2行列式鍵盤(pán)電路設(shè)計(jì)并編寫(xiě)鍵盤(pán)掃描子程序?qū)嵗?/h1>
1)2×2行列式鍵盤(pán)電路如圖所示
圖片1
(2)鍵盤(pán)掃描子程序:
KEY1: ACALL KS1 ;調(diào)用判斷有無(wú)鍵按下子程序
JNZ LK1 ;有鍵按下,轉(zhuǎn)LK1
AJMP KEY1 ;無(wú)鍵按下,返回
LK1: ACALL T12MS ;調(diào)延時(shí)12ms子程序
ACALL KS1 ;查有無(wú)鍵按下
JNZ LK2 ;若有,則為鍵確實(shí)按下,轉(zhuǎn)逐列掃描
AJMP KEY1 ;無(wú)鍵按下,返回
LK2: MOV R4,#00H ;首列號(hào) R4
MOV R2,#FEH ;首列掃描字 R2
LK4: MOV A,R2 ;列掃描字 P1口
MOV P1,A ;使第一列線為0
MOV A,P1 ;讀入行狀態(tài)
JB ACC.0,LONE;第0行無(wú)鍵按下,轉(zhuǎn)查第一行
MOV A,#00H ;第0行有鍵按下,該行首鍵號(hào)#00H A
AJMP LKP ;轉(zhuǎn)求鍵號(hào)
LONE: JB ACC.1,NEXT ;第一行無(wú)鍵按下,轉(zhuǎn)查下一列
MOV A,#02 ;第一行有鍵按下,該行首鍵號(hào)#02 A
LKP: ADD A,R4 ;鍵號(hào)=首行號(hào)+列號(hào)
PUSH ACC ;鍵號(hào)進(jìn)棧保護(hù)
LK3: ACALL KS1 ;等待鍵釋放
JNZ LK3 ;未釋放,等待
POP AC ;鍵釋放,鍵號(hào) A
RET ;鍵掃描結(jié)束
NEXT: INC R4 ;列號(hào)加1,指向下一列
MOV A,R2 ;列掃描字 A
JNB ACC.1,KND ;判斷2列全掃描完?掃描完,轉(zhuǎn)KND
RL A ;沒(méi)掃描完,掃描字左移一位,形成下一列掃描字
MOV R2,A ;掃描字 R2
AJMP LK4 ;掃描下一列
AJMP KEY1 ;全掃描完,返回
MOV A,#FCH ;全掃描字11111100B A
MOV P1,A ;全掃描字 所有行
MOV A,P1 ;讀取列值
CPL A ;取正邏輯,高電平表示有鍵按下
ANL A,#0C0H ;屏蔽低6位,取高2位
RET ;出口狀態(tài)(A)!=0,有鍵按下