#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
时间: 2023-07-14 19:11:54 浏览: 51
你可以使用一个变量来记录上一次按键状态,然后在判断当前按键状态之前先判断上一次状态是否为按下状态,如果是,则不再执行加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状态
}
}
```