单片机流水灯的问题
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 。 展开
{
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 。 展开
展开全部
我们把这段程序拆开来看
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秒不到一点
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 广告
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
学过C语言吧?while(1)括号里面一直为1,也就是真(不是零就是真),{}里面的程序就会一直循环,for语句是用来延时的。led1应该是被定义到了某个管脚,led1=0表示灭,led1=1表示亮。for语句用来延时,这样你就可以看到led灯闪灭了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for语句只是延时语句,
led1应该是定义接在某个接口上
led1应该是定义接在某个接口上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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,就代表一直是“真”,所以就一直循环了。
以上这段代码是延时作用,单片机每进行一次运行需要消耗一个时钟周期的时间,假如你的单片机的时钟周期是T,那么上面这段代码就要消耗A=1000*100T的时间,即延时了A 毫秒的时间。
所以这里的a、b都是临时变量,只在for里面才赋值运算的。可以不管。
而控制LED的亮灭就是led1这个变量了,这个变量应该是与单片机的某个控制LeD的端口相对应的,比如P1^0是控制LED的,用led1代替,那么led1是1或0就可以控制亮灭了。
至于为什么会一直循环,那是看while(){}这个函数,括号就写上1,就代表一直是“真”,所以就一直循环了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询