📄 menu.lst
字号:
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 + -