这段程序我想实现的是51单片机控制8个LED灯来回滚动,结果为什么protues仿真出来就一直是流水灯的?

2025-02-23 16:47:40
推荐回答(2个)
回答1:

你的这一段“MAIN:
MOV P1,A
LCALL DELAY
LOOP1:
RL A
INC R1
AJMP MAIN”有点问题,这一段实际上已经构成了循环,运行到INC R1处时,程序回到MAIN处,累加器内数据已经左移了一位,而R1内数据加1,当再次运行到RL A 处,再次左移一位,R1内数据加1,程序又回到MAIN.后面的程序就没有运行。改成下面的试试,我在单片机实验板上已经实现,是来回滚动的。

ORG 00H

START:
MOV R1,#0
MOV A,#00H
MOV P2,A
MOV A,#01H

LOOP1:
RL A
INC R1
MOV P2,A
LCALL DELAY
CJNE R1,#7, LOOP1
LOOP2:
RR A
DEC R1
MOV P2,A
LCALL DELAY
CJNE R1,#0,LOOP2
AJMP START
DELAY:
MOV R2,#0FFH
D1:
MOV R3,#0FFH
D2:
DJNZ R3,D2
DJNZ R2,D1
RET
END

回答2:

应该是把数据付给P0口吧,51单片机一般用P0口控制led数码管。个人观点