本人初学者,求大侠帮忙调试以下简短的单片机汇编程序(在6个数码管上滑动显示8位数字,例:1,12,123,...

2025-02-22 23:57:06
推荐回答(2个)
回答1:

第8 行:ADD只有对寄存器A操作,没有对B。
第9 行:MOV A,@B,#NUM ; MOV 指令只能一个操作数,如MOV A,#NUM 。
第19行:CJNE 只能用于A,如CJNE A,#6,ST0
第25行:这里应该是DJNZ R3,DLY?
第27行:NUM后面要加 :号。
你还要多看一些基本的例子,试着自己先写,比如先写一位数码管显示。
比如 ,MOV A,@B,#NUM
MOV P2,A
是要送显示码吧,要写成:
MOV DPTR,#NUM
MOV A,#0 ;假设要显示0
MOV A,@A+DPTR
MOV P2,A
。。。。

回答2:

试试看:
ORG 00H
START:
MOV R0, #0
ST0:
MOV R1, #0FEH
MOV B, #0
ST1:
MOV A, R0
ADD A, B
MOV DPTR, #NUM
MOVC A, @A+DPTR
MOV P2, A
MOV P1, R1
LCALL DLY
MOV P1, #0FFH
MOV A, R1
RL A
MOV R1, A
INC B
CJNE B, #6, ST1

INC R0
CJNE R0, #8, ST0
SJMP START

DLY:
MOV R3, #33
DLY1: NOP
DJNZ R3, DLY1
RET
NUM:
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 11111100B,11110100B,11110010B
DB 11111110B,01100110B,11111100B
DB 11100000B,10110110B
END