流水灯累加点亮

来源:百度知道 编辑:UC知道 时间:2024/09/24 16:35:15
实现单片机流水灯累加点亮,这个程序中写了循环,怎么实验时不能循环呢!
ORG 0000H
LJMP ST
ORG 0100H
ST:MOV A,#0FEH
JJ:MOV P1,A
DELAY:MOV R6,#200
LOOP2:MOV R7,#198
NOP
LOOP1:DJNZ R7,LOOP1
DJNZ R6,LOOP2
MOV R1,A
RL A
ANL A,R1
LJMP JJ

END

用C语言变啊,汇编的可读性太差了。
我用c语言编了个,P0引脚控制8个灯累加累减的:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define N 40000
void delay(uint n);
void main()
{
uchar led=0x80;
uchar yiwei=0x40;
while(1)
{
while(1)
{
delay(N);
led=led+yiwei;
P0=led;
if(led==0xff) break;
yiwei>>=1;
}
while(1)
{
delay(N);
led=led-yiwei;
P0=led;
if(yiwei==0x40) break;
yiwei<<=1;
}
}
}

void delay(uint n)
{
uint i;
for(i=0;i<=n;i++);
i=0;
}