📄 menu.lst
字号:
C51 COMPILER V7.20 MENU 02/20/2006 10:13:58 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN .\output\menu.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE menu.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\menu.lst) OBJECT(.\
-output\menu.obj)
line level source
1 #ifndef _MENU_C_
2 #define _MENU_C_
3
4 #include "menu.h"
5
6 #if _LCD_MENU_
7
8 /************************MenuProcess()函数的说明*****************************/
9 /*****MenuProcess()为菜单处理程序,main()函数中每隔一段时间对它进行调用,
10 由每个菜单的处理程序pMenu->function获取按键值,处理程序的返回值为
11 CHANGE_MENU, NEXT_MENU, PREVIEW_MENU, LEFT_MENU,RIGHT_MENU,
12 MenuProcess()根据这些返回值来管理菜单,作出相应的操作*****************/
13
14 /*******************************************
15 pMenu->function返回值为CHANGE_MENU时,结构指针仍然指向自己,MenuProcess不操作
16 pMenu->function返回值为NEXT_MENU时,NowMenuPtr指向son,处理下级菜单
17 pMenu->function返回值为PREVIEW_MENU时,NowMenuPtr指向father,处理上级菜单
18 pMenu->function返回值为RIGHT_MENU时,NowMenuPtr--,处理同级右菜单
19 pMenu->function返回值为LEFT_MENU时,NowMenuPtr++,处理同级左菜单
20 **********************************************/
21
22 MENU *Father[MAX_FLOOR];
23 MENU *pMenu; /*当前菜单指针*/
24 BYTE floorCnt;
25 MENU_INFO menuInfo;
26
27 void meunInit(MENU *pInitMenu, void *funcScroll, void *funcBackLight)
28 {
29 1 BYTE status;
30 1
31 1 pMenu = pInitMenu;
32 1 menuInfo.ptrScroll = funcScroll;
33 1 menuInfo.ptrBackLight = funcBackLight;
34 1
35 1 status = (pMenu->function)(1);
36 1
37 1 menuInfo.MenuPopReturnFlag = 1;
38 1 floorCnt = 0;
39 1 }
40
41 /*主程序调用的菜单处理指针*/
42 void MenuProcess(void)
43 {
44 1 BYTE status;
45 1 MENU *pTmp;
46 1
47 1 /*指针出错时,显示错误信息*/
48 1 if( pMenu->function == NULL )
49 1 {
50 2 return;
51 2 }
52 1
53 1 /*背光控制程序*/
54 1 if( menuInfo.ptrBackLight != NULL )
C51 COMPILER V7.20 MENU 02/20/2006 10:13:58 PAGE 2
55 1 {
56 2 menuInfo.ptrBackLight( &(menuInfo.menuBack) );
57 2 }
58 1
59 1 /*显示滚动条*/
60 1 if( (menuInfo.rebrushLcd == FLASH_SCREEN) && (menuInfo.ptrScroll != NULL) )
61 1 {
62 2 pTmp = pMenu - 1;
63 2 if( pTmp->function == NULL )
64 2 menuInfo.ptrScroll(SCROL_FIRST_ROW_NULL);
65 2 else
66 2 menuInfo.ptrScroll(SCROL_FIRST_ROW_UP); /*向上标记*/
67 2
68 2 pTmp = pMenu + 1;
69 2 if( pTmp->function == NULL )
70 2 menuInfo.ptrScroll(SCROL_SECOND_ROW_NULL);
71 2 else
72 2 menuInfo.ptrScroll(SCROL_SECOND_ROW_DOWN); /*向下标记*/
73 2 }
74 1
75 1 /*按键菜单显示函数*/
76 1 status = (pMenu->function)( menuInfo.rebrushLcd );
77 1
78 1 /*菜单层之间切换*/
79 1 switch(status)
80 1 {
81 2 case NOCHANGE_MENU:/*无操作*/
82 2 default:
83 2 menuInfo.rebrushLcd = KEEP_SCREEN;
84 2 break;
85 2
86 2 case NEXT_MENU:/*下一级菜单*/
87 2 if( (pMenu->son != NULL) && (pMenu->function != NULL) )
88 2 {
89 3 Father[floorCnt++] = pMenu;
90 3 pMenu = pMenu->son;
91 3 menuInfo.rebrushLcd = FLASH_SCREEN;
92 3 }
93 2 break;
94 2
95 2 case PREVIEW_MENU:/*上一级菜单*/
96 2 if(floorCnt > 0)
97 2 {
98 3 pMenu = Father[--floorCnt];
99 3 menuInfo.MenuPopReturnFlag = 1;
100 3 menuInfo.rebrushLcd = FLASH_SCREEN;
101 3 }
102 2 break;
103 2
104 2
105 2 case LEFT_MENU:/*同级菜单上切换*/
106 2 pTmp = pMenu - 1;
107 2 if(pTmp->function != NULL)
108 2 {
109 3 pMenu = pTmp;
110 3 menuInfo.rebrushLcd = FLASH_SCREEN;
111 3 }
112 2 break;
113 2
114 2 case RIGHT_MENU:/*同级菜单下切换*/
115 2 pTmp = pMenu + 1;
116 2 if(pTmp->function != NULL)
C51 COMPILER V7.20 MENU 02/20/2006 10:13:58 PAGE 3
117 2 {
118 3 pMenu = pTmp;
119 3 menuInfo.rebrushLcd = FLASH_SCREEN;
120 3 }
121 2 break;
122 2 }
123 1 }
124 #if 0
/*弹出菜单程序处理*//*在处理函数中初始化菜单就可以回到主菜单*/
void menuPopUp( BYTE *pPopFunction )
{
if( menuInfo.MenuPopReturnFlag == 1 )
{
Father[floorCnt++] = pMenu;
pMenu->function = pPopFunction;
pMenu->son = NULL;
menuInfo.MenuPopReturnFlag = 0;
menuInfo.rebrushLcd = FLASH_SCREEN;
}
}
#endif
139
140 #endif
141 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 420 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 13
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -