求一个单片机的关于IF ELSE IF语句 的一个闪灯的小代码编写,追分

要求,P1口接8个灯,1到8灯同时点亮一次,然后是1到8依次点亮一次,接着2,4,6,8灯依次点亮一次,其余灯不点亮。2,4,6,8灯依次点亮的这里要求循环3次。然后在循环到开头1到8灯同时点亮那里然后接下去,反复到永远。
好像还要用到, void delay (unsigned char i ) 还有J,k 什么小于2百多的那些语言

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar temp,i,k;

void delay(uint ms)

{

uchar j;

while(ms--)

for(j=0;j<123;j++);

}

void disp1() //P1口接8个灯,1到8灯同时点亮一次

{

P1=0x00;

delay(500);

P1=0xff;

delay(500);

}

void disp2() //   1到8依次点亮一次

{

temp=0xfe;

for(i=0;i<8;i++)

{

P1=temp;

delay(500);

temp=_crol_(temp,1);

}

P1=0xff;

delay(500);

}

void disp3()   //2,4,6,8灯依次点亮的这里要求循环3次

{

temp=0xfd;

for(i=0;i<3;i++)

{

for(k=0;k<4;k++)

{

P1=temp;

delay(500);

temp=_crol_(temp,2);

}

}

}

void main()

{

while(1)

{

disp1();

disp2();

disp3();

}

}

追问

我用软件测试了一下,那个灯闪的好块,能不能在多加点灯的延时啊。我是真不会改

追答

不快呀,隔0.5S的
delay(500)就是500ms,你要改慢,就这个数加大。

追问

QQ给我,我直接问你接下来的疑问

追答

578743933

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-09
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code num[]={0xfd,0xf7,0xdf,0x7f};
uchar code num1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay(uint x)
{
uchar i;
while(x--)
for(i=0;i<100;i++);
}
void main()
{
uchar i,j,a;
while(1)
{
a:P0=0;
delay(2000);
P0=0xfe;
for(i=0;i<8;i++)
{
delay(1000);
P0=num1[i];
delay(500);
}
for(a=0;a<3;a++)
for(j=0;j<4;j++)
{
delay(1000);
P0=num[j];
delay(500);
}
goto a;
}
}
相似回答