单片机流水灯汇编问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 23:22:02
ORG 0000H ;
LJMP MAIN ;
ORG 030H ;
MAIN: MOV P0,#0DBH ;11011011--零为亮
ACALL DELay ;
MOV A ,P0 ;
RL A;
MOV P0, A;
AJMP MAIN ;
delay: mov r7,#255 ;延时子程序
d1: mov r6,#255
d2: djnz r6,d2
djnz r7,d1
ret
end

最后结果只是 2 5灯亮着,也没有动..为什么?哪里出问题了?

循环左移时你没有控制左移的位数,帮你改了一下,自己看看,还有什么不明白的再问吧,我的百度空间也有一些程序,有空可以去看看,ORG 0000H ;
LJMP MAIN ;
ORG 030H ;
MAIN: MOV P2,#0DBH ;11011011--零为亮
ACALL DELay ;
start:MOV A ,P0
mov r0,#8 ;
dl: RLc A
MOV P2, A
call delay
djnz r0,dl
cjne r0,#0,start
ajmp main

delay: mov r7,#255 ;延时子程序
d1: mov r6,#255
d2: djnz r6,d2
djnz r7,d1
ret
end

ORG 0000H ;
LJMP MAIN ;
ORG 030H ;
MOV P0,#0DBH ;11011011--零为亮
;
MAIN: MOV A ,P0 ;
RL A;
MOV P0, A;
ACALL DELay
AJMP MAIN ;
delay: mov r7,#255 ;延时子程序
d1: mov r6,#255
d2: djnz r6,d2
djnz r7,d1
ret
end

程序循环部分不能含有赋初值的语句(MOV P0,#0DBH ;11011011),否则
达不到流水效果 只能两个灯来回闪、
程序改正如下
ORG 0000H