单片机流水灯的问题

while(1){led1=0;for(a=1000;a>0;a--)for(b=100;b>0;b--);led1=1;for(a=1000;a>0;a--)for(b... while(1)
{
led1=0;

for (a=1000;a>0;a--)
for (b=100;b>0;b--);
led1=1;
for (a=1000;a>0;a--)
for (b=100;b>0;b--);
}
为什么会一直循环 书上说值永远为真,所以一直循环
但输出的值是怎么看的 变量那么多 a,b ,LED 。
展开
 我来答
好嘞啊啊啊啊
2014-01-21 · TA获得超过2612个赞
知道大有可为答主
回答量:1860
采纳率:66%
帮助的人:1192万
展开全部
我们把这段程序拆开来看
while()

led1

for(a;a;a)
for(b;b;b)

三个部分
首先 while(1)
表达式的值是1 所以永远是逻辑真 而且也没有break跳出循环
所以永远循环 是死循环

led1 一般是某个IO口
不断的输出高电平
延时 再输出低电平 延时
这样不断的重复

两个for循环只是延时
51单片机的时钟频率 一般是用12MHZ左右的晶振
所以
for (a=1000;a>0;a--) for (b=100;b>0;b--);
能延时1秒不到一点
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宿兴电子
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
霹雳洋蛋
2014-01-21 · 超过21用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:46.3万
展开全部
学过C语言吧?while(1)括号里面一直为1,也就是真(不是零就是真),{}里面的程序就会一直循环,for语句是用来延时的。led1应该是被定义到了某个管脚,led1=0表示灭,led1=1表示亮。for语句用来延时,这样你就可以看到led灯闪灭了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逆_火
2014-01-21 · 超过23用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:62.7万
展开全部
for语句只是延时语句,
led1应该是定义接在某个接口上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wpweng
2014-01-21 · TA获得超过231个赞
知道小有建树答主
回答量:246
采纳率:100%
帮助的人:127万
展开全部
for (a=1000;a>0;a--) for (b=100;b>0;b--);
以上这段代码是延时作用,单片机每进行一次运行需要消耗一个时钟周期的时间,假如你的单片机的时钟周期是T,那么上面这段代码就要消耗A=1000*100T的时间,即延时了A 毫秒的时间。
所以这里的a、b都是临时变量,只在for里面才赋值运算的。可以不管。
而控制LED的亮灭就是led1这个变量了,这个变量应该是与单片机的某个控制LeD的端口相对应的,比如P1^0是控制LED的,用led1代替,那么led1是1或0就可以控制亮灭了。

至于为什么会一直循环,那是看while(){}这个函数,括号就写上1,就代表一直是“真”,所以就一直循环了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式