📄 menu.lst
字号:
270 3 {
271 4 PswLock=1;//密码不正确
*** ERROR C202 IN LINE 271 OF IIC[ULTRAL]\MENU.C: 'PswLock': undefined identifier
272 4 DeskTopFlag=1;
273 4 ShowDesk();
274 4 }
275 3 }
276 2 }
277 1 }
278
279 void SwitchMenuEntry()
280 {
281 1 //输入:MenuID
282 1 //平时设置,节日设置
283 1 unsigned char xdata k;
284 1 if(MenuID&0x000f<=0x0002)
285 1 {//1
286 2 if((MenuID&0x00f0)<=0x00c0)
287 2 {//2:时段
288 3 if((MenuID&0x0f00)<=0x0800)
289 3 {//3:
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 6
290 4 switch(MenuID&0xf000)
291 4 {
292 5 case 0x1000:
293 5 ClrPhase();//k
294 5 return;
295 5 case 0x2000:
296 5 SetCheDao();//k
297 5 return;
298 5 case 0x3000:
299 5 SetAttribTime();//k
300 5 return;
301 5 default:
302 5 ;
303 5 }
304 4 }
305 3 else if((MenuID&0x0f00)==0x0900)//复制时段
306 3 {
307 4 CopyPhaseGroup();//k
308 4 return;
309 4 }
310 3 }
311 2 }
312 1
313 1 //其他设置
314 1 if((MenuID&0x000f)==0x0003)
315 1 {//系统设置
316 2 switch(MenuID)
317 2 {
318 3 case 0x0013://日期设置
319 3 SetSysDate();
320 3 break;
321 3 case 0x0023://时间设置
322 3 SetSytTime();
323 3 break;
324 3 case 0x0033://允许节日
325 3 k=EPR_Read(ADDR_HOLIDAY_PERMIT);
326 3 k=GetBoolKey(ChosenPos,5,k);
327 3 EPR_Page_0();
328 3 EPR_Write(ADDR_HOLIDAY_PERMIT,k);
329 3 EPR_Page_1();
330 3 break;
331 3 case 0x0043://修改节日
332 3 ModifyHoliday();
333 3 break;
334 3 case 0x0053://恢复默认
335 3 EPR_Reset();
336 3 break;
337 3 case 0x0053://立即上锁
338 3 //EPR_Reset();
339 3 break;
340 3 case 0x0063://修改密码
341 3 break;
342 3 default;
343 3 ;//MenuID=0;
344 3 }
345 2 }
346 1 else if((MenuID&0x00f0)==0x0040)
347 1 {//手动设置
348 2 switch(MenuID)
349 2 {
350 3 case 0x0014://单步运行
351 3 StepSwitch();
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 7
352 3 break;
353 3 case 0x0024://退出手动
354 3 MeterSta=MSTA_AUTO;
355 3 break;
356 3 default:
357 3 ;//
358 3 }
359 2 Oncancel();
360 2 }
361 1 else if((MenuID&0x00f0)==0x0050)
362 1 {//绿色通道
363 2 GreenWayCtrl();
364 2 }
365 1 Oncancel();
366 1 }
367 ///////////////////////////////////////////////////////
368 //具体的按键处理
369 void ClrPhase()
370 {//清除相位
371 1 //输入:MenuID
372 1 unsigned int xdata t,t1;
373 1 if((MenuID&0x000f)==0x0001)
374 1 t1=ADDR_GENARAL_SCH;
375 1 else if((MenuID&0x000f)==0x0002)
376 1 t1=ADDR_HOLIDAY_SCH;
377 1 else
378 1 return;
379 1 t=MenuID&0x00f0;
380 1 t>>=4;
381 1 t-=1;
382 1 t1=t1+t*PHASE_GROUP_LEN;
383 1
384 1 t=MenuID&0x0f00;
385 1 t>>=8;
386 1 t-=1;
387 1 t1=t1+t*PHASE_LEN;
388 1
389 1 for(t=t1;t<t1+PHASE_LEN;t++)
390 1 {
391 2 EPR_Write(t,0xff);
392 2 }
393 1 }
394
395 void SetCheDao()
396 {
397 1 //输入:MenuID,返回:无
398 1 //显示当前
399 1 unsigned char xdata kv,lie,hang;
400 1 unsigned int xdata t,t1,t2,t3;
401 1 LcdInit();
402 1 if((MenuID&0x000f)==0x0001)
403 1 t1=ADDR_GENARAL_SCH;
404 1 else if((MenuID&0x000f)==0x0002)
405 1 t1=ADDR_HOLIDAY_SCH;
406 1 else
407 1 return;
408 1 t=MenuID&0x00f0;
409 1 t>>=4;
410 1 t-=1;
411 1 t1=t1+t*PHASE_GROUP_LEN;
412 1
413 1 t=MenuID&0x0f00;
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 8
414 1 t>>=8;
415 1 t-=1;
416 1 t=t1+t*PHASE_LEN;//t指向当前相位
417 1
418 1 AppBuf[2]=EPR_Read(t1+0);
419 1 AppBuf[1]=EPR_Read(t1+1);
420 1 AppBuf[0]=EPR_Read(t1+2);
421 1
422 1 //调换一下
423 1 lie=0;
424 1 hang=0;
425 1 //输入
426 1 kv=KEY_NOTKEY;//不是任何的按键,仅为了处理方便
427 1 while(1)
428 1 {
429 2 while(kv==KEY_NOKEY)
430 2 {
431 3 kv=GetKey();
432 3 if(SecondFlag)
433 3 {
434 4 SecondCheck();//不允许以防止输出错误参数
435 4 AutoLockCnt--;
436 4 SecondFlag=0;
437 4 if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
438 4 {
439 5 DeskTopFlag=1;
440 5 PswLock=1;
441 5 return;
442 5 }
443 4 }
444 3 }
445 2 AutoLockCnt=SYS_LCD_OFF_TIME;
446 2 switch(kv)
447 2 {
448 3 case KEY_UP:
449 3 if(hang)
450 3 hang-=1;
451 3 break;
452 3 case KEY_DOWN:
453 3 if(hang<3)
454 3 hang++;
455 3 break;
456 3 case KEY_LEFT:
457 3 if(lie)
458 3 lie--;
459 3 break;
460 3 case KEY_RIGHT:
461 3 if(lie<4)
462 3 lie++;
463 3 break;
464 3 case KEY_NUM5://5健也控制
465 3 case KEY_LOGIC:
466 3 t1=hang*5+lie;
467 3 if(t1<8)
468 3 {//
469 4 t3=0x01;
470 4 for(t1=0;t1<t2;t1++)
471 4 t3<<=1;
472 4 AppBuf[0]^=t3;
473 4 }
474 3 else if(t1<16)
475 3 {
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 9
476 4 t3=0x01;
477 4 for(t1=8;t1<t2;t1++)
478 4 t3<<=1;
479 4 AppBuf[1]^=t3;
480 4 }
481 3 else if(t1<20)
482 3 {
483 4 t3=0x01;
484 4 for(t1=16;t1<t2;t1++)
485 4 t3<<=1;
486 4 AppBuf[2]^=t3;
487 4 }
488 3 break;
489 3 case KEY_ENTER:
490 3 EPR_Page_0();//Page1为正常,Page0为缓冲
491 3 EPR_Write(t+0,AppBuf[2]);
492 3 EPR_Write(t+1,AppBuf[1]);
493 3 EPR_Write(t+2,AppBuf[0]);
494 3 EPR_Page_1();
495 3 //LcdCurOff();
496 3 return;
497 3 case KEY_MENU:
498 3 DeskTopFlag=1;
499 3 MenuID=0x0000;
500 3 //这里不能加break
501 3 case KEY_CANCEL:
502 3 //LcdCurOff();//OnCancel()中会关闭光标
503 3 return;
504 3 default:
505 3 ;
506 3 }
507 2 if(kv!=KEY_NOTKEY)//不是第一次
508 2 LcdCur(hang,lie);
509 2 //显示
510 2 LcdCnString(0,0,"东");LcdCnString(1,0,"北");
511 2 LcdCnString(2,0,"西");LcdCnString(3,0,"南");
512 2 t2=0;t3=2;
513 2 for(t1=0x01;t1<=0x80;t1=t1<<1)
514 2 {//0
515 3 LcdChar(t2,t3,CHOOSE_H);
516 3 if(AppBuf[0] & t1)//选中
517 3 LcdAddChar(NOTCHOSEN_L);
518 3 else
519 3 LcdAddChar(CHOSEN_L);
520 3 t3++;
521 3 if(t3==7))
522 3 {
523 4 t2+=1;
524 4 t3=2;
525 4 }
526 3 }
527 2 for(t1=0x01;t1<=0x80;t1=t1<<1)
528 2 {//1
529 3 LcdChar(t2,t3,CHOOSE_H);
530 3 if(AppBuf[1] & t1)//选中
531 3 LcdAddChar(NOTCHOSEN_L);
532 3 else
533 3 LcdAddChar(CHOSEN_L);
534 3 t3++;
535 3 if(t3==7))
536 3 {
537 4 t2+=1;
C51 COMPILER V7.50 MENU 04/03/2007 10:38:50 PAGE 10
538 4 t3=2;
539 4 }
540 3 }
541 2 for(t1=0x01;t1<=0x08;t1=t1<<1)
542 2 {//2
543 3 LcdChar(t2,t3,CHOOSE_H);
544 3 if(AppBuf[2] & t1)//选中
545 3 LcdAddChar(NOTCHOSEN_L);
546 3 else
547 3 LcdAddChar(CHOSEN_L);
548 3 t3++;
549 3 if(t3==7))
550 3 {
551 4 t2+=1;
552 4 t3=2;
553 4 }
554 3 }
555 2 kv=KEY_NOKEY;
556 2 }
557 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -