📄 menu.lst
字号:
186 2 if(ReFresh==1) //显示菜单
187 2 {
188 3 unsigned char X,Y;
189 3 Clear(36,200);
190 3 p=Menu;
191 3 p++;
192 3 X=GetValue(p);
193 3 p=Jump(p,1);
194 3 Y=GetValue(p);
195 3 p=strchr(p,')');
196 3 p++;
197 3 p=MyPrintf(X,Y,p,0);
198 3 ItemNum=0;
199 3 while(( p=strchr(p,'(') )!=NULL)
200 3 {
201 4 //Item
202 4 char TYPE=0;
203 4 p++;
204 4 X=GetValue(p);
205 4 p=Jump(p,1);
206 4 Y=GetValue(p);
207 4 p=strchr(p,')');
208 4 p++;
209 4 p=MyPrintf(X,Y,p,0);
210 4 p++;
211 4 ParaTotal[ItemNum]=GetParaTotal(p);
212 4 //Para
213 4 p=Jump(p,TempList[ItemNum]);
214 4 if(ItemSel==ItemNum)
215 4 {
216 5 TYPE=1;
217 5 //显示左箭头
218 5 if(TempList[ItemSel]!=0)
219 5 dprintf(X+18,Y,LeftArrow);
220 5 //显示右箭头
221 5 if(TempList[ItemSel]!=ParaTotal[ItemSel]-1)
222 5 dprintf(X+20+Len(p),Y,RightArrow);
223 5 }
224 4 p=MyPrintf(X+20,Y,p,TYPE);
225 4 ItemNum++;
226 4 }
227 3 ItemTotal=ItemNum;
228 3 ReFresh=0;
229 3 }
230 2
231 2 if(CheckKeyF==1) //键盘检测
232 2 {
233 3 CheckKey();
234 3 CheckKeyF=0;
235 3 }
236 2
237 2 if(Key[0].pressed==1) //检测到上键
238 2 {
239 3 Key[0].pressed=0;
240 3 if(ItemSel>0)
241 3 {
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 5
242 4 ItemSel--;
243 4 ReFresh=1;
244 4 }
245 3 }
246 2
247 2 if(Key[1].pressed==1) //检测到下键
248 2 {
249 3 Key[1].pressed=0;
250 3 if(ItemSel<(ItemTotal-1))
251 3 {
252 4 ItemSel++;
253 4 ReFresh=1;
254 4 }
255 3 }
256 2
257 2 if(Key[2].pressed==1) //检测到-键
258 2 {
259 3 Key[2].pressed=0;
260 3 if(TempList[ItemSel]>0)
261 3 {
262 4 TempList[ItemSel]--;
263 4 ReFresh=1;
264 4 }
265 3 }
266 2
267 2 if(Key[3].pressed==1) //检测到+键
268 2 {
269 3 Key[3].pressed=0;
270 3 if(TempList[ItemSel]<ParaTotal[ItemSel]-1)
271 3 {
272 4 TempList[ItemSel]++;
273 4 ReFresh=1;
274 4 }
275 3 }
276 2
277 2
278 2 if(Key[6].pressed==1) //检测到放弃键,不修改参数值
279 2 {
280 3 ClearKey();
281 3 Clear(0,240);
282 3 return 0;
283 3 }
284 2
285 2
286 2 if(Key[7].pressed==1) //检测到确定键,修改参数值
287 2 {
288 3 for(i=0;i<ItemTotal;i++)
289 3 ParaValueTable[i]=TempList[i];
290 3 ClearKey();
291 3 Clear(0,240);
292 3 return 1;
293 3 }
294 2
295 2 }//while
296 1 }
297
298
299 void Help(char * ptr) //文本分页显示函数,用于显示说明
300 {
301 1 int i;
302 1 char *p[5]; //支持最多5页显示
303 1 unsigned char currentp=0; //记录当前页
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 6
304 1 char temp=1;
305 1 for(i=1;i<5;i++) p[i]=&temp;
306 1 SFRPAGE=0x0F;
307 1 Clear(0,240);
308 1 p[0]=ptr;
309 1 p[1]=tprintf(0,0,p[0]);
310 1 dprintf(0,208,line);
311 1 dprintf(26,224,"确定");
312 1 if(*p[1]!='\0') dprintf(6,224,"兦"); //一页未显示完
313 1 while(1)
314 1 {
315 2 if(CheckKeyF==1) //键盘检测
316 2 {
317 3 CheckKey();
318 3 CheckKeyF=0;
319 3 }
320 2
321 2 if(Key[0].pressed==1) //检测到上键
322 2 {
323 3 if(currentp>0) //可以向上翻页
324 3 {
325 4 Clear(0,240);
326 4 currentp--;
327 4 tprintf(0,0,p[currentp]);
328 4 dprintf(0,208,line);
329 4 dprintf(26,224,"确定");
330 4 dprintf(6,224,DownArrow);
331 4 if(currentp==0)
332 4 dprintf(1,224," ");
333 4 else
334 4 dprintf(1,224,UpArrow);
335 4 }
336 3 Key[0].pressed=0;
337 3 }
338 2
339 2 if(Key[1].pressed==1) //检测到下键
340 2 {
341 3 if(*p[currentp+1]!='\0') //可以向下翻页
342 3 {
343 4 Clear(0,240);
344 4 currentp++;
345 4 p[currentp+1]=tprintf(0,0,p[currentp]);
346 4 dprintf(0,208,line);
347 4 dprintf(26,224,"确定");
348 4 dprintf(1,224,UpArrow);
349 4 if(p[currentp+1]==NULL)
350 4 dprintf(6,224," ");
351 4 else
352 4 dprintf(6,224,DownArrow);
353 4 }
354 3 Key[1].pressed=0;
355 3 }
356 2
357 2 if(Key[5].pressed==1)
358 2 {
359 3 ClearKey();
360 3 Clear(0,240);
361 3 return;
362 3 }
363 2 }
364 1 }
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2522 ----
CONSTANT SIZE = 253 ----
XDATA SIZE = ---- 140
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -