哈哈,很简单,
ORG 00H
MAIN:MOV P3,#00H
SETB P3.2
CALL DELY
CLR P3.2
SETB P3.3
CALL DELY
CLR P3.3
SETB P3.4
CALL DELY
.........按照上面省略,你自己补全。
AJMP MAIN
DELY:延时省略。
END
这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表比较简洁
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:MOV A,#0FFH
LOOP:MOV P1,A
CLR P1.0
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.7
MOV P1,A
CLR P1.7
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.0
SJMP MAIN
DELAY:MOV R7,#250
DEL:MOV R6,#250
NOP
NOP
DJNZ R6,$
DJNZ R7,DEL
RET
END
这个我下午才在试验箱上做了,从0到7。再从7到0,也就是左右左循环,这个是最容易看懂的!还有其他的,你如果要我还可以给你。
八个LED灯,P3.0~P3.7才行,程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R2,#8
MOV A,#0FEH
LOOP:
MOV P3,A
CLR C
RLC A
LCALL DELAY
DJNZ R2,LOOP
SJMP MAIN
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END
ORG 0030H
N1:MOV P3,#11111011B; // P3.2先亮
N2:LCALL YS0_5S; // 延时0.5S
MOV A,P3;
SETB CY;
RLC A; // 带进位左移
JNC N1; // 若CY=0则跳往N1
MOV P3,A;
SJMP N2;
YS0_5S:MOV 40H,#10;
S1: MOV 41H,#200;
S2: MOV 42H,#250;
S3: DJNZ 42H,S3;
DJNZ 41H,S2;
DJNZ 40H,S1;
RET
END
P3.2-P3.7的LED一个一个……--这才6个灯。
(从1-8的...),……--这是8个灯。
--
这程序,谁都没有办法编写。
楼上几位给出程序的,都是“大忽悠”赵本山的徒弟,组团卖拐呢。
只有“回答者: 怎能平庸”例外。