| 程序一直停留在while循环那里了 |
|
KEY_DOWN(void) 这个函数不要,更不能用return, 其它代码放到 SCAN_GET(void) 里面 SCAN_GET(void)里面如下: 把IO设置成0x0F, 延时,此时读IO值A 把IO设置成0xF0, 延时,此时读IO值B 按键值 = A+B 最后判断,就OK了 |
| 你在主循环中做了显示OLED的操作,这个操作很耗时间,而且你的按键判断也在这个里面。这样肯定会导致按键判断相应缓慢。建议的做法是:1、在主循环里面做按键判断;2、在做好按键判断后增加OLED刷新标志位和按键数据等值用于给中断传递数据;3、OLED刷新放在中断里面,进中断后判断是否需要刷新,如果需要的话再根据键值进行刷新等逻辑。这样按键的响应就会好很多。(把按键响应放在中断里面OLED显示有可能会出异常,因为OLED写入是有时序要求的,而中断能打乱他的时序) |