单击按钮时如何 return 返回?
How to return back when the button is clicked?
当我第一次按下按钮时,它执行第一个功能,在第二次按下时,它执行第二个任务,当我第三次按下时我想 return 并执行相同的第一个功能。
void blinkcursor(void);
int count = 0;
void blinkcursor(void)
{
label:
if (button == 1) { //button pressed
if (count == 0) {
count++;
set_cursor_position (1, 2);
lcd_cout(0x0f); //cursor blink
button = 0;
}
else if(count == 1) {
lcd_cout(0x0c); //blink off
button = 0;
}
goto label;
}
}
你没有说太多关于程序的整体结构,所以我只是假设你有一些主循环 运行 定期检查按钮的状态,执行任何必要的去抖动,并在检测到按钮被按下时将 button
设置为 1。我还将假设默认情况下光标不闪烁,并且按钮 仅 用于切换光标闪烁。
现在只需在主循环中添加对以下函数的调用:
bool blink_enabled = false;
void update_blink(void)
{
if (button) {
// Button was pressed.
if (blink_enabled) {
// Turn off blinking.
lcd_cout(0x0c);
blink_enabled = false;
}
else {
// Turn on blinking.
set_cursor_position(1, 2);
lcd_cout(0x0f);
blink_enabled = true;
}
button = 0;
}
}
(您可能需要在顶部添加 #include <stdbool.h>
以获得 bool 类型。)
当我第一次按下按钮时,它执行第一个功能,在第二次按下时,它执行第二个任务,当我第三次按下时我想 return 并执行相同的第一个功能。
void blinkcursor(void);
int count = 0;
void blinkcursor(void)
{
label:
if (button == 1) { //button pressed
if (count == 0) {
count++;
set_cursor_position (1, 2);
lcd_cout(0x0f); //cursor blink
button = 0;
}
else if(count == 1) {
lcd_cout(0x0c); //blink off
button = 0;
}
goto label;
}
}
你没有说太多关于程序的整体结构,所以我只是假设你有一些主循环 运行 定期检查按钮的状态,执行任何必要的去抖动,并在检测到按钮被按下时将 button
设置为 1。我还将假设默认情况下光标不闪烁,并且按钮 仅 用于切换光标闪烁。
现在只需在主循环中添加对以下函数的调用:
bool blink_enabled = false;
void update_blink(void)
{
if (button) {
// Button was pressed.
if (blink_enabled) {
// Turn off blinking.
lcd_cout(0x0c);
blink_enabled = false;
}
else {
// Turn on blinking.
set_cursor_position(1, 2);
lcd_cout(0x0f);
blink_enabled = true;
}
button = 0;
}
}
(您可能需要在顶部添加 #include <stdbool.h>
以获得 bool 类型。)