You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言开发:按钮点击三次时如何返回执行首次触发的功能

问题解决思路

现有代码存在两个核心问题:

  • count变量仅在首次点击时做了自增,第二次点击处理完成后没有修改count值,导致后续所有点击都会一直执行第二次的关闭逻辑
  • 用goto label的写法会导致按钮触发时出现无意义的循环占用资源,建议移除
修正后的代码
void blinkcursor(void);
int count = 0;

void blinkcursor(void)
{   
    if (button == 1) {                 // 检测到按钮按下
        if (count == 0) {
            set_cursor_position(1, 2);
            lcd_cout(0x0f);            // 开启光标闪烁
        } else if (count == 1) {
            lcd_cout(0x0c);            // 关闭光标闪烁
        }
        // 切换count状态,实现循环切换
        count = (count + 1) % 2;
        button = 0;
    } 
}
实现说明
  • 每次按钮点击处理完成后,对count执行(count + 1) % 2操作,count会在0和1之间循环切换,第三次点击时count回到0,就会重新执行第一次的开启闪烁逻辑
  • 移除了不必要的goto语句,避免无效循环占用处理器资源
  • 把button复位的操作统一放到最后,减少重复代码

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:02