历史上的今天
返回首页

历史上的今天

今天是:2025年04月03日(星期四)

正在发生

2018年04月03日 | 基于STC单片机用键盘控制二极管亮灭的问题分析

2018-04-03 来源:eefocus

    #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;


推荐阅读

史海拾趣

Advanced Electronic Packaging公司的发展小趣事

随着公司技术的不断进步,Advanced Electronic Packaging公司开始寻求与行业内知名厂商的合作机会。通过与一家全球领先的电子产品制造商达成战略合作,公司成功将其先进的封装技术应用于对方的高端产品线中。这一合作不仅提升了合作双方的产品竞争力,还为Advanced Electronic Packaging公司带来了可观的利润回报。此后,公司陆续与多家知名企业建立了合作关系,进一步巩固了其在电子封装领域的市场地位。

Garmin_Canada_Inc.公司的发展小趣事
选用高质量的DTMF信号发生器芯片,如MT8888等,这些芯片具有稳定的性能和较高的精度。
Fischer Connectors公司的发展小趣事
选用高质量的DTMF信号发生器芯片,如MT8888等,这些芯片具有稳定的性能和较高的精度。
博众电气(BZCN)公司的发展小趣事

在追求经济效益的同时,博众电气也始终关注环保问题。公司积极响应国家绿色发展的号召,将环保理念融入产品研发和生产过程中。通过采用环保材料和节能技术,博众电气成功降低了产品对环境的影响,实现了经济效益和环境保护的双赢。这一举措不仅提升了公司的社会形象,也为公司的可持续发展注入了新动力。

艾迪沃德公司的发展小趣事
使用万用表测量电源输出端的电压值,确保其在仪器要求的范围内。
BOPLA公司的发展小趣事

为了进一步提升公司的竞争力,BOPLA积极寻求与其他企业的合作机会。通过与上下游企业建立紧密的合作关系,公司实现了产业链的协同发展。同时,BOPLA还与其他创新型企业进行技术交流和合作研发,共同推动电子行业的发展。这种合作模式不仅提升了公司的技术水平,还为公司带来了更多的商业机会和发展空间。

以上便是关于BOPLA公司在电子行业中发展的几个可能的故事情节。这些故事展示了BOPLA在创业初期、技术突破、市场拓展、绿色转型以及合作与共赢等方面的努力和成就。当然,实际的发展过程可能更加复杂和多变,但无论如何,BOPLA都以其坚韧不拔的精神和不断创新的态度,在电子行业中留下了深刻的印记。

问答坊 | AI 解惑

西门子变频器开关电源的维修

故障现象: 电源不正常工作,无显示。 故障分析 : 此开关电源采用脉宽调节税制集成电路 UC2844 来控制,首先将电源板取出与 IGBT 分离以避免因电源故障造成 IGBT 损坏,找到电源板输入 560VDC 正负极通电,测量 UC2844 的脉冲输出端有断续脉冲 ...…

查看全部问答>

迷茫中~~~

想当初,哎!还真不想用这句话开头,没办法啊!大二的时候开了高频电子线路,没有好好学。现在发现好多知识我都不会,想从头学习。可是总是看到三极管附近就看不下去啦!后面的根本不理解啊(我问了一些所谓的好学生,他们也是不会那部分)。我想听 ...…

查看全部问答>

请高手解惑: 在wince5.0下如何读AD卡采集的数据...

用pc104 跑wince5.0,我现在有一块AD卡,用来采集传感器传回的数据,不知道如何才能采集到啊? 用不用编驱动程序啊?直接读地址行不行啊?请高手指点一下啊,最好有原代码参考一下啊,十分感谢啊!…

查看全部问答>

安捷伦推出业界首个用于示波器的GDDR5 一致性测试工具

2010 年 8 月 19 日,北京――安捷伦科技公司(NYSE: A)宣布,推出业界首个用于示波器的 GDDR5(图形双倍数据速率第五版)一致性测试应用程序包和 GDDR5 球形栅格阵列(BGA)探头。新工具将帮助工程师更快地启动和调试 GDDR5 系统,高效地确定 GDD ...…

查看全部问答>

没有电感手册,需要一款电感。

33uh和47uh磁屏蔽电感,求推荐型号(贴片小封装的,质量比较好的)电流最大3a。…

查看全部问答>

基于51单片机的函数信号发生器资料总汇

基于51单片机的函数信号发生器资料总汇…

查看全部问答>

【开团贴】Android210平板开发板+7寸电容屏(搭载Android4.0)2012暑期促销

1、团长备案号:SJ2012001 2、团长承诺:我已经详细阅读过论坛自发团购规则,并愿意严格遵照此规则执行,愿意为大家提供货真价实、物美价廉的产品。3、【征询贴】https://bbs.eeworld.com.cn/thread-332990-1-1.html4、团品介绍: 深圳友坚恒天公司 ...…

查看全部问答>

会电机控制的都进来

本帖最后由 liuming759 于 2014-1-13 15:56 编辑 电机控制的朋友请赐教问题如下: 1.他励电机的控制需要注意哪些方面?如何发挥他励电机的最大性能 2.电机控制方面程序的框架最好该如何搭接? 3.如果说是F28035的EPWM模块,该如何设置合适 ...…

查看全部问答>

想成为嵌入式程序员应知道的0x10个基本问题

想成为嵌入式程序员应知道的0x10个基本问题 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈, ...…

查看全部问答>

LPC1500开发心得与体验试用报告汇集和总结

感谢NXP和EEWorld组织的这次活动,使我能够接触一款新的ARM CM3芯片平台。 LPCX15xx相对ST等流行的MCU而言,国内第三方开发板供应者较少(周立功), 其上手入门文档较少,而且demo程序只有源代码和少量注释文档。并且只提供所谓的“库函数版本”, ...…

查看全部问答>