发布网友 发布时间: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;