下列程序,已经调试成功.
ORG 0000H
JMP START
START:
MOV 30H, #0
MOV 31H, #0
MOV 32H, #0
MOV 33H, #0
;----------------------------
M_LOOP:
CALL DISP
MOV P3, #0FH
MOV A, P3 ;读入按键信息.
CPL A
ANL A, #0FH
JZ M_LOOP ;没有按键就循环显示.
;--------------------
CALL DISP ;延时消抖.
MOV P3, #0FH
MOV A, P3
CPL A
ANL A, #0FH
JZ M_LOOP ;再次确认.
MOV B, #1
JB ACC.0, J1 ;分支.
JB ACC.1, J2
JB ACC.2, J3
JB ACC.3, J4
JMP M_LOOP
;------------------下面计算加1234
J4: INC B
J3: INC B
J2: INC B
J1: MOV A, #2FH
ADD A, B
MOV R0, A
MOV A, @R0
ADD A, B
MOV B, #8
DIV AB
MOV @R0, B
;------------------下面等待按键释放.
J_J:
CALL DISP
MOV P3, #0FH
MOV A, P3
ORL A, #0F0H
CPL A
JNZ J_J
JMP M_LOOP
;------------------下面是显示程序
DISP:
MOV R0, #30H
MOV R2, #10H
D_LOOP:
MOV A, @R0
INC R0
ADD A, #(D_TAB - $ - 3)
MOVC A, @A + PC
MOV P3, #0FH
MOV P1, A
MOV P3, R2
CALL DELAY
MOV A, R2
RL A
MOV R2, A
CJNE R2, #1, D_LOOP
RET
;----------------------------
D_TAB:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H
DB 80H, 90H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH, 0FFH ;FF是空白的代码.
;---------------------------------------
DELAY:
MOV R6, #20
D1: MOV R7, #250
DJNZ R7, $
DJNZ R6, D1
RET
;---------------------------------------
END
仿真效果,可见插图。
你到底要原理图,还是要程序设计、还是要方案设计!
"其值大于8后就减8后显示",那么应该一个数码管就可以显示吧,不知道你用四个数码管分别显示什么?