您的位置 首页 基础

怎么使用键盘操控一个二极管的发光

如何利用键盘控制一个二极管的发光-我的目的是用键盘控制一个二极管的发光,按下键盘上的键后二极管发光,放开后二极管熄灭。用 while(key1!=0); 进行判断的话,程序工作正常:开始二极管熄灭,按下键盘上的对应按键后二极管被点亮。可是如果用 if(key1!=0); 进行判断的话,程序就会异常:二极管开始时候就亮了,按键盘上的键也没有任何反应。

#include

sbit key1=P3^4;

sbit p10=P1^0;

void main()

{

while(1)

{

p10=1;

while(key1!=0);

p10=0;

}

}

我的意图是用键盘操控一个二极管的发光,按下键盘上的键后二极管发光,铺开后二极管平息。用 while(key1!=0); 进行判别的话,程序作业正常:开端二极管平息,按下键盘上的对应按键后二极管被点亮。可是假如用 if(key1!=0); 进行判别的话,程序就会反常:二极管开端时分就亮了,按键盘上的键也没有任何反响。请问这是怎么回事呢?曾经写一些小程序时分也是这样,用if 句子简略犯错,可是改为while之后就运转正常了。请我们帮我解释一下这个问题~谢谢!

while和if的用法楼上还没有了解。

while()判别括号内的表达式为1时,程序是不停地在履行while内部函数,相当于停在while句子这,不往下履行。当为0时才跳出内部函数,持续向下履行。

if()判别括号内的表达式为1时,仅履行一次内部函数后就跳出if句子向下履行。当为0时直接跳出内部函数,持续向下履行。

剖析你写的这段程序,

p10=1;

while(key1!=0);

p10=0;

尽管现象达到了你的预期,但实际上是在你按下按键后,循环履行3条句子。而没有停在P10=0之后,所以实际上led是在不停地快速闪耀,而不是常亮。由于太快你看不出来罢了。你能够在P10=0后加个延时函数就能看出来。主张修正一下。

p10=1;

while(key1!=0)

{

p10=0;

}

或许更简略一点,

p10=1;

while(key1!=0) //直接去掉分号

p10=0;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/348336.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部