AT8951单片机,关于一个简单的这流水灯程序,用汇编语言的

AT8951单片机,关于一个简单的这流水灯程序,用汇编语言的。
要求是这样的:
在P1口接八个灯,运行后让八个灯从左到右依次点亮,然后再从右到左依次点亮,这样循环下去。延时时间一秒左右或是随便都行。
最新回答
安笙凉城

2024-09-06 11:31:29

延时根据单片机调整.

ORG 00H
MOV P2,#80H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP
MOV R2,#7
LOOP1:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
xx会魔法

2024-09-06 11:38:35

ORG 0030H
MAIN: MOV P1,#01H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#01H
ACALL DELAY
AJMP MAIN

DELAY: MOV R0,#250
D1: MOV R1,#250
DJNZ R1,$
DJNZ R0,D1
RET
END

这是当时学51的时候用的流水灯的程序,延时时间是乱定的,如果要精确地延时1s需要根据机器周期计算,修改delay函数中的数值就好了
这个程序时赋值的,最简单易懂也最麻烦的,按照这个你可以试试左移右移指令的程序,会简单的多
希望能有帮助
沉梦听雨

2024-09-06 16:17:19

zhzht_2008 你这不是帮人,是害人。:D