1、嵌入式系统多级菜单的巧妙设计方法typedef structucharKeyStateIndex ;/ / 当前状 索引号ucharKeyDnState ;/ / 按下 “向下 ” 向的状 索引号ucharKeyUpState ;/ / 按下 “向上 ” 向的状 索引号ucharKeyCrState ;/ / 按下 “回 ” 向的状 索引号ucharKeyBackState ;/ / 按下 “退回 ” 向的状 索引号void(*CurrentOperate)( ) ;/ / 当前状 行的功能操作KbdTabSt ruct ;# define SIZE - OF KEYBD - MENU 55/
2、 / 菜 度KbdTabSt ruct code KeyTab SIZE - OF - KEYBD - MENU = 0 ,0 ,0 ,1 ,0 , MainJob1 , /第一 ,MainJob1 在后面的 函数中也要有相同 的函数1 ,7 ,2 ,8 ,0 , Dsp Point ,/ / 第一 2 ,1 ,3 ,8 ,0 , DspCurve,/ / 第一 3 ,2 ,4 ,36 ,0 ,Dsp Kout ,/ / 第一 4 ,3 ,5 ,50 ,0 , DisCloseDown ,/ / 第一 5 ,4 ,6 ,8 ,0 , ModifyPoint ,/ / 第 1 层 ,退回 返回到
3、0 号任 , 入 入8 号任/ , 8 号任 可以划 第2 菜 了。6 ,5 ,7 ,52 ,0 , SetCloseDown ,/ / 第 1 层7 ,6 ,1 ,0 ,0 , Cancel ,/ / 第 1 层52 ,53 ,53 ,0 ,1 , OkSetCloseDown1 ,53 ,52 ,52 ,0 ,1 , OkSetCloseDown2 ,54 ,0 ,0 ,0 ,0 , Disable , ;void Get Keylnput (void)switch ( status &0xf0)case 0xe0 :/ / 回 ,找出新的菜 状 号KeyFuncIndex = KeyTa
4、b KeyFuncIndex . KeyCrState ;break ;case 0xb0 :/ / 向下 ,找出新的菜 状 号1KeyFuncIndex = KeyTab KeyFuncIndex . KeyDn2State ;break ;case 0xd0 :/ / 向上 ,找出新的菜 状 号KeyFuncIndex = KeyTab KeyFuncIndex . KeyUp2State ;break ;case 0x70 :/ / 回退 ,找出新的菜 状 号KeyFuncIndex = KeyTab KeyFuncIndex . KeyBack2State ;break ;case 0 ;return ;/ / 的 理break ;KeyFuncPt r = KeyTab KeyFuncIndex . CurrentOperate ;( * KeyFuncPt r) () ;/ / 行当前按 的操作2