单片机C语言按键控制LED灯
为什么上面的写法和下面被注释掉的写法都能实现按下灯亮,松手灯灭呢?这两种写法有什么区别?哪个比较规范?...
为什么上面的写法和下面被注释掉的写法都能实现按下灯亮,松手灯灭呢?
这两种写法有什么区别?哪个比较规范? 展开
这两种写法有什么区别?哪个比较规范? 展开
展开全部
其实是一样的,也没什么哪个规范这一说,这个看个人习惯了
首先if(SW13==0)是判断此引脚是否为0 (按键按下)
然后一个delay用于按键防抖动
没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮
然后通过while判断按键是否松开,如果松开的话就继续执行LED_OFF将LED关闭
而注释掉的那段是依靠while函数直接判断按键是否处于按下状态
是的话就循环执行LED_ON函数直至判断按键松开(SW13=1)后在继续执行到LED_OFF函数使LED 关闭
不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作
首先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 广告
2024-10-18 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
两种写法区别不大 ,都是在条件语句中加了循环结构
两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同
!sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此
都能实现按下灯亮,松手灯灭。二者功能是一样的。
比较:
最后一段的程序代码比较规范和简练(只是用了一条条件语句)
呵呵 满意 就选满意回答哦
两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同
!sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此
都能实现按下灯亮,松手灯灭。二者功能是一样的。
比较:
最后一段的程序代码比较规范和简练(只是用了一条条件语句)
呵呵 满意 就选满意回答哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一种更好。
第一种: 判断SW按键按下==》LED打开==》反复判断SW是否松开,如果没有执行空操作。==》按键松开后while判断为假,于是关闭LED。
第二种:while一直判断SW状态,如果按下则不断执行LED打开(而方法一while执行的是空操作)
第一种: 判断SW按键按下==》LED打开==》反复判断SW是否松开,如果没有执行空操作。==》按键松开后while判断为假,于是关闭LED。
第二种:while一直判断SW状态,如果按下则不断执行LED打开(而方法一while执行的是空操作)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的好一点:按下的时候程序一直在执行while(!sw13);
下面的程序在键按下的时候执行的是LED_ON;
下面的程序在键按下的时候执行的是LED_ON;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询