单片机C语言按键控制LED灯

为什么上面的写法和下面被注释掉的写法都能实现按下灯亮,松手灯灭呢?这两种写法有什么区别?哪个比较规范?... 为什么上面的写法和下面被注释掉的写法都能实现按下灯亮,松手灯灭呢?
这两种写法有什么区别?哪个比较规范?
展开
 我来答
xiaomage_2000
推荐于2018-03-07 · TA获得超过3620个赞
知道大有可为答主
回答量:1772
采纳率:100%
帮助的人:828万
展开全部
其实是一样的,也没什么哪个规范这一说,这个看个人习惯了

首先if(SW13==0)是判断此引脚是否为0 (按键按下)
然后一个delay用于按键防抖动

没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮
然后通过while判断按键是否松开,如果松开的话就继续执行LED_OFF将LED关闭

而注释掉的那段是依靠while函数直接判断按键是否处于按下状态
是的话就循环执行LED_ON函数直至判断按键松开(SW13=1)后在继续执行到LED_OFF函数使LED 关闭

不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作
追问
你的意思是,按键按下之后,别的都不可以中断了,是这个意思吗?
追答
如果开了中断的话是可以打断的,但没有内外部中断的话,他就只执行这个程序了呵呵
宿兴电子
2024-10-18 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
胖大海君
2014-01-09 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1436
采纳率:11%
帮助的人:615万
展开全部
两种写法区别不大 ,都是在条件语句中加了循环结构
两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同
!sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此
都能实现按下灯亮,松手灯灭。二者功能是一样的。

比较:
最后一段的程序代码比较规范和简练(只是用了一条条件语句)

呵呵 满意 就选满意回答哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sogood_TIH
2014-01-09 · TA获得超过136个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:115万
展开全部
第一种更好。
第一种: 判断SW按键按下==》LED打开==》反复判断SW是否松开,如果没有执行空操作。==》按键松开后while判断为假,于是关闭LED。

第二种:while一直判断SW状态,如果按下则不断执行LED打开(而方法一while执行的是空操作)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5922771321
2014-01-09 · TA获得超过1437个赞
知道小有建树答主
回答量:1410
采纳率:100%
帮助的人:354万
展开全部
上面的好一点:按下的时候程序一直在执行while(!sw13);
下面的程序在键按下的时候执行的是LED_ON;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式