本帖最后由 DebugLab 于 2024-2-2 00:26 编辑
不使用中断!不使用定时器!不使用延时函数!
怎么消抖?用执行其他程序的时间消抖!
延时函数?坚决不用!!!
放到主循环里一直循环就行,注意一下主循环的频率10~1000Hz都行,中断函数进去必须马上出来,不能进去100ms以上或者死在里面,如果有以固定频率运行的定时器中断,放在里面也行,这个按键扫描程序几乎不耗时。
基本结构:
- void Key_Scan(void)
- {
- static bit Key_Flag;
- if(KEY==0)
- {
- if(Key_Flag==1)
- {
- Key_Flag=0;
- //在这里加按下要执行的
- }
- }
- else
- {
- if(Key_Flag==0)
- {
- Key_Flag=1;
- //在这里加松开要执行的
复制代码
矩阵键盘因为要切换IO状态读取第二个坐标,需要延时函数消抖,单击双击长按才需要定时器。
矩阵键盘扫描单击双击长按:
复制代码
|