求问8个LED流水灯依次循环亮的C语言程序

我用的是PROTUSE做的仿真程序,想让这8个流水灯依次亮 从P0到P7口
要它的C语言程序可以在KEIL C51里面运行的,希望在每句C语言后面有个解释
不用 WHILE和for语句i 高分悬赏
我这里有个程序 希望能有个和它作用相同的程序
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
void main()
{
P0 = 0xFE;
while(1)
{
P0 = _crol_(P0,1);
DelayMS(150);
}
}

第1个回答  2011-09-29
# include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
void delay (uint);
void main ()
{
temp=0xfe;
while(1)
{
P1=temp;
temp=_crol_(temp,1);
delay (500);
}
}

void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
}
不用while,不会 for你可以自己修改一下
第2个回答  2011-09-29
不让用 WHILE和for语句,可以用 goto 代替,并不难。追问

那该怎么写呢?

第3个回答  2011-09-29
你真的很奇怪啊,高单片机、嵌入式的人都知道要用死循环,而死循环里面最好用的是while(1) 当然也有for(;1;)可是你都不用,我不明白为什么呢追问

那好吧···我自己写的就是WHILE 和FOR语句 我想看看能不能用其他语句
那你能不能分享个 谢谢了

追答

我用的while(1) 学C语言最基本的一条里面就是goto能不用就不用,跳来跳去你就晕了,所以还是老老实实的好!!
#include
#define uint unsigned int
void delay_ms(uint uiTime);
void delay_ms(uint uiTime)
{
uint i = 0, j = 0;

for (i = 0; i < uiTime; i++)
{
for (j = 0; j < 112; j ++);
}
}
int main()
{
uint uiLed = 0x01;

while (1)
{
P0 = ~uiLed;

delay(100);

uiLed=uiLed<<1;
}
return 0;
}

追问

貌似在KEIL 中显示有很多错误啊

追答

都什么错误啊

第4个回答  2011-09-29
不知道