51单片机,汇编语言,流水灯问题,请高手赐教

本人初学单片机,用的是汇编语言,怎么才能写出一个让8个流水灯依次跑动一圈后,然后第一个个灯常亮,再从第二个灯开始跑,跑一圈后第二个灯常亮,再从第三个灯开始跑,跑一圈后第三个灯常亮,一直到第八个灯为止,然后再续个熄灭!一直找不到思路,只能请教大家了,如果能给我一个流程图,小的不胜感激!

第1个回答  2013-05-26
ORG 0000H
LJMP START
ORG 0080H
START: MOV R7,#08H
MOV R4,#0FFH
PPP1: MOV R6,#7FH
MOV A,R7
MOV R5,A
PPP: MOV A,R6
RL A
MOV R6,A
ANL A,R4
MOV P1,A
MOV R0,#0FFH ;延时
MOV R1,#0FFH
PPP2: DJNZ R1,$
DJNZ R0,PPP2
DJNZ R5,PPP
MOV A,R4
CLR C
RRC A
MOV R4,A
DJNZ R7,PPP1
CLR A
CPL A
MOV P1,A
MOV R0,#0FFH ;延时
MOV R1,#0FFH
PPP3: DJNZ R1,$
DJNZ R0,PPP3
SJMP START
END
仿真通过本回答被提问者采纳
第2个回答  2013-05-26
汇编语言的语法我忘了,所以写不出来了,但是我可以告诉你大概思路。流水灯其实就是循环移位,就是某一位不断的移位,移到哪一位,哪个灯就亮了,然后还得应用延时程序,这样才能控制亮灭的时间。
51的话,汇编写就太难了,还是C语言的吧,推荐你看看郭天祥的十天学会单片机,挺好的
第3个回答  2021-05-11

花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,