加延时程序
#include
//...................................
void delay_ms(uint ms)
{
uint x, y;
for(x=ms; x>0; x--)
for(y=110; y>0; y--);
}
//......................
void main()
{
int i,j;
P0=0x00;
for(i=0;i>=0;i++)
{
switch(j=i%8)
{
case 0:P0=0x01; delay_ms(500);break;
case 1:P0=0x02;delay_ms(500);break;
case 2:P0=0x04;delay_ms(500);break;
case 3:P0=0x08;delay_ms(500);break;
case 4:P0=0x10;delay_ms(500);break;
case 5:P0=0x20;delay_ms(500);break;
case 6:P0=0x30;delay_ms(500);break;
case 7:P0=0x80;delay_ms(500);break;
}
}
}
LED状态切换时间太短,每种状态切换之间要加延时程序。
我分析后认为原因是这样的:
也许这这样的程序能达到你想的目的,但是,由于程序执行太快了,人眼的视觉暂留,所以你观察是很多都亮了,其实它们是分别亮的,只是我们观察不出来.
那么,我建议你在switch之后加一个delay函数,延时约1S吧,这样就能清楚的观察其变化了.
不懂的地方可随时回复我.
希望我的回答能帮助到你.