;30H存列號(hào)31H存行號(hào)32H裝鍵值,要改鍵盤(pán)的值排列可以通過(guò)改變后面TAB的值。;程序構(gòu)思,先給鍵盤(pán)的接入口p1賦0F0H,通過(guò)檢測(cè)p1.4-p1.7那個(gè)出現(xiàn)低電平,舉例如果是p1.4那列有鍵按
本文引用地址:http://m.butianyuan.cn/article/201611/320385.htm;下則p1.4出現(xiàn)低電平,則跳到y(tǒng)0得到列號(hào)為0,接下來(lái)分別給p1.4-p1.7賦0,看什么時(shí)候p1.4在那出現(xiàn)低電
;平,則可以得到行號(hào),最終計(jì)算行號(hào)*4+列號(hào)就可以得到鍵盤(pán)的值,如果要修改矩陣鍵盤(pán)鍵值排列,則可以
;通過(guò)查表,計(jì)算出的前期鍵值只是作為一個(gè)地址。不知表述是否清楚了
SCAN:MOV P1,#0F0H ;鍵盤(pán)掃描程序
JNB P1.4,Y0 ;判斷列
JNB P1.5,Y1
JNB P1.6,Y2
JNB P1.7,Y3
SJMP SCAN
Y0:MOV 30H,#00H ;賦列號(hào)
MOV P1,#0FEH
JNB P1.4,X0
MOV P1,#0FDH
JNB P1.4,X1
MOV P1,#0FBH
JNB P1.4,X2
MOV P1,#0F7H
JNB P1.4,X3
Y1:MOV 30H,#01H
MOV P1,#0FEH
JNB P1.5,X0
MOV P1,#0FDH
JNB P1.5,X1
MOV P1,#0FBH
JNB P1.5,X2
MOV P1,#0F7H
JNB P1.5,X3
Y2:MOV 30H,#02H
MOV P1,#0FEH
JNB P1.6,X0
MOV P1,#0FDH
JNB P1.6,X1
MOV P1,#0FBH
JNB P1.6,X2
MOV P1,#0F7H
JNB P1.6,X3
Y3:MOV 30H,#03H
MOV P1,#0FEH
JNB P1.7,X0
MOV P1,#0FDH
JNB P1.7,X1
MOV P1,#0FBH
JNB P1.7,X2
MOV P1,#0F7H
JNB P1.7,X3
X0:MOV 31H,#00H ;賦行號(hào)
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X1:MOV 31H,#01H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X2:MOV 31H,#02H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
X3:MOV 31H,#03H
ACALL DELAY
MOV P1,#0F0H
LJMP JISUAN
JISUAN:MOV A,31H
MOV B,#04H
MUL AB
ADD A,30H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV 32H,A
RET
delay:MOV R4,#0C5H ;鍵掃延時(shí)
DEL1:MOV R5,#43H
DEL0:MOV R6,#10H
DJNZ R6,$
DJNZ R5,DEL0
DJNZ R4,DEL1
RET
TABLE:DB 01H,02H,03H,04H,05H,06H,07H,08H,09H,00H,0AH,0BH,0CH,0DH,0EH,0FH ;鍵盤(pán)值
評(píng)論