⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.lst

📁 一个以前开发的实际应用的交通灯控制器程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 558          
 559          void SetAttribTime()
 560          {
 561   1      //输入:MenuID,返回:无
 562   1      //显示当前
 563   1              unsigned char xdata kv,hang;
 564   1              unsigned int xdata t,t1,t2,t3;
 565   1              LcdInit();
 566   1              hang=0;
 567   1              if((MenuID&0x000f)==0x0001)
 568   1                      t1=ADDR_GENARAL_SCH;
 569   1              else if((MenuID&0x000f)==0x0002)
 570   1                      t1=ADDR_HOLIDAY_SCH;
 571   1              else
 572   1                      return;
 573   1              t=MenuID&0x00f0;
 574   1              t>>=4;
 575   1              t-=1;
 576   1              t1=t1+t*PHASE_GROUP_LEN;
 577   1              
 578   1              t=MenuID&0x0f00;
 579   1              t>>=8;
 580   1              t-=1;
 581   1              t=t1+t*PHASE_LEN;//t指向当前相位
 582   1      //输入
 583   1              kv=KEY_NOTKEY;
 584   1              while(1)
 585   1              {
 586   2                      while(kv==KEY_NOKEY)
 587   2                      {
 588   3                              kv=GetKey();
 589   3                              if(SecondFlag)
 590   3                              {
 591   4                                      SecondCheck();
 592   4                                      AutoLockCnt--;
 593   4                                      SecondFlag=0;
 594   4                                      if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
 595   4                                      {
 596   5                                              DeskTopFlag=1;
 597   5                                              PswLock=1;
 598   5                                              return;
 599   5                                      }
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 11  

 600   4                              }
 601   3                      }
 602   2                      AutoLockCnt=SYS_LCD_OFF_TIME;
 603   2                      switch(kv)
 604   2                      {
 605   3                              case KEY_UP:
 606   3                              case KEY_LEFT:
 607   3                                      LcdChar(hang,0,0x20);
 608   3                                      if(hang>=1)
 609   3                                              hang--;
 610   3                                      LcdChar(hang,0,CHOSEN_CH);
 611   3                                      break;
 612   3                              case KEY_DOWN:
 613   3                              case KEY_RIGHT:
 614   3                                      LcdChar(hang,0,0x20);
 615   3                                      if(hang<3)
 616   3                                              hang++;
 617   3                                      LcdChar(hang,0,CHOSEN_CH);
 618   3                                      break;
 619   3                              case KEY_ENTER:
 620   3                                      t1=Get256Key(hang,5);
 621   3                                      if(t1!=255)
 622   3                                      {       
 623   4                                              if(hang==1)//绿闪
 624   4                                              t2=(unsigned int)EPR_Read(t+GT_ADJ);//GT
 625   4                                              if(t1>=t2)
 626   4                                              {
 627   5                                                      LcdInit();
 628   5                                                      LcdCnString(0,3,"警告");
 629   5                                                      LcdCnString(2,1,"绿灯时间必需大");
 630   5                                                      LcdCnString(3,0,"于绿闪时间");
 631   5                                                      kv=KEY_NOKEY;
 632   5                                                      while(kv==KEY_NOKEY)
 633   5                                                              kv=GetKey();                                    
 634   5                                              }
 635   4                                              EPR_Page_0();
 636   4                                              Write(t+3+hang,t1);     
 637   4                                              EPR_Page_1();
 638   4                                              PrintNum(hang,5,t1);
 639   4                                      }
 640   3                                      return;
 641   3                              case KEY_MENU:
 642   3                                      DeskTopFlag=1;
 643   3                                      MenuID=0x0000;
 644   3                              case KEY_CANCEL:
 645   3                                      return;
 646   3                              default:
 647   3                                      ;       
 648   3                      }
 649   2                      t1=(unsigned int)EPR_Read(t+GT_ADJ);//GT
 650   2                      PrintNum(0,5,t1);
 651   2                      t1=(unsigned int)EPR_Read(t+GST_ADJ);//GST
 652   2                      PrintNum(1,5,t1);
 653   2                      t1=(unsigned int)EPR_Read(t+YT_ADJ);//YT
 654   2                      PrintNum(2,5,t1);
 655   2                      t1=(unsigned int)EPR_Read(t+RT_ADJ);//RT
 656   2                      PrintNum(3,5,t1);
 657   2                      LcdChar(hang,0,CHOSEN_CH);
 658   2                      kv=KEY_NOKEY;
 659   2              }
 660   1      }
 661          
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 12  

 662          void CopyPhaseGroup()
 663          {//复制时段
 664   1              //输入:MenuID
 665   1      //
 666   1              unsigned int xdata t,t1;
 667   1              unsigned char xdata i,k;
 668   1              LcdInit();
 669   1              if((MenuID&0x000f)==0x0001)
 670   1              {
 671   2                      t1=ADDR_GENARAL_SCH;
 672   2                      LcdCnString(0,2,"平时设置");
 673   2              }
 674   1              else if((MenuID&0x000f)==0x0001)
 675   1              {
 676   2                      t1=ADDR_HOLIDAY_SCH;
 677   2                      LcdCnString(0,2,"节日设置");
 678   2              }
 679   1              else
 680   1                      return;
 681   1              t=MenuID&0x00f0;
 682   1              t>>=4;
 683   1              t-=1;
 684   1              t=t1+t*PHASE_GROUP_LEN;//t指向当前相组
 685   1              
 686   1              LcdCnString(2,0,"来自时段:");
 687   1              t2=Get44Key(2,5);
 688   1              if(t2<12)
 689   1              {
 690   2                      t2=t1+t2*PHASE_GROUP_LEN;//源相组
 691   2                      EPR_Page_0();
 692   2                      for(i=0;i<8*7;i++)
 693   2                      {
 694   3                              k=EPR_Read(t2+i);
 695   3                              EPR_Write(t+i,k);       
 696   3                      }
 697   2                      EPR_Page_1();
 698   2              }
 699   1      }
 700          
 701          void SetSysTime()
 702          {
 703   1      //输入:无,返回:无
 704   1              unsigned char xdata kv,i,k;
 705   1      
 706   1              kv=KEY_NOTKEY;
 707   1              while(1)
 708   1              {
 709   2                      while(kv==KEY_NOKEY)
 710   2                      {
 711   3                              kv=GetKey();
 712   3                              if(SecondFlag)
 713   3                              {
 714   4                                      SecondCheck();
 715   4                                      AutoLockCnt--;
 716   4                                      SecondFlag=0;
 717   4                                      if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
 718   4                                      {
 719   5                                              DeskTopFlag=1;
 720   5                                              PswLock=1;
 721   5                                              return;
 722   5                                      }
 723   4                              }
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 13  

 724   3                      }
 725   2                      AutoLockCnt=SYS_LCD_OFF_TIME;
 726   2                      switch(kv)
 727   2                      {
 728   3                              case KEY_ENTER:
 729   3                                      LcdInit();
 730   3                                      LcdCnString(1,0,"小时:");
 731   3                                      k=Get256Key(1,3);
 732   3                                      if(k<24)
 733   3                                              XBYTE[RTC_BASE+RegHours]=k;
 734   3                                      LcdCnString(1,0,"分钟:");
 735   3                                      k=Get256Key(1,3);
 736   3                                      if(k<60)
 737   3                                              XBYTE[RTC_BASE+RegMinutes]=k;
 738   3                                      LcdCnString(1,0,"秒:");
 739   3                                      k=Get256Key(1,3);
 740   3                                      if(k<60)
 741   3                                              XBYTE[RTC_BASE+RegSeconds]=k;
 742   3                                      return;
 743   3                              case KEY_MENU:
 744   3                                      DeskTopFlag=1;
 745   3                                      MenuID=0x0000;
 746   3                              case KEY_CANCEL:                        
 747   3                                      return;
 748   3                              default:
 749   3                                      ;
 750   3                      }
 751   2                      LcdInit();
 752   2                      {//显示当前时间
 753   3                      LcdCnString(0,2,"当前时间");
 754   3                      k=XBYTE[RTC_BASE+RegHours];//小时
 755   3                      i=0;
 756   3                      while(k>=10)
 757   3                      {
 758   4                              k-=10;
 759   4                              i++;
 760   4                      }
 761   3                      i+='0';
 762   3                      LcdChar(1,2,i);
 763   3                      k+='0';
 764   3                      LcdAddChar(k);
 765   3                      LcdAddChar(':');
 766   3                      k=XBYTE[RTC_BASE+RegMinutes];//分钟
 767   3                      i=0;
 768   3                      while(k>=10)
 769   3                      {
 770   4                              k-=10;
 771   4                              i++;
 772   4                      }
 773   3                      i+='0';
 774   3                      LcdAddChar(i);
 775   3                      k+='0';
 776   3                      LcdAddChar(k);
 777   3                      LcdAddChar(':');
 778   3                      k=XBYTE[RTC_BASE+RegSeconds];//秒
 779   3                      i=0;
 780   3                      while(k>=10)
 781   3                      {
 782   4                              k-=10;
 783   4                              i++;
 784   4                      }
 785   3                      i+='0';
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 14  

 786   3                      LcdAddChar(i);
 787   3                      k+='0';
 788   3                      LcdAddChar(k);
 789   3                      }
 790   2                      kv=KEY_NOKEY;
 791   2              }       
 792   1              
 793   1      }
 794          
 795          void SetSysDate()
 796          {
 797   1      //输入:无,返回:无
 798   1              unsigned char xdata kv,i,k;
 799   1      
 800   1              kv=KEY_NOTKEY;
 801   1              while(1)
 802   1              {
 803   2                      while(kv==KEY_NOKEY)
 804   2                      {
 805   3                              kv=GetKey();
 806   3                              if(SecondFlag)
 807   3                              {
 808   4                                      SecondCheck();
 809   4                                      AutoLockCnt--;
 810   4                                      SecondFlag=0;
 811   4                                      if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
 812   4                                      {
 813   5                                              DeskTopFlag=1;
 814   5                                              PswLock=1;
 815   5                                              return;
 816   5                                      }
 817   4                              }
 818   3                      }
 819   2                      AutoLockCnt=SYS_LCD_OFF_TIME;
 820   2                      switch(kv)
 821   2                      {
 822   3                              case KEY_ENTER:
 823   3                                      LcdInit();
 824   3                                      LcdCnString(1,0,"年:");
 825   3                                      k=Get256Key(1,2);
 826   3                                      if(k<100)
 827   3                                              XBYTE[RTC_BASE+RegYear]=k;
 828   3                                      LcdCnString(1,0,"月:");
 829   3                                      k=Get256Key(1,2);
 830   3                                      if(k<=12)
 831   3                                              XBYTE[RTC_BASE+RegMonth]=k;
 832   3                                      LcdCnString(1,0,"日:");
 833   3                                      k=Get256Key(1,2);
 834   3                                      if(k<=31)
 835   3                                              XBYTE[RTC_BASE+RegDate]=k;
 836   3                                      return;
 837   3                              case KEY_MENU:
 838   3                                      DeskTopFlag=1;
 839   3                                      MenuID=0x0000;
 840   3                              case KEY_CANCEL:
 841   3                                      return;
 842   3                              default:
 843   3                                      ;       
 844   3                      }
 845   2                      LcdInit();
 846   2                      {//显示当前时间
 847   3                      LcdCnString(0,2,"当前日期");
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 15  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -