各位大哥大姐,帮我看看这个程序有什么问题啊
/*
8个发光管来回流动,
每个管亮100ms,流动时让蜂鸣器发出"滴滴"声。
*/
#include<reg52.h> //
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
void delay(uint z)
{
uint x,y;
while(1)
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar a,i;
while(1)
{
a=0xfe;
for(i=0;i<8;i++)
{
P1=a;
beep=0;
delay(50);
beep=1;
delay(50);
a=_crol_(a,1);
}
a=0x7f;
for(i=0;i<8;i++)
{
P1=a;
beep=0;
delay(50);
beep=1;
delay(50);
a=_cror_(a,1);
}
}
}
我也新手,没仔细看,你那个delay函数中的while(1)没用的
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar a,i;
while(1)
{
a=0xfe;
for(i=0;i<8;i++)
{
P1=a;
beep=0;
delay(50);
beep=1;
delay(50);
a=_crol_(a,1);
}
a=0x7f;
for(i=0;i<8;i++)
{
P1=a;
beep=0;
delay(50);
beep=1;
delay(50);
a=_cror_(a,1);
}
}
}
我试了,这样有用的
刚试用了下很好哦 ,谢谢了
呵呵。
的确是这个问题,非常感谢您的回复!谢谢! 不过我想再问一下的是,这个while(1)在这个语句中为什么会倒置这样这样一个死循环呢? 按我的理解是,它只能影响到两个 for语句,应该不会影响到整个程序的运行啊?
你理解错 了.....加了个大括号,就是复合语句.....整个大括号里的内容,都会只当做while的执行语句
您指的是delay()下面的这个大括号吗?
哎呀!这个程序很简单嘛!就几个灯和蜂鸣器而已,灯是循环显示,先是左循环,后是右循环,为了你能尽快看懂该程序,我建议你先让灯显示前半部分(也就是把后半部分注释掉,不让其编译),应用这种方法,能把你很快成为高手,,希望你能领悟到这一点!希望我的话能对你有所帮助!
谢谢!
while(A),这个循环只要括号里面是1就会继续执行,while(1)的话肯定跳不出这个循环了,除非有关键词跳出来
以后你写的时候 尽量写成while(1){} 这种的 这是语法风格的问题,等你写的多了就知道那样写的好处了
解释的很好
谢谢各位的热心帮忙,纠出我编程中毛病。谢谢各位!
那是!还是高手多呀!
这很好麽!新手就能看出来!这水平,前途不可限量!
