本人初學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循環點亮。按本人粗淺的認識,兩個程序運行的效果應該不足以造成肉眼能分辨的差異,其中原因請大家多多指教。 |