2×2行列式鍵盤(pán)電路設(shè)計(jì)并編寫(xiě)鍵盤(pán)掃描子程序?qū)嵗?/h1>
1)2×2行列式鍵盤(pán)電路如圖所示////////
圖片1
(2)鍵盤(pán)掃描子程序:
KEY1:ACALLKS1;調(diào)用判斷有無(wú)鍵按下子程序
JNZLK1;有鍵按下,轉(zhuǎn)LK1
AJMPKEY1;無(wú)鍵按下,返回
LK1:ACALLT12MS;調(diào)延時(shí)12ms子程序
ACALLKS1;查有無(wú)鍵按下
JNZLK2;若有,則為鍵確實(shí)按下,轉(zhuǎn)逐列掃描
AJMPKEY1;無(wú)鍵按下,返回
LK2:MOVR4,#00H;首列號(hào)R4
MOVR2,#FEH;首列掃描字R2
LK4:MOVA,R2;列掃描字P1口
MOVP1,A;使第一列線(xiàn)為0
MOVA,P1;讀入行狀態(tài)
JBACC.0,LONE;第0行無(wú)鍵按下,轉(zhuǎn)查第一行
MOVA,#00H;第0行有鍵按下,該行首鍵號(hào)#00HA
AJMPLKP;轉(zhuǎn)求鍵號(hào)
LONE:JBACC.1,NEXT;第一行無(wú)鍵按下,轉(zhuǎn)查下一列
MOVA,#02;第一行有鍵按下,該行首鍵號(hào)#02A
LKP:ADDA,R4;鍵號(hào)=首行號(hào)+列號(hào)
PUSHACC;鍵號(hào)進(jìn)棧保護(hù)
LK3:ACALLKS1;等待鍵釋放
JNZLK3;未釋放,等待
POPAC;鍵釋放,鍵號(hào)A
RET;鍵掃描結(jié)束
NEXT:INCR4;列號(hào)加1,指向下一列
MOVA,R2;列掃描字A
JNBACC.1,KND;判斷2列全掃描完?掃描完,轉(zhuǎn)KND
RLA;沒(méi)掃描完,掃描字左移一位,形成下一列掃描字
MOVR2,A;掃描字R2
AJMPLK4;掃描下一列
AJMPKEY1;全掃描完,返回
MOVA,#FCH;全掃描字11111100BA
MOVP1,A;全掃描字所有行
MOVA,P1;讀取列值
CPLA;取正邏輯,高電平表示有鍵按下
ANLA,#0C0H;屏蔽低6位,取高2位
RET;出口狀態(tài)(A)!=0,有鍵按下