51单片机汇编控制流水灯

p1接8个灯是竖着排。共阴极接法

效果是像俄罗斯方块一样从上往下一个个的亮,要有俄罗斯方块的叠加效果
试过rlc发现只是左移左边的,右边的不能改动
最好些出程序,我慢慢研究
好像是叫流水效果

用RL A 他是左移补零的,你RLC A 是把最高位放在PSW的C中,再左移,C再放在最低位.而RL是不经过C的。左移后低位补零,你把RLC换成RL就可以了追问

http://v.youku.com/v_show/id_XMjM2MDQxODE2.html?tpa=dW5pb25faWQ9MTAzMDkzXzEwMDAwMl8wMV8wMQ第35秒开始
好像是叫流水效果

追答

跑马灯就是一个灯亮过去(一直只有一个灯亮),流水灯就是亮了一个再亮下一个,建议学C编程,汇编不好学,而且进度慢,我编了快一年的汇编一接触C就不想用汇编了,C语言比移植汇编好移植多了,特别是做多字节乘除,用汇编太烦了。汇编虽然精简,但现在单片机资源多,容量大,就不在乎了。汇编只要懂一点在时间要求短,经常重复执行的地方用一下。

追问

可以把C和汇编写在一个程序里?

追答

可以,加上pragma asm
#pragma asm
MOV R3,#08H
......
MOV R4,A
#pragma endasm

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-07
;
ORG 0000H
LJMP START
ORG 0030H
START:
MOV A, #0FEH
MOV R2, #8
OUTPUT:
MOV P1, A
RL A ;这是左移
dec a ;------------------加上这行,就不灭了。
ACALL DELAY
DJNZ R2, OUTPUT
LJMP START

DELAY:
MOV R6, #0
MOV R7, #0
DELAYLOOP: ;延时程序
DJNZ R6, DELAYLOOP
DJNZ R7, DELAYLOOP
RET
END追问

我是想要这个效果 http://v.youku.com/v_show/id_XMjM2MDQxODE2.html?tpa=dW5pb25faWQ9MTAzMDkzXzEwMDAwMl8wMV8wMQ第35秒开始

追答

第35秒开始的,应该叫做堆砌效果,更准确一些。

看看我的百度空间吧,有不少这样的东西,包括“呼吸灯”。

第2个回答  2013-11-06
;8个LED叠加点亮
MAIN: MOV R3,#8 (8个LED)
MOV R2,#0 (计数器)
MOV A, #1 (点亮LED1)
MA1: MOV P1,A
ACALL DELAY (延时)
MOV R2,A (保存)
RL A (左移)
OR A,R2 (再装配)
DJNZ R3,MA1
JMP MAIN
END追问

我是想要这个效果 http://v.youku.com/v_show/id_XMjM2MDQxODE2.html?tpa=dW5pb25faWQ9MTAzMDkzXzEwMDAwMl8wMV8wMQ第35秒开始

相似回答