简易计分器 ,proteus仿真数码管用的是7SEG-BCD,实物中没有这个现在想换成7SEG-MPX2,但是不知该如何修改程序,希望有大神帮忙看看
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV 50H, #00H ;BCD分值存储单元
MOV 51H, #00H ;HEX分值存储单元(减1操作处理单元)
MOV P3, #00H ;显示初始状态清零
LOOP: MOV P2, #0FFH
MOV A, P2 ;
JNB ACC.3, ADD3
JNB ACC.2, ADD2 ;判断是什么操作
JNB ACC.1, ADD1 ;
JNB ACC.0, SUBB1
SJMP LOOP
ORG 0050H
ADD3: MOV A, 51H
ADD A, #03H ;为减1做准备
MOV 51H, A
MOV A, 50H ;加2程序处理
ADD A, #03H
DA A
MOV P3, A
MOV 50H, A
LCALL DELAY
SJMP LOOP
ADD2: MOV A, 51H
ADD A, #02H ;为减1做准备
MOV 51H, A
MOV A, 50H ;加2程序处理
ADD A, #02H
DA A
MOV P3, A
MOV 50H, A
LCALL DELAY
SJMP LOOP ;加1分分支程序
ADD1: MOV A, 51H
ADD A, #01H ;为减1做准备
MOV 51H, A
MOV A, 50H ;加1程序处理
ADD A, #01H
DA A
MOV P3, A
MOV 50H, A
LCALL DELAY
SJMP LOOP
SUBB1: MOV A, 51H
CJNE A, #00H, DEC1 ;如果减到0,将不再减1
AJMP LOOP
DEC1: DEC A
MOV 51H, A
MOV B, #10
DIV AB
SWAP A
ORL A, B
MOV P3, A
MOV 50H, A
LCALL DELAY
AJMP LOOP
ORG 0200H
DELAY: MOV R5, #10 ;0.2S延时
D1: MOV R6, #40
D2: MOV R7, #248
DJNZ R7, $
DJNZ R6, D2
DJNZ R5, D1
RET
END
|