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

发布网友 发布时间:2022-04-24 01:45

我来回答

4个回答

热心网友 时间:2023-10-19 15:32

其实是一样的,也没什么哪个规范这一说,这个看个人习惯了

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

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

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

不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作追问你的意思是,按键按下之后,别的都不可以中断了,是这个意思吗?

追答如果开了中断的话是可以打断的,但没有内外部中断的话,他就只执行这个程序了呵呵

热心网友 时间:2023-10-19 15:32

两种写法区别不大 ,都是在条件语句中加了循环结构
两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同
!sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此
都能实现按下灯亮,松手灯灭。二者功能是一样的。

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

呵呵 满意 就选满意回答哦

热心网友 时间:2023-10-19 15:33

第一种更好。
第一种: 判断SW按键按下==》LED打开==》反复判断SW是否松开,如果没有执行空操作。==》按键松开后while判断为假,于是关闭LED。

第二种:while一直判断SW状态,如果按下则不断执行LED打开(而方法一while执行的是空操作)

热心网友 时间:2023-10-19 15:32

其实是一样的,也没什么哪个规范这一说,这个看个人习惯了

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

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

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

不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作追问你的意思是,按键按下之后,别的都不可以中断了,是这个意思吗?

追答如果开了中断的话是可以打断的,但没有内外部中断的话,他就只执行这个程序了呵呵

热心网友 时间:2023-10-19 15:32

两种写法区别不大 ,都是在条件语句中加了循环结构
两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同
!sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此
都能实现按下灯亮,松手灯灭。二者功能是一样的。

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

呵呵 满意 就选满意回答哦

热心网友 时间:2023-10-19 15:33

第一种更好。
第一种: 判断SW按键按下==》LED打开==》反复判断SW是否松开,如果没有执行空操作。==》按键松开后while判断为假,于是关闭LED。

第二种:while一直判断SW状态,如果按下则不断执行LED打开(而方法一while执行的是空操作)

热心网友 时间:2023-10-19 15:33

上面的好一点:按下的时候程序一直在执行while(!sw13);
下面的程序在键按下的时候执行的是LED_ON;

热心网友 时间:2023-10-19 15:33

上面的好一点:按下的时候程序一直在执行while(!sw13);
下面的程序在键按下的时候执行的是LED_ON;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com