多按键多界面二维数组表驱动设计

简介: 多按键多界面二维数组表驱动设计

键盘是我们经常能在嵌入式产品上看到的输入设备之一。

640.png

一般情况下,键盘通常会有指定的按键码。根据用户按下的按键来执行一些用户想要执行的功能。因此,这种模式就可以通过switch语句来进行处理。但是,如果当我们设计的应用程序上拥有很多个界面的时候,有些按键只有在特定的界面上才生效的情况下,这时候使用函数指针则会比switch语句更为优雅。在这种情况下,推荐使用函数指针的二维数组的形式来实现,以下是一个很好的例子:

#define PAGE_NUMBER 12
#define KEY_NUMBER  5
int function_f1_op(void);
int function_f2_op(void);
int function_f3_op(void);
int function_f4_op(void);
...
int function_null_op(void);
int function_menu_op(void);
/*跳转表定义*/
static int (*const jump_table[page][key])(void) = 
{
    {function_f1_op, function_f2_op, function_f3_op, function_f4_op},
    {function_f5_op, function_f6_op, function_f7_op, function_f8_op},
 ...
    {function_esc_op, function_enter_op, function_menu_op ..., function_tab_op}
};
/*按键处理函数*/
int key_handler(uint8_t page,uint8_t key)
{
    assert (key  < KEY_NUMBER);
    assert( page < PAGE_NUMBER);
    return (*jump_table[page][key])(); 
}


目录
相关文章
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
|
5天前
|
芯片 数据格式
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
【51单片机】实现一个动静态数码管显示项目(超全详解&代码&图示)(5)
|
5天前
|
Windows
MyKeymap按键映射工具
MyKeymap能减少键鼠切换、实现全键盘操作,让「编辑文字」和「窗口管理」更快捷。提升工作学习中写代码、编辑文字、整理笔记、管理窗口的效率,掌握MyKeymap后,能让使用Windows的日常,拥有流畅、舒适、顺滑的操作体验。
29 2
MyKeymap按键映射工具
|
9月前
|
JavaScript
Cadence原理图批量更新元件属性的方法和步骤
在原理图设计的过程中,有时候需要修改元器件的属性,比如电阻值、厂商、封装等属性信息。一般可以直接双击需要修改的元器件,在弹出的属性编辑(Property Editor)窗口进行对应属性的编辑。在厂商(Manufacturer)属性右击,在弹出的菜单中选择“Edit”,弹出编辑属性值(Edit Property Values)窗口,输入GJ,再点击OK即可。然后保存,关闭属性编辑窗口,再双击元器件,就可以看到这个元器件的厂商值是修改之后的值。
262 0
|
11月前
一个案例带你了解独立式键盘设计原理
一个案例带你了解独立式键盘设计原理
123 0
|
Windows
scrlk键是什么意思(电脑键盘每个按键的作用详细图解)
scrlk键是什么意思(电脑键盘每个按键的作用详细图解)
3509 0
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用
259 0
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能第二章
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能
第二章(2) 单片机内并行口P2,P3 位结构,输入,复位特性,功能第二章