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

📄 menu.lst

📁 一个以前开发的实际应用的交通灯控制器程序
💻 LST
📖 第 1 页 / 共 4 页
字号:

 848   3                      k=XBYTE[RTC_BASE+RegYear];//年
 849   3                      i=0;
 850   3                      while(k>=10)
 851   3                      {
 852   4                              k-=10;
 853   4                              i++;
 854   4                      }
 855   3                      i+='0';
 856   3                      LcdChar(1,2,i);
 857   3                      k+='0';
 858   3                      LcdAddChar(k);
 859   3                      LcdAddChar('-');
 860   3                      k=XBYTE[RTC_BASE+RegMonth];//月
 861   3                      i=0;
 862   3                      while(k>=10)
 863   3                      {
 864   4                              k-=10;
 865   4                              i++;
 866   4                      }
 867   3                      i+='0';
 868   3                      LcdAddChar(i);
 869   3                      k+='0';
 870   3                      LcdAddChar(k);
 871   3                      LcdAddChar('-');
 872   3                      k=XBYTE[RTC_BASE+RegDate];//日
 873   3                      i=0;
 874   3                      while(k>=10)
 875   3                      {
 876   4                              k-=10;
 877   4                              i++;
 878   4                      }
 879   3                      i+='0';
 880   3                      LcdAddChar(i);
 881   3                      k+='0';
 882   3                      LcdAddChar(k);
 883   3                      }
 884   2                      kv=KEY_NOKEY;
 885   2              }       
 886   1              
 887   1      }
 888          
 889          void StepSwitch()
 890          {
 891   1              static unsigned char CurSta=0;
 892   1              if(MeterSta!=MSTA_MANUAL)//第一次进行检查当前状态
 893   1              {
 894   2                      if(SecondCnt<=GreenTime-GsTime)
 895   2                              CurSta=0;                                       
 896   2                      else if(SecondCnt<=GreenTime)
 897   2                              CurSta=1;
 898   2                      else if(SecondCnt<=GreenTime+GsTime)
 899   2                              CurSta=2;
 900   2                      else if(SecondCnt<=GreenTime+GsTime+YellowTime)
 901   2                              CurSta=3;
 902   2                      else if(SecondCnt<=GreenTime+GsTime+YellowTime+RedTime)
 903   2                              CurSta=4;
 904   2                      else
 905   2                              CurSta=0;
 906   2              }
 907   1      
 908   1              switch(CurSta)
 909   1              {
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 16  

 910   2                      case 0:
 911   2                              ManChanelSta=STA_GREEN;
 912   2                              CarChanelSta=STA_GREEN;
 913   2                              SecondCnt=GreenTime-GsTime-1;
 914   2                              break;
 915   2                      case 1:
 916   2                              ManChanelSta=STA_GS;
 917   2                              CarChanelSta=STA_GREEN;
 918   2                              SecondCnt=GreenTime-1;
 919   2                              break;
 920   2                      case 2:
 921   2                              ManChanelSta=STA_RED;
 922   2                              CarChanelSta=STA_GS;
 923   2                              SecondCnt=GreenTime+GsTime-1;
 924   2                              break;
 925   2                      case 3:
 926   2                              ManChanelSta=STA_RED;
 927   2                              CarChanelSta=STA_YELLOW;
 928   2                              SecondCnt=GreenTime+GsTime+YellowTime-1;
 929   2                              break;
 930   2                      case 4:
 931   2                              ManChanelSta=STA_RED;
 932   2                              CarChanelSta=STA_RED;
 933   2                              SecondCnt=GreenTime+GsTime+YellowTime+RedTime-1;
 934   2                              break;
 935   2                      default:
 936   2                                      CurSta=0;
 937   2              }
 938   1              
 939   1              CurSta++;
 940   1              if(CurSta>=4)
 941   1              {
 942   2                      PhaseSwitch();
 943   2                      CurSta=0;
 944   2              }
 945   1              
 946   1              MeterSta=MSTA_MANUAL;
 947   1              //ManuelFlag=1;//手动控制
 948   1              //GreenWayFlag=0;//绿色通道关闭
 949   1      }
 950          
 951          void ModifyHoliday()
 952          {//修改节日
 953   1      //跟设置相位时间一样的做法
 954   1      
 955   1      //输入:无,返回:无
 956   1      //显示当前
 957   1              unsigned char xdata kv,hang,pos,i,k;
 958   1              unsigned int xdata t,t1,t2,t3;
 959   1              //LcdInit();
 960   1              hang=0;
 961   1              pos=0;
 962   1      //输入
 963   1              kv=KEY_NOTKEY;
 964   1              while(1)
 965   1              {
 966   2                      while(kv==KEY_NOKEY)
 967   2                      {
 968   3                              kv=GetKey();
 969   3                              if(SecondFlag)
 970   3                              {
 971   4                                      SecondCheck();
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 17  

 972   4                                      AutoLockCnt--;
 973   4                                      SecondFlag=0;
 974   4                                      if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
 975   4                                      {
 976   5                                              DeskTopFlag=1;
 977   5                                              PswLock=1;
 978   5                                              return;
 979   5                                      }
 980   4                              }
 981   3                      }
 982   2                      AutoLockCnt=SYS_LCD_OFF_TIME;
 983   2                      switch(kv)
 984   2                      {
 985   3                              case KEY_UP:
 986   3                              case KEY_LEFT:
 987   3                                      LcdChar(hang,0,0x20);
 988   3                                      if(hang==0)
 989   3                                      {
 990   4                                              if(pos>0)
 991   4                                                      pos--;
 992   4                                      }
 993   3                                      else
 994   3                                              hang--;
 995   3                                      //LcdChar(hang,0,CHOSEN_CH);
 996   3                                      break;
 997   3                              case KEY_DOWN:
 998   3                              case KEY_RIGHT:
 999   3                                      LcdChar(hang,0,0x20);
1000   3                                      if(hang>=3)
1001   3                                      {
1002   4                                              hang=3;
1003   4                                              if(pos<19-3)
1004   4                                                      pos++;
1005   4                                      }
1006   3                                      else
1007   3                                              hang++;
1008   3                                      break;
1009   3                              case KEY_DEL://删除节日
1010   3                              case KEY_BKSPACE:
1011   3                                      EPR_Page_0();
1012   3                                      t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN;
1013   3                                      EPR_Write(t2-0,0xff);//年
1014   3                                      EPR_Write(t2-1,0xff);//月
1015   3                                      EPR_Write(t2-2,0xff);//日
1016   3                                      EPR_Page_1();
1017   3                                      return;
1018   3                              case KEY_ENTER:
1019   3                                      LcdInit();
1020   3                                      LcdCnString(1,0,"年:");
1021   3                                      k=Get256Key(1,2);
1022   3                                      if(k<100)
1023   3                                      {
1024   4                                              EPR_Page_0();
1025   4                                              t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-0;//年
1026   4                                              EPR_Write(t2,k);
1027   4                                              EPR_Page_1();
1028   4                                      }
1029   3                                      LcdCnString(1,0,"月:");
1030   3                                      k=Get256Key(1,2);
1031   3                                      if(k<=12)
1032   3                                      {
1033   4                                              EPR_Page_0();
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 18  

1034   4                                              t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-1;//月
1035   4                                              EPR_Write(t2,k);
1036   4                                              EPR_Page_1();
1037   4                                      }
1038   3                                      LcdCnString(1,0,"日:");
1039   3                                      k=Get256Key(1,2);
1040   3                                      if(k<=31)
1041   3                                      {
1042   4                                              EPR_Page_0();
1043   4                                              t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-2;//日
1044   4                                              EPR_Write(t2,k);
1045   4                                              EPR_Page_1();
1046   4                                      }
1047   3                                      return;
1048   3                              case KEY_MENU:
1049   3                                      DeskTopFlag=1;
1050   3                                      MenuID=0x0000;
1051   3                              case KEY_CANCEL:
1052   3                                      return;
1053   3                              default:
1054   3                                      ;       
1055   3                      }
1056   2                      LcdInit();
1057   2                      for(t1=0;t1<4;t1++)
1058   2                      {
1059   3                              if(t1>=20)
1060   3                                      break;
1061   3                              t2=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-0;//年
1062   3                              k=(EPR_Read(t2);
1063   3                              if(k>=100)
1064   3                              {//无效
1065   4                                      LcdChar(hang,1,'-');LcdAddChar('-');LcdAddChar('/');
1066   4                                      LcdAddChar('-');LcdAddChar('-');LcdAddChar('/');
1067   4                                      LcdAddChar('-');LcdAddChar('-');
1068   4                              }
1069   3                              else
1070   3                              {
1071   4                                      i=0;
1072   4                                      while(k>=10)
1073   4                                      {
1074   5                                              k-=10;
1075   5                                              i++;
1076   5                                      }
1077   4                                      i+='0';
1078   4                                      LcdChar(t1,1,i);
1079   4                                      k+='0';
1080   4                                      LcdAddChar(k);
1081   4                                      LcdAddChar('/');
1082   4                                      k=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-1;//月
1083   4                                      i=0;
1084   4                                      while(k>=10)
1085   4                                      {
1086   5                                              k-=10;
1087   5                                              i++;
1088   5                                      }
1089   4                                      i+='0';
1090   4                                      LcdAddChar(i);
1091   4                                      k+='0';
1092   4                                      LcdAddChar(k);
1093   4                                      LcdAddChar('/');
1094   4                                      k=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-2;//日
1095   4                                      i=0;
C51 COMPILER V7.50   MENU                                                                  04/03/2007 10:38:50 PAGE 19  

1096   4                                      while(k>=10)
1097   4                                      {
1098   5                                              k-=10;
1099   5                                              i++;
1100   5                                      }
1101   4                                      i+='0';
1102   4                                      LcdAddChar(i);
1103   4                                      k+='0';
1104   4                                      LcdAddChar(k);
1105   4                              }
1106   3                      }
1107   2                      LcdChar(hang,0,CHOSEN_CH);
1108   2                      kv=KEY_NOKEY;
1109   2              }       
1110   1      }
1111          
1112          void GreenWayCtrl()
1113          {
1114   1              unsigned char xdata k;
1115   1              k=MenuPos+ChosenPos;
1116   1              if(k==0)
1117   1              {//禁止通道
1118   2                      MeterSta=MSTA_AUTO;
1119   2                      HourUpdate();//更新所有
1120   2                      PhaseSwitch();
1121   2              }
1122   1              else if(k<=8)
1123   1              {
1124   2                      k-=1;
1125   2                      MeterSta=MSTA_GREENWAY;
1126   2                      CheDaoBuf[2]=GreenWay[k][0];
1127   2                      CheDaoBuf[1]=GreenWay[k][1];
1128   2                      CheDaoBuf[0]=GreenWay[k][2];
1129   2                      SecondCnt=0;
1130   2              }
1131   1      }

C51 COMPILATION COMPLETE.  0 WARNING(S),  13 ERROR(S)

⌨️ 快捷键说明

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