历史上的今天
今天是: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;
史海拾趣
|
故障现象: 电源不正常工作,无显示。 故障分析 : 此开关电源采用脉宽调节税制集成电路 UC2844 来控制,首先将电源板取出与 IGBT 分离以避免因电源故障造成 IGBT 损坏,找到电源板输入 560VDC 正负极通电,测量 UC2844 的脉冲输出端有断续脉冲 ...… 查看全部问答> |
|
请高手解惑: 在wince5.0下如何读AD卡采集的数据... 用pc104 跑wince5.0,我现在有一块AD卡,用来采集传感器传回的数据,不知道如何才能采集到啊? 用不用编驱动程序啊?直接读地址行不行啊?请高手指点一下啊,最好有原代码参考一下啊,十分感谢啊!… 查看全部问答> |
|
2010 年 8 月 19 日,北京――安捷伦科技公司(NYSE: A)宣布,推出业界首个用于示波器的 GDDR5(图形双倍数据速率第五版)一致性测试应用程序包和 GDDR5 球形栅格阵列(BGA)探头。新工具将帮助工程师更快地启动和调试 GDDR5 系统,高效地确定 GDD ...… 查看全部问答> |
|
【开团贴】Android210平板开发板+7寸电容屏(搭载Android4.0)2012暑期促销 1、团长备案号:SJ2012001 2、团长承诺:我已经详细阅读过论坛自发团购规则,并愿意严格遵照此规则执行,愿意为大家提供货真价实、物美价廉的产品。3、【征询贴】https://bbs.eeworld.com.cn/thread-332990-1-1.html4、团品介绍: 深圳友坚恒天公司 ...… 查看全部问答> |
|
想成为嵌入式程序员应知道的0x10个基本问题 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈, ...… 查看全部问答> |
|
感谢NXP和EEWorld组织的这次活动,使我能够接触一款新的ARM CM3芯片平台。 LPCX15xx相对ST等流行的MCU而言,国内第三方开发板供应者较少(周立功), 其上手入门文档较少,而且demo程序只有源代码和少量注释文档。并且只提供所谓的“库函数版本”, ...… 查看全部问答> |




