;30H存列號31H存行號32H裝鍵值,要改鍵盤的值排列可以通過改變后面TAB的值。;程序構(gòu)思,先給鍵盤的接入口p1賦0F0H,通過檢測p1.4-p1.7那個出現(xiàn)低電平,舉例如果是p1.4那列有鍵按
本文引用地址:http://www.ex-cimer.com/article/201611/320385.htm;下則p1.4出現(xiàn)低電平,則跳到y(tǒng)0得到列號為0,接下來分別給p1.4-p1.7賦0,看什么時候p1.4在那出現(xiàn)低電
;平,則可以得到行號,最終計算行號*4+列號就可以得到鍵盤的值,如果要修改矩陣鍵盤鍵值排列,則可以
;通過查表,計算出的前期鍵值只是作為一個地址。不知表述是否清楚了
SCAN:MOV P1,#0F0H ;鍵盤掃描程序
JNB P1.4,Y0 ;判斷列
JNB P1.5,Y1
JNB P1.6,Y2
JNB P1.7,Y3
SJMP SCAN
Y0:MOV 30H,#00H ;賦列號
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 ;賦行號
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 ;鍵掃延時
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 ;鍵盤值
評論