求一个51单片机的流水灯(从1-8的...)的汇编程序???

2024-12-04 16:00:02
推荐回答(5个)
回答(1):

哈哈,很简单,

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
这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表比较简洁

回答(2):

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,也就是左右左循环,这个是最容易看懂的!还有其他的,你如果要我还可以给你。

回答(3):

八个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

回答(4):

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

回答(5):

P3.2-P3.7的LED一个一个……--这才6个灯。
(从1-8的...),……--这是8个灯。
--
这程序,谁都没有办法编写。
楼上几位给出程序的,都是“大忽悠”赵本山的徒弟,组团卖拐呢。
只有“回答者: 怎能平庸”例外。