实现左右拉幕灯功能,即第一次从右向左只亮一个灯,第二次亮两个灯,第三次三个,依次直至八个灯全亮
刚学大概思路编的如下 具体不知道怎么改 求根据这个思路在程序基础上改正
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