单片机C语言LED先奇数后偶数点亮

2025年03月12日 21:25
有2个网友回答
网友(1):

你这样运行的结果是,亮灯顺序编号是:(0.05S)3,(0.25s)5,(0.4s)7,(0.6s)1,(0.8s)4,(1.0s)6,(1.2s)8,(1.4s)2,(1.6s)3,(1.8s)5.............这是这个程序单步运行的结果。。
经试验查证,P0=0xfe;后要加个延迟,要不就一句程序运行时间太短,马上就运行底下的了,导致这句程序没反应出来。底下P0=0xfd,一样要加延迟。
循环只循环三次就够了,因为第一次你已经写出来了,入1已经写了,那就只要3、5、7就可以了。
所以程序可以是:

#include
#include
void delay()
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}

void main()
{
unsigned char i,j;
while(1)
{
P0=0xfe;
delay();
for(i=0;i<3;i++)
{P0=_crol_(P0,2);
delay(); }
P0=0xfd;
delay();
for(j=0;j<3;j++)
{P0=_crol_(P0,2);
delay(); }
}}

网友(2):

void main()
{
unsigned char i, j, k;
while(1) {
k = 0xfe; for(i = 0; i < 4; i++) { P0 = _crol_(k, 2 * i); delay(); }
k = 0xfd; for(i = 0; i < 4; i++) { P0 = _crol_(k, 2 * i); delay(); }
}
}