单片机跑马灯程序

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:04:59
P1作为输出口,P1.0至P1.7接8个发光二极管,要求编写程序实现如下功能:8个发光二极管依次亮灭并循环延时0.1S(f=12mHZ).有哪位高手帮忙编一下啊?谢了!用汇编,我是新手C语言不会

org 0000h
ajmp start
org 0030h
start:
mov a,#0ffh ;
clr c ;
mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop ;反复循环
mov r2,#07h ;再往回循环。
loop1: rrc a ;带进位右移
mov p1,a ;输出到P1口。
call delay ;延时一段时间
djnz r2,loop1 ;反复循环
jmp start ;重新开始

delay: mov r3,#20 ;延时子程序
d1: mov r4,#20
d2: mov r5,#248
djnz r5,$
djnz r4,d2
djnz r3,d1
ret
end

下面是我写的一个源程序,你拿去用吧,我都编译并在实验板上下载通过了,呵呵,如果有什么要交流的qq我,455415381,

;功能说明:实现p1口输出循环右移的led流水灯,100ms延时

START: MOV R0,#8
MOV A,#01111111B
LOOP: MOV P1,A
ACALL DELAY
RR A
DJNZ R0,LOOP
JMP START

DELAY: MOV R5,#10
DLY1: MOV R6,#100
DLY2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DLY2
DJNZ R5,DLY1

RET

END