单击按钮时如何 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 类型。)