收藏 分销(赏)

关于指针函数的范例.doc

上传人:xrp****65 文档编号:7682660 上传时间:2025-01-12 格式:DOC 页数:5 大小:28.50KB 下载积分:10 金币
下载 相关 举报
关于指针函数的范例.doc_第1页
第1页 / 共5页
关于指针函数的范例.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
关于指针函数的范例 关于指针函数的范例 #define ubyte unsigned char #define uint unsigned int #define ulong unsigned long ubyte kbCode;                   // 按键编码纪录 ubyte kbStatus;                 // 键盘当前状态,可以理解为菜单层次 // 按键的四种不同工作状态对应的函数指针对照表,每三字节对应一个按键 // 每一项包含三个字节,分别代表按键码,键盘状态,对应处理程序编号 // 本表对应于日常操作,不是修改状态 ubyte code TAB0[46]={     0x11,0x00,0x01,             // 按键''1''      func1     0x12,0x00,0x01,             // 按键''2''      func1     0x14,0x00,0x01,             // 按键''3''      func1     0x1a,0x00,0x01,             // 按键''4''      func1     0x2a,0x00,0x01,             // 按键''5''      func1     0x4a,0x00,0x01,             // 按键''6''      func1     0x01,0x00,0x01,             // 按键''7''      func1     0x02,0x00,0x01,             // 按键''8''      func1     0x04,0x00,0x01,             // 按键''9''      func1     0x10,0x00,0x01,             // 按键''0''      func1     0x20,0x00,0x01,             // 按键''.''      func1     0x08,0x00,0x02,             // 按键''Clear''  func2     0x18,0x00,0x03,             // 按键''U/D''    func3     0x8a,0x01,0x04,             // 按键''shift''  func4     0x40,0x02,0x05,             // 按键''last''   func5     0x00};                      // 本表结束标志 ubyte code TAB1[40]={     0x12,0x03,0x06,             // 按键''2''      func6     0x14,0x03,0x07,             // 按键''3''      func7     0x2a,0x03,0x08,             // 按键''5''      func8     0x4a,0x03,0x09,             // 按键''6''      func9     0x01,0x03,0x12,             // 按键''7''      func18     0x8a,0x03,0x14,             // 按键''shift''  func20     0x11,0x01,0x0a,             // 按键''1''      func10     0x1a,0x01,0x0b,             // 按键''4''      func11     0x04,0x01,0x0c,             // 按键''9''      func12     0x10,0x01,0x0d,             // 按键''0''      func13     0x80,0x01,0x0e,             // 按键''Enter''  func14     0x08,0x00,0x02,             // 按键''Clear''  func2     0x20,0x03,0x13,             // 按键''.''      func19     0x00};                      // 本表结束标志 ubyte code TAB2[7]={     0x40,0x02,0x0f,             // 按键''last''   func15     0x08,0x00,0x02,             // 按键''Clear''  func2     0x00};                      // 本表结束标志 ubyte code TAB3[40]={     0x11,0x03,0x10,             // 按键''1''      func16     0x12,0x03,0x10,             // 按键''2''      func16     0x14,0x03,0x10,             // 按键''3''      func16     0x1a,0x03,0x10,             // 按键''4''      func16     0x2a,0x03,0x10,             // 按键''5''      func16     0x4a,0x03,0x10,             // 按键''6''      func16     0x01,0x03,0x10,             // 按键''7''      func16     0x02,0x03,0x10,             // 按键''8''      func16     0x04,0x03,0x10,             // 按键''9''      func16     0x10,0x03,0x10,             // 按键''0''      func16     0x20,0x03,0x10,             // 按键''.''      func16     0x08,0x00,0x02,             // 按键''clear''  func2     0x80,0x01,0x11,             // 按键''Enter''  func17     0x00};                      // 本表结束标志 ubyte code *TAB[4]={TAB0,TAB1,TAB2,TAB3};       // 总指针表 // 指针函数列表 code void(code *KeyProcTab[])()={       NoKey,            /*0#  (00H)#*/       func1,            /*1#  (01H)#*/       func2,            /*2#  (02H)#*/       func3,            /*3#  (03H)#*/       func4,            /*4#  (04H)#*/       func5,            /*5#  (05H)#*/       func6,            /*6#  (06H)#*/       func7,            /*7#  (07H)#*/       func8,            /*8#  (08H)#*/       func9,            /*9#  (09H)#*/       func10,           /*10# (0AH)#*/       func11,           /*11# (0BH)#*/       func12,           /*12# (0CH)#*/       func13,           /*13# (0DH)#*/       func14,           /*14# (0EH)#*/       func15,           /*15# (0FH)#*/       func16,           /*16# (10H)#*/       func17,           /*17# (11H)#*/       func18,           /*18# (12H)#*/       func19,           /*19# (13H)#*/       func20            /*20# (14H)#*/ }; void NoKey() {     return; } void func0() {     ; } void func1() {     ; } .................... void func20() {     ; } ////////////////////////////////////////////////////////////////////// // 键盘监控,根据当前状态特征指向不同的指针表,并调用相应的函数     // ////////////////////////////////////////////////////////////////////// void mon(ubyte key) {    ubyte code *data pTab;    kbCode=key;    pTab=*(TAB+kbStatus);                // 根据当前状态特征指向分指针表    while(*pTab != key && *pTab != 0)    // 按照按键代码查表    {         pTab += 3;                          // 查表    }    if(*pTab!=0){       pTab++;       kbStatus=*pTab;                       // 取状态特征字节       pTab++;                               // 指向执行函数       (*KeyProcTab[*pTab])();               // 指针函数调用    } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服