📄 main.lst
字号:
374 1 }
375 void menu_2_4(void){
376 1
377 1 }
378 void menu_2_5(void){
379 1
380 1 }
381 void menu_2_6(void){
382 1 { unsigned char temp_array,temp_scr,key_value;
383 2 temp_array = ArrayLine;
384 2 temp_scr = ScrLine;
385 2 ArrayLine=0;
386 2 ScrLine=0;
387 2 InitLcd();
388 2 watchdog();
389 2 while(1)
390 2 { PrintStr(0,0,second_menu_6[ArrayLine]);
391 3 PrintStr(1,0,second_menu_6[ArrayLine+1]);
392 3 PrintStr(2,0,second_menu_6[ArrayLine+2]);
393 3 PrintStr(3,0," ");
394 3 while(1)
395 3 { key_value=GetKey(12);
396 4 if(key_value!=0xff)
397 4 break;
398 4 }
399 3 switch(key_value)
400 3 {
401 4 case ESC:
402 4 ScrLine = temp_scr;
403 4 ArrayLine = temp_array;
404 4 return;
405 4 }
406 3 }
407 2
408 2 }
409 1 }
410 //************************************************************
411 //二级菜单
412 //************************************************************
413 void d_second(second_num)
414 unsigned char second_num;
415 {
416 1 switch(second_num)
417 1 { case 0:
418 2 menu_2_1();
419 2 break;
420 2 case 1:
421 2 menu_2_2();
422 2 break;
423 2 case 2:
424 2 menu_2_3();
425 2 break;
426 2 case 3:
427 2 menu_2_4();
C51 COMPILER V7.08 MAIN 10/31/2007 10:13:27 PAGE 8
428 2 break;
429 2 case 4:
430 2 menu_2_5();
431 2 break;
432 2 case 5:
433 2 menu_2_6();
434 2 break;
435 2 }
436 1 }
437 //*****************************************************************
438 //主屏显示
439 //*****************************************************************
440 void welcome(void)
441 { unsigned char xdata key_value,secb,seca,temp[9];//;,bb
442 1 struct DATE d_date;
443 1 struct TIME t_time;
444 1 while(1)
445 1 {
446 2 F_back = 0x55; //在主屏,不需要返回F_baCK=0X55标识需要返回标志
447 2 key_value=GetKey(12);
448 2 if(key_value==ENTER) //按确认键进入主菜单
449 2 {
450 3 F_back = 0xaa; //标识需要返回标志
451 3 d_first();
452 3 }
453 2
454 2 watchdog();
455 2 secb=SECOND; //每秒刷新一次时间
456 2 if(seca!=secb)
457 2 {
458 3 seca=secb;
459 3 GetTime(&t_time);
460 3 watchdog();
461 3 GetDate(&d_date);
462 3 if((d_date.year>99)||(d_date.mon>12)||(d_date.day>31)||(t_time.hour>23)||(t_time.min>59)||(t_time.sec>5
-9))
463 3 {
464 4 //repair_time();
465 4 InitLcd();
466 4 PrintStr(1,2,"时钟出错"); //时钟出错后把年月日时分秒设为默认值后进入时钟设置界面
467 4 Delay1(5000);
468 4 InitLcd();
469 4 }
470 3 PrintStr(1,0," 菜单程序调试 ");
471 3 PrintStr(2,6," ");
472 3 PrintStr(2,0," ");
473 3 PrintStr(0,0," 实验程序 ");
474 3 PrintStr(3,6," ");
475 3 PrintStr(3,0," ");
476 3
477 3 temp[0] = d_date.year/10 + 0x30;
478 3 temp[1] = d_date.year%10 + 0x30;
479 3 temp[2] = '-';
480 3 temp[3] = d_date.mon/10 + 0x30;
481 3 temp[4] = d_date.mon%10 + 0x30;
482 3 temp[5] = '-';
483 3 temp[6] = d_date.day/10 + 0x30;
484 3 temp[7] = d_date.day%10 + 0x30;
485 3 temp[8] = 0;
486 3 PrintStr(2,2,temp);
487 3
488 3 temp[0] = t_time.hour/10 + 0x30;
C51 COMPILER V7.08 MAIN 10/31/2007 10:13:27 PAGE 9
489 3 temp[1] = t_time.hour%10 + 0x30;
490 3 temp[2] = ':';
491 3 temp[3] = t_time.min/10 + 0x30;
492 3 temp[4] = t_time.min%10 + 0x30;
493 3 temp[5] = ':';
494 3 temp[6] = t_time.sec/10 + 0x30;
495 3 temp[7] = t_time.sec%10 + 0x30;
496 3 temp[8] = 0;
497 3 PrintStr(3,2,temp);
498 3
499 3 }
500 2 }
501 1 }
502 //*****************************************************
503 //定时器0初始化10MS中断
504 //*****************************************************
505 void InitTimer0(void)
506 {
507 1 unsigned char temp;
508 1 //t0_error = 0;
509 1 temp = TMOD;
510 1 temp &= 0xf0;
511 1 TMOD = temp|0x01; //timer0 work mode 1,act as the timer ticker
512 1 TL0 = 0x00;
513 1 TH0 = 0xB8; //interrupt every 10 ms,at 11.0592MHz
514 1 /// watchdog();
515 1 }
516 //*********************************
517 //定时器0中断服务子程序
518 //*********************************
519 void timer0(void) interrupt 1 using 0
520 {
521 1 ET0 =0;
522 1 TL0 = 0x00;
523 1 TH0 = 0xB8; //interrupt every 10 milisecond,at 11.0592MHz
524 1 Ticker++;
525 1 ET0 = 1;
526 1 }
527 //*************************************************************
528 //主程序
529 //*************************************************************
530 void main()
531 {
532 1 Init12c887();
533 1 InitTimer0();
534 1 EA=1;
535 1 ET0=1;
536 1 TR0=1;
537 1 InitLcd();
538 1 AUXR=0x01; //在使用MOVX指令时访问外部RAM,如果AUXR = 0X01
539 1 //则在使用MOVX时访问片内自带RAM
540 1 init5045();
541 1 LED=0X86;
542 1 ClearGraph();
543 1 X5045WriteStatus(0x00);
544 1 init5045();
545 1 welcome();
546 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1597 ----
C51 COMPILER V7.08 MAIN 10/31/2007 10:13:27 PAGE 10
CONSTANT SIZE = 817 ----
XDATA SIZE = 7 15
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
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 + -