这个很简单
;********************************************************************************
;*标题:伟纳电子ME300B单片机开发系统演示程序-矩阵键盘数码管显示键值*
;*文件:WL031.asm*
;*日期:-3-20*
;*版本:1.0*
;*作者:gguoqing*
;*邮箱:*
;*网站:*
;********************************************************************************
;*描述:*
;*矩阵键盘数码管显示键值*
;**
;*矩阵键盘定义:*
;*P1.0-P1.3为列线,P1.4-P1.7为行线*
;**
;**
;********************************************************************************
;*【版权】Copyright(C)伟纳电子AllRightsReserved*
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*
;********************************************************************************
RELAYEQUP1.3
BEEPEQUP3.7
;------------------------------------------------------
ORG0000H
JMPMAIN
;------------------------------------------------------
MAIN:MOVSP,#60H
MOV30H,#00H
LOOP1:
CALLKEY_IN
CALLKEY_PLAER
JMPLOOP1
;-----------------------------------------------------
KEY_IN:MOVP1,#0F0H;置列线为0,行线为1
MOVA,P1
ANLA,#0F0H
MOVB,A
MOVP1,#0FH;置列线为1,行线为0
MOVA,P1
ANLA,#0FH
ORLA,B;高四位与低四位重新组合
CJNEA,#0FFH,KEY_IN1;0FFH为末按键
RET
KEY_IN1:MOVB,A
MOVDPTR,#KEYTABLE
MOVR3,#0FFH;
KEY_IN2:INCR3
MOVA,R3
MOVCA,+DPTR
CJNEA,B,KEY_IN3
MOVA,R3;找到,取顺序码
MOV30H,A
CALLBEEP_BL
RET
KEY_IN3:CJNEA,#0FFH,KEY_IN2;末完,继续查
RET;0FFH为结束码
;----------------------------------------------
;蜂鸣器响一声子程序
;----------------------------------------------
BEEP_BL:
MOVR6,#100
BL1:CALLDEX1
CPLBEEP
DJNZR6,BL1
MOVR5,#25
CALLDELAY
RET
DEX1:MOVR7,#180
DEX2:NOP
DJNZR7,DEX2
RET
DELAY:;延时R5×10MS
MOVR6,#50
DELAY1:MOVR7,#100
DJNZR7,R6,DELAY1
DJNZR5,DELAY
RET
;-----------------------------------------------------
KEYTABLE:
DB0EEH,0EDH,0EBH,0E7H,0DEH;0,1,2,3,4,顺序码
DB0DDH,0DBH,0D7H,0BEH,0BDH;5,6,7,8,9,
DB0BBH,0B7H,07EH,07DH,07BH;A,B,C,D,E,
DB077H,0FFH;F0FF为结束码
;-----------------------------------------------------
;键值显示子程序
;使用一个数码管显示
;-----------------------------------------------------
KEY_PLAER:
MOVA,30H
MOVDPTR,#TAB;取段码表地址
MOVCA,+DPTR;查显示数据对应段码
MOVP0,A;段码放入P0口
CLRP2.7;第一个数码管亮
RET
;-----------------------------------------------------
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88h,83h,0c6h,0a1h,86h,8eh
;-----------------------------------------------------
END