📄 menu.lst
字号:
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN Menu.obj
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE IIC[Ultral]\Menu.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Menu.lst) OBJECT(Menu.
-obj)
line level source
1 #include "iic.h"
2
3 ///////////菜单管理体系/////////////////////////////////////////////////////
4 char* GetSubMenuHead(unsigned int id)
5 {//查找该菜单下子菜单的头指针
6 1 //输入:菜单ID
7 1 //返回:菜单的下一级子菜单的指针,否则返回SNULL
8 1 unsigned char *t;
9 1 unsigned char xdata i;
10 1
11 1 switch(id)
12 1 {
13 2 case 0x0000:
14 2 if(!DeskTopFlag)//
15 2 t=DeskMenuData;//桌面
*** ERROR C202 IN LINE 15 OF IIC[ULTRAL]\MENU.C: 'DeskMenuData': undefined identifier
16 2 else
17 2 {
18 3 ShowDesk();
19 3 t=SNULL;
20 3 }
21 2 break;
22 2 case 0x0001://
23 2 case 0x0002:
24 2 t=ShiDuanMenuData;//时段:2
*** ERROR C202 IN LINE 24 OF IIC[ULTRAL]\MENU.C: 'ShiDuanMenuData': undefined identifier
25 2 break;
26 2 case 0x0011:case 0x0021:case 0x0031:case 0x0041:case 0x0051:case 0x0061:
27 2 case 0x0071:case 0x0081:case 0x0091:case 0x00a1:case 0x00b1:case 0x00c1:
28 2 case 0x0012:case 0x0022:case 0x0032:case 0x0042:case 0x0052:case 0x0062:
29 2 case 0x0072:case 0x0082:case 0x0092:case 0x00a2:case 0x00b2:case 0x00c2:
30 2 t=XiangZuMenuData;//相组:2*12
*** ERROR C202 IN LINE 30 OF IIC[ULTRAL]\MENU.C: 'XiangZuMenuData': undefined identifier
31 2 break;
32 2 case 0x00d1:
33 2 case 0x00d2:
34 2 t=XiangZuMenuData2;//相组2:2
*** ERROR C202 IN LINE 34 OF IIC[ULTRAL]\MENU.C: 'XiangZuMenuData2': undefined identifier
35 2 break;
36 2 //case **://相位
37 2 // break;//太多了,另行处理
38 2 case 0x0003://
39 2 t=XitongMenuData;//系统
*** ERROR C202 IN LINE 39 OF IIC[ULTRAL]\MENU.C: 'XitongMenuData': undefined identifier
40 2 break;
41 2 case 0x0004:
42 2 t=ShouDongMenuData;//手动
*** ERROR C202 IN LINE 42 OF IIC[ULTRAL]\MENU.C: 'ShouDongMenuData': undefined identifier
43 2 break;
44 2 case 0x0005:
45 2 t=LvSeMenuData;//绿色
*** ERROR C202 IN LINE 45 OF IIC[ULTRAL]\MENU.C: 'LvSeMenuData': undefined identifier
46 2 break;
47 2 default:
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 2
48 2 MenuItemCnt=0;//没有子项
49 2 t=SNULL;//已经到达叶子菜单
50 2 }
51 1
52 1 if((t==SNULL)&&(id!=0))
53 1 {//特殊的处理:相位
54 2 if(((id & 0x000f)<=0x0002)&&((id & 0x000f)>=0x0001))
55 2 {
56 3 if(((id&0x00f0)<=0x00c0)&&((id & 0x00f0)>=0x0010))
57 3 {
58 4 if(((id&0x0f00)<=0x0800)&&((id & 0x0f00)>=0x0100))
59 4 t=XiangWeiMenuData;
*** ERROR C202 IN LINE 59 OF IIC[ULTRAL]\MENU.C: 'XiangWeiMenuData': undefined identifier
60 4 }
61 3 }
62 2 }
63 1
64 1 if(t==SNULL)
65 1 {
66 2 MenuItemCnt=0;
67 2 return;
68 2 }
69 1
70 1 //生成子项数目
71 1 i=0;
72 1 MenuItemCnt=1;
73 1 while(*(t+i)!=NULL)
74 1 {
75 2 if(*(t+i)=='\n')
76 2 MenuItemCnt+=1;
77 2 i++;
78 2 }
79 1 return t;
80 1 }
81
82 void ShowMenu()
83 {
84 1 //默认显示MenuID子菜单的内容
85 1 unsigned char *Head;
86 1 unsigned char xdata i,k;
87 1 unsigned char xdata ch1,ch2;
88 1 // WriteCmd(0x02);//地址归位
89 1 LcdInit();
90 1
91 1 Head=GetSubMenuHead(MenuID);
92 1 if(Head==SNULL)//叶子
93 1 return;
94 1 if(MenuPos>=MenuItemCnt)
95 1 MenuPos=0;
96 1
97 1 i=0;
98 1 k=0;
99 1 while(k<MenuPos)
100 1 {//寻找到开始的菜单
101 2 if(*(Head+i)==NULL)
102 2 break;//不可能出现?
103 2
104 2 if((*(Head+i) == '\n'))//&&(*(Head+i)!=NULL))
105 2 {
106 3 i+=1;
107 3 k++;
108 3 continue;
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 3
109 3 }
110 2 else
111 2 {
112 3 i+=2;
113 3 }
114 2 }
115 1 Head=Head+i;//第一个显示的菜单
116 1 i=0;//行
117 1 // i=0;
118 1 k=0;//列
119 1 while(i<4)
120 1 {
121 2 k++;
122 2 ch1=*Head;
123 2 ch2=*(Head+1);
124 2 Head+=2;
125 2 LcdCN(i,k,ch1,ch2);
126 2 if(*Head == NULL)
127 2 {
128 3 i+=1;
129 3 break;//跳出
130 3 }
131 2 else if(*Head == '\n')
132 2 {//换行
133 3 i+=1;//
134 3 k=0;
135 3 Head+=1;
136 3 }
137 2 }
138 1
139 1 while(i<4)//清空其它
140 1 {
141 2 for(k=1;k<8;k++)
142 2 LcdCN(i,k,0xa1,0xa0);
143 2 i++;
144 2 }
145 1
146 1 if(ChosenPos!=NOCHOICE)
147 1 {
148 2 LcdChar(0,0,0x20);
149 2 LcdChar(1,0,0x20);
150 2 LcdChar(2,0,0x20);
151 2 LcdChar(3,0,0x20);
152 2 LcdChar(ChosenPos,0,CHOSEN_CH);
153 2 }
154 1
155 1 }
156
157 void OnArrowUp()
158 {
159 1 //只移动标记即可
160 1 if(ChosenPos==NOCHOICE)
161 1 return;
162 1
163 1 if(ChosenPos==0)
164 1 {
165 2 if(MenuPos>0)
166 2 MenuPos-=1;
167 2 ShowMenu();
168 2 return;
169 2 }
170 1 else
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 4
171 1 {
172 2 LcdChar(ChosenPos,0,0x20);
173 2 ChosenPos-=1;
174 2 LcdChar(ChosenPos,0,CHOSEN_CH);
175 2 return;
176 2 }
177 1 }
178
179 void OnArrowDown()
180 {
181 1 //只移动标记即可
182 1 if(ChosenPos==NOCHOICE)
183 1 return;
184 1
185 1 if(ChosenPos==3)
186 1 {
187 2 if((MenuPos<MenuItemCnt-4)&&(MenuItemCnt>4))
188 2 MenuPos+=1;
189 2 ShowMenu();
190 2 return;
191 2 }
192 1 else
193 1 {
194 2 LcdChar(ChosenPos,0,0x20);
195 2 ChosenPos+=1;
196 2 LcdChar(ChosenPos,0,CHOSEN_CH);
197 2 return;
198 2 }
199 1 }
200
201 void OnCancel()
202 {
203 1 //确定父菜单
204 1 if(MenuID & 0xf000)
205 1 MenuID &= 0x0fff;
206 1 else if(MenuID & 0x0f00)
207 1 MenuID &= 0x00ff;
208 1 else if(MenuID & 0x00f0)
209 1 MenuID &= 0x000f;
210 1 else
211 1 MenuID = 0x0000;//
212 1
213 1 MenuPos=0;
214 1 ChosenPos=0;//kf
215 1 ShowMenu();
216 1 }
217
218 void OnEnter()
219 {
220 1 unsigned char *Head;
221 1 unsigned int xdata t;
222 1 unsigned char xdata i;
223 1 //产生新的ID
224 1 t=0x000f;
225 1 for(i=0;i<3;i++)
226 1 {
227 2 if((MenuID&t)==0)
228 2 {
229 3 t=(unsigned int)(MenuPos+ChosenPos+1);
230 3 if(t<=MenuItemCnt)//不能产生没有的ID
231 3 MenuID+=t;
232 3 break;
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 5
233 3 }
234 2 t<<=4;
235 2 }
236 1 //非叶子菜单显示新的菜单
237 1 Head=GetSubMenuHead(MenuID);
238 1 if(Head!=SNULL)
239 1 {
240 2 MenuPos=0;
241 2 ChosenPos=0;
242 2 ShowMenu();
243 2 }
244 1 else
245 1 SwitchMenuEntry();//跳转的处理入口
246 1 }
247
248 void OnMenuKey()
249 {
250 1 unsigned char xdata i;
251 1 if(PswLock)//锁定要求输入密码
*** ERROR C202 IN LINE 251 OF IIC[ULTRAL]\MENU.C: 'PswLock': undefined identifier
252 1 {
253 2 LcdInit();
254 2 LcdCnString(1,1,"输入密码");
255 2 GetPassword(2,2);//返回值在AppBuf[]中
256 2 i=EPR_Read(ADDR_PASSWORD);
257 2 if(AppBuf[0]==i)
*** ERROR C202 IN LINE 257 OF IIC[ULTRAL]\MENU.C: 'AppBuf': undefined identifier
258 2 {
259 3 i=EPR_Read(ADDR_PASSWORD-1);
260 3 if(i==AppBuf[1])
*** ERROR C202 IN LINE 260 OF IIC[ULTRAL]\MENU.C: 'AppBuf': undefined identifier
261 3 {
262 4 PswLock=0;
*** ERROR C202 IN LINE 262 OF IIC[ULTRAL]\MENU.C: 'PswLock': undefined identifier
263 4 MenuID=0x0000;
264 4 MenuPos=0;
265 4 ChosenPos=0;
266 4 DeskTopFlag=0;//
267 4 ShowMenu();
268 4 }
269 3 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -