/* 16矩阵键盘扫描程序
1 2 3 4
5 6 7 8
9 0 A B
C D E F
P3口扫描键盘输入,
P1口控制显示输入值 */
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV A ,#00H
START: MOV P3 ,#0FH
MOV A ,P3
CJNE A ,#0FH ,GO1 /*有键按下就调到GO1*/
ACALL DEL10MS /*延时维持数码管点亮显0*/
AJMP START
GO1: ACALL DEL10MS /*延时10ms去抖*/
CJNE A ,#0FH ,KEY_SCAN /*无键盘按下就返回*/
AJMP START
KEY_SCAN: MOV P3,#0EFH /*键盘扫描 P3.4开始*/
JNB P3.0 ,L1
JNB P3.1 ,L5
JNB P3.2 ,L9
MOV P3 ,#0DFH /*扫描P3.5*/
JNB P3.0 ,L2
JNB P3.1 ,L6
JNB P3.2 ,L0
MOV P3 ,#0BFH /*扫描P3.6*/
JNB P3.0 ,L3
JNB P3.1 ,L7
MOV P3 ,#7FH /*扫描P3.7*/
JNB P3.0 ,L4
JNB P3.1 ,L8
AJMP MAIN
L0: MOV A ,#00H /*显0子程序*/
AJMP GOON
L1: MOV A ,#01H /*显1*/
AJMP GOON
L2: MOV A ,#02H /*显2*/
AJMP GOON
L3: MOV A ,#03H /*显3*/
AJMP GOON
L4: MOV A ,#04H /*显4*/
AJMP GOON
L5: MOV A ,#05H /*显5*/
AJMP GOON
L6: MOV A ,#06H /*显6*/
AJMP GOON
L7: MOV A ,#07H /*显7*/
AJMP GOON
L8: MOV A ,#08H /*显8*/显
AJMP GOON
L9: MOV A ,#09H /*显9*/
AJMP GOON
GOON: MOV DPTR ,#DIS_TAB /*调取数据表数据*/
MOVC A ,@A+DPTR
MOV P1 ,A /*数据由P1显示*/
LJMP MAIN
ORG 0250H
DEL10MS: MOV R5 ,#0BH /*10毫秒延时*/
D1: MOV R6 ,#02H
D2: MOV R7 ,#0FFH
D3: DJNZ R7 ,D3
DJNZ R6 ,D2
DJNZ R5 ,D1
RET
ORG 0300H
DIS_TAB: DB 0C0H,0F9H,0A4H,0B0H,099H /* 数据表显示:0,1,2,3,4 */
DB 092H,082H,0F8H,080H,090H /* 数据表显示:5,6,7,8,9,*/
END
用户163622 2008-8-28 16:48
用户513513 2008-5-5 17:57
用户10652 2008-1-22 12:18