超屌的按键处理方式(类思想,状态机,高移植性)。。。 key_down 共有32位,这里把它分割成不同的区域: 0-3 : 预留区域,这里最多定义4个按键,哪个为1表示状态“绑定”在哪个按键上面 4-7 : 短按判断区,这里最多判断4个,哪个按键在触发短按事件,哪个位置1 8-11 : 长按判断区,这里最多判断4个,哪个按键在触发长按事件,哪个位置1 12-15 : 连击判断区,这里最多判断4个,哪个按键在触发连击事件,哪个位置1
2022-03-20 23:13:01 68KB 按键检测 状态机
1
怎么能把按键处理玩出花?按键处理作为一个基础入门实验,大部分人在刚接触单片机的时候都会自己写一份,开始我们利用延时消抖,后来发现在大的工程当中,延时消抖在没有加入操作系统来调度的情况下,无疑是一种很浪费资源的做法。再后来我们开了定时器去扫描,确实比较靠谱,但是一但设计到复杂的组合按键,长按短按双击等,就需要我们去费很大的功夫去进行逻辑判断。 在网上看到了很多很棒的方法,即把底层寄存器的配置抽离出来,采用状态机思想去进行逻辑判断,可以有效地实现各种复杂的按键处理。借鉴这种思想,完成了自己的按键处理函数。这里直接上代码,再讲解。 .h 头文件: #ifndef __KEY_H #define __
2022-03-20 22:53:00 201KB 状态机
1
怎么能把按键处理玩出花?按键处理作为一个基础入门实验,大部分人在刚接触单片机的时候都会自己写一份,开始我们利用延时消抖,后来发现在大的工程当中,延时消抖在没有加入操作系统来调度的情况下,无疑是一种很浪费资源的做法。再后来我们开了定时器去扫描,确实比较靠谱,但是一但设计到复杂的组合按键,长按短按双击等,就需要我们去费很大的功夫去进行逻辑判断。 在网上看到了很多很棒的方法,即把底层寄存器的配置抽离出来,采用状态机思想去进行逻辑判断,可以有效地实现各种复杂的按键处理。借鉴这种思想,完成了自己的按键处理函数。这里直接上代码,再讲解。 .h 头文件: #ifndef __KEY_H #define __
2022-01-26 10:19:08 201KB 状态机
1
本例程是给予STC15系列单片机实现的红外遥控NEC协议解码驱动,亲测具有高移植性,高稳定性,硬件驱动层和模块驱动层分开,可以轻松的实现在各个系列单片机不同板子板子间的移植。
2021-05-21 11:30:01 56KB 红外遥控器解码 NEC协议 高移植性
1