51单片机汇编语言的led亮灯编程题求解,必采纳?

实现左右拉幕灯功能,即第一次从右向左只亮一个灯,第二次亮两个灯,第三次三个,依次直至八个灯全亮
刚学大概思路编的如下 具体不知道怎么改 求根据这个思路在程序基础上改正
LED1 BIT P0.7
KEY1 BIT P3.2
LJMP MAIN
ORG 0030H
MOV R1,#1;亮灯个数
MAIN:MOV P0,#0FFH
CHECK: JB KEY1,CHECK
MOV P0,#11111111B
MOV R2,#8
LOOP: INC R1; 每次亮灯个数r1+1
MOV A,P0
CLR C
RRC A
MOV P0,A ;亮灯
LCALL DL;,跳到延迟程序 每次亮间延迟一会
DJNZ R2,LOOP;到r2(8次)循环结束
LJMP CHECK
ORG 0100H
DL: MOV R7,#100 ;延迟程序
L1:MOV R6,#100
L2:MOV R5,#60
L3:NOP
NOP
DJNZ R5,L3
DJNZ R6,L2
DJNZ R7,L1
RET
END

       LED1 BIT P3.7    ; 程序没有改动,为了配合仿真图只改了端口。

       KEY1 BIT P3.2

       LJMP MAIN

       ORG 0030H

       MOV R1,#1 ; 亮灯个数

MAIN:  MOV P1,#0FFH

CHECK: JB KEY1,CHECK

       MOV P1,#11111111B

       MOV R2,#8

LOOP:  INC R1 ; 每次亮灯个数r1+1 

       MOV A,P1 

       CLR C

       RRC A

       MOV P1,A ; 亮灯

       LCALL DL ; 跳到延迟程序 每次亮间延迟一会

       DJNZ R2,LOOP ; 到r2(8次)循环结束

       LJMP CHECK


       ORG 0100H

DL:    MOV R7,#100 ; 延迟程序

L1:    MOV R6,#100

L2:    MOV R5,#60

L3:    NOP

       NOP

       DJNZ R5,L3

       DJNZ R6,L2

       DJNZ R7,L1

       RET

       END

温馨提示:答案为网友推荐,仅供参考
相似回答