if(key1_read()==1) { New_temp++; Change_status=true; }怎么设置按键只按一次
时间: 2023-07-14 20:12:14 浏览: 57
你可以在按键按下时设置一个标志位表示按键已经被按下了,然后在按键释放时才取消这个标志位。这样就能保证按键只会被按下一次了。下面是一个示例代码:
```c
bool key_pressed = false; //按键是否被按下的标志位
if (key1_read() == 1 && !key_pressed) {
New_temp++;
Change_status = true;
key_pressed = true; //设置按键已经被按下的标志位
}
if (key1_read() == 0) {
key_pressed = false; //取消按键已经被按下的标志位
}
```
在这个示例代码中,使用了一个名为 `key_pressed` 的 bool 类型变量表示按键是否被按下的状态。在按键按下时,只有当 `key_pressed` 变量为 false 时才执行按键操作,并将 `key_pressed` 变量设置为 true 表示按键已经被按下。在按键释放时,将 `key_pressed` 变量设置为 false 取消按键已经被按下的状态。这样就可以保证按键只被按下一次了。
相关问题
#include "stm32f10x.h" #include "key.h" #include "stdbool.h" #include "LED.h" int High_temp=500,Low_temp=100; int New_temp=250,Now_temp=250; bool Change_status=false; int main(void) { led_int(); key_init(); while(1) { if(key1_read()==1) { New_temp++; Change_status=true; } if(key2_read()==1) { New_temp--; Change_status=true; } if(key3_read()==1 & Change_status==true) { Now_temp=New_temp; if(New_temp!=High_temp && Low_temp) { led_open(); led_close(); } if(New_temp==High_temp&& Low_temp) { led_open(); } } } }怎么让按键按下时New_temp只加1
你可以使用一个变量来记录上一次按键状态,然后在判断当前按键状态之前先判断上一次状态是否为按下状态,如果是,则不再执行加1操作。下面是修改后的代码:
```
#include "stm32f10x.h"
#include "key.h"
#include "stdbool.h"
#include "LED.h"
int High_temp = 500, Low_temp = 100;
int New_temp = 250, Now_temp = 250;
bool Change_status = false;
bool last_key1_state = false; // 记录上一次按键1状态
int main(void) {
led_int();
key_init();
while (1) {
if (key1_read() == 1 && !last_key1_state) { // 判断上一次状态为未按下,当前状态为按下
New_temp++;
Change_status = true;
}
if (key2_read() == 1) {
New_temp--;
Change_status = true;
}
if (key3_read() == 1 && Change_status == true) {
Now_temp = New_temp;
if (New_temp != High_temp && Low_temp) {
led_open();
led_close();
}
if (New_temp == High_temp && Low_temp) {
led_open();
}
Change_status = false; // 执行完后重置状态
}
last_key1_state = key1_read() == 1; // 记录当前按键1状态
}
}
```
#include "stm32f10x.h" #include "key.h" #include "stdbool.h" #include "LED.h" int High_temp=500,Low_temp=100; int New_temp=250,Now_temp=250; bool Change_status=false; int main(void) { led_int(); key_init(); while(1) { if(key1_read()==1) { New_temp++; Change_status=true; } if(key2_read()==1) { New_temp--; Change_status=true; } if(key3_read()==1 & Change_status==true) { Now_temp=New_temp; if(New_temp!=High_temp && Low_temp) { led_open(); led_close(); } if(New_temp==High_temp&& Low_temp) { led_open(); } } } }让按键按下一次New_temp加一次1
你可以将 if(key1_read()==1) 的代码改为:
```c
if(key1_read()==1)
{
New_temp++;
Change_status=true;
while(key1_read()==1); // 等待按键松开
}
```
这样在按下按键后,只有等待按键松开后才会执行下一次的 New_temp++。
阅读全文