这个有查表的方法来做:
;;8051
;;晶体振荡F=12Mhz
;;;
KEY32 REG P3.2
;
ORG 0000H
AJMP MAIN
ORG 0003H
RETI
RETI
ORG 000BH
RETI
ORG 0013H
RETI
RETI
ORG 001BH
RETI
ORG 0023H
RETI
DB C0H ;0 ADRRESS 0024H
DB F9H ;1
DB A4H ;2
DB B0H ;3
DB 99H ;4
DB 92H ;5
DB 82H ;6
DB F8H ;7
DB 80H ;8
DB 90H ;9
MAIN: MOV R0,#7FH ;
CLR A ;
$CL MOV @R0,A ;
DJNZ R0,$CL ;初始化
MOV SP,#60H ;初始化
MOV 20H,#00H ;最开始设定为0
MOV DPTR,#0024H ;指向数据表首地址
;;
$0 JB KEY32,$0
MOV A,20H
INC A
CJNE A,#10D,$1 ;不相当则转移
MOV A,#00H
$1 MOV 20H,A ;保存数据
MOVC A,@A+DPTR
MOV P1,A ;DISPLAY
$2 CALL DLY ;调用延时等待 KEY 起来
JNB KEY32,$2
AJMP $0
;;
DLY: MOV R7,#00 ;DELAY
$A MOV R6,#00 ;
$B DJNZ R6,$B
DJNZ R7,$A
RET
;
温馨提示:答案为网友推荐,仅供参考