本人初学C51单片机,在实现流水灯效果时,首先使用如下程序进行控制:
```
#include <reg52.h>
unsigned int a;
void main()
{
while(1)
{
int i=1;
while (i<=256)
{
P1=~i;
a=50000;
while (a--);
i*=2;
}
}
}
```
发现当最下方第8个LED灯亮后,经短暂延迟后最上方第1个LED才点亮。而若使用以下程序:
```
#include <reg52.h>
unsigned int a;
void main()
{
while(1)
{
int i=1,n=1;
while (n<=8)
{
P1=~i;
a=50000;
while (a--);
i*=2;
n++;
}
}
}
```
则无此现象,能正常实现LED循环点亮。按本人粗浅的认识,两个程序运行的效果应该不足以造成肉眼能分辨的差异,其中原因请大家多多指教。 |