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
相关产品推荐
相关产品推荐

