单片机中LED灯,有八个LED灯,先从左向右亮,在从右向左亮,然后在先1357亮,在2468亮,求算法???

是在uvision环境下运行的,下面是书上的代码,老师讲在加两个循环就行了,怎么加,求赐教???
ORG 0000H SJMP MAIN
ORG 0040H
MIAN:MOV A,#0FEH
LOOP:MOV P2,A
LCALL D_1s
RL A
AJMP LOOP

D_1s:MOV R6,#100
D10ms:MOV R5,#40
DL:MOV R4,#123
NOP
DJNZ R4,$
DJNZ R5,DL
DJNZ R6,D10ms
RET
END

第1个回答  2013-03-26
ORG 0000H ; 试试
SJMP MAIN
ORG 0040H
MIAN:MOV A,#11111110B
MOV R2, #8
LOOP: MOV P2,A
LCALL D_1s
RL A
DJNZ R2, LOOP
MOV A,#01111111B
MOV R2, #8
LOOP1: MOV P2,A
LCALL D_1s
RR A
DJNZ R2, LOOP1
MOV A,#01010101B
MOV P2,A
LCALL D_1s
MOV A,#10101010B
MOV P2,A
AJMP LOOP

D_1s: MOV R6,#100
D10ms: MOV R5,#40
DL: MOV R4,#123
NOP
DJNZ R4,$
DJNZ R5,DL
DJNZ R6,D10ms
RET
END本回答被提问者采纳
第2个回答  2013-03-26
真心想帮你,但是学太久了,忘了,P2是管脚,RL A 左移,加一个右移,前两个就实现了 至于1357 2468 就用除法判断吧
第3个回答  2013-03-26
去看看书你就会明白希望对你有帮助用C语言会好懂一些还有你的汇编程序没有注释和助记符不太好看懂希望你能养成好习惯
void main (void){ //
while(1){ //无限循环以下程序