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

📄 hicj6.lst

📁 实用的空调计费系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 925   1       {
 926   2         if(Ac_New)
 927   2          {
 928   3           write7279(UNDECODE+4,0,1);             // DIG(7+4)=11  Battery Red
 929   3           write7279(UNDECODE+5,Bat_Val[4],1);    // DIG(7+5)=12  Battery Green
 930   3           }
 931   2           else
 932   2           {
 933   3            Cs_Bat=0;
 934   3            P1=0;
 935   3            short_delay();
 936   3            Bat_New=Bat_Old=Bat;
 937   3            if(Bat_New){Battery=Bat_Val[0]; }
 938   3               else{Battery=Bat_Val[4];}
 939   3            for(i=0;i<5;i++)
 940   3            {
 941   4              P1=i;
 942   4              short_delay();
 943   4              Bat_New=Bat;
 944   4              Bat_Tmp=Bat_New^Bat_Old;
 945   4              Bat_Old=Bat_New;
 946   4              if(Bat_Tmp)
 947   4              {
 948   5               Battery=Bat_Val[i];
 949   5              }
 950   4            }
 951   3           write7279(UNDECODE+5,0,1);
 952   3           write7279(UNDECODE+4,Battery,1);
 953   3           }
 954   2       }
 955   1      }
 956          
 957          /**********************************************************
 958          *名        称:Short_Pro
 959          *功        能:短路报警检测
 960          *说        明:
 961          *调        用:
 962          *入口参数:无
 963          *返 回 值:无
 964          ***********************************************************/
 965          /*
 966          void Short_Pro(void)
 967          {
 968           BYTE i,j,P1_Tmp;
 969          for (i=0;i<5;i++)
 970              {
 971               P1_Tmp=1<<(i+3);
 972               P1_Tmp=~P1_Tmp&0xf8;
 973               for(j=0;j<8;j++)
 974                {
 975                 if((Short_En[i]&(1<<j))!=0)
 976                 {
 977                 P1=P1_Tmp|A8_A10[j];
 978                 long_delay();
 979                 if (Short_Check==0)
 980                       {
 981                        Short_Bak=Read1B(170+i);
 982                        Short_New[i]|=(1<<j);
 983                        if(Short_New[i]^Short_Bak&Short_New[i])
 984                          {
 985                          Alarm_Flag=1;
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 17  

 986                          Short_Bak=Short_New[i];
 987                          Write1B(Short_Bak,170+i);
 988                          }
 989          
 990                       }
 991                       else
 992                       {
 993                        Short_New[i]&=~(1<<j);
 994                       }
 995                 }
 996                }
 997              }
 998          }
 999          
1000          
1001          
1002          /**********************************************************
1003          *名        称:Break_Check
1004          *功        能:断线报警检测
1005          *说        明:
1006          *调        用:
1007          *入口参数:无
1008          *返 回 值:无
1009          ***********************************************************/
1010          /*
1011          void Break_Pro(void)
1012          {
1013          
1014           BYTE i,j,P1_Tmp;
1015          for (i=0;i<5;i++)
1016              {
1017               P1_Tmp=1<<(i+3);
1018               P1_Tmp=~P1_Tmp&0xf8;
1019               for(j=0;j<8;j++)
1020                {
1021                  if((Break_En[i]&(1<<j))!=0)
1022                   {
1023                    if (Break_Check==0)
1024                       {
1025                        Break_Bak=Read1B(175+i);
1026                        Break_New[i]|=(1<<j);
1027                        if(Break_New[i]^Break_Bak&Break_New[i])
1028                         {
1029                          Break_Bak=Break_New[i];
1030                          Write1B(Break_Bak,175+i);
1031                         }
1032          
1033                       }
1034                       else
1035                       {
1036                        Break_New[i]&=~(1<<j);
1037                       }
1038                   }
1039                }
1040              }
1041          }
1042          /**********************************************************
1043          *名        称:Alarm_Pro
1044          *功        能:短路、断线报价处理
1045          *说        明:
1046          *调        用:
1047          *入口参数:无
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 18  

1048          *返 回 值:无
1049          ***********************************************************/
1050          /*
1051          void Alarm_Pro(void)
1052          {
1053                  BYTE i;
1054                  Alarm_Check=0;
1055                  Type=0;
1056                  Alarm=0;
1057                  Flash=0;
1058                  for(i=0;i<5;i++)
1059                   {
1060                    Short_Bak=Read1B(170+i);
1061                    Break_Bak=Read1B(175+i);
1062                    if((Short_New[i]|Short_Bak)&Short_En[i]&Hdd_En[i])  Alarm|=0x10;
1063                    if((Break_New[i]|Break_Bak)&Break_En[i]&Hdd_En[i])  Alarm|=0x20;
1064                    if(Short_New[i]&Short_En[i]) Flash|=1;
1065                    if(Break_New[i]&Break_En[i]) Flash|=2;
1066                   }
1067                   for(i=0;i<40;i++)
1068                   {
1069                    Type=Read1B(200+i);
1070                    if((Hdd_En[i%8]&(1<<(i%8))))
1071                     {
1072                      if(Type&0x01)  Alarm|=0x04;
1073                      if(Type&0x02)  Alarm|=0x02;
1074                      if(Type&0x04)  Alarm|=0x01;
1075                      if(Type&0x08)  Alarm|=0x80;
1076                     }
1077                   }
1078                   Alarm_Flag=1;
1079          }
1080          /**********************************************************
1081          *名        称:TrsRelay
1082          *功        能:通过口线模拟的串口给控制器发送合分指令
1083          *说        明:
1084          *调        用:
1085          *入口参数:无
1086          *返 回 值:无
1087          ***********************************************************/
1088          /*
1089          
1090          void TrsRelay(BYTE YkNo,BYTE YkHf)
1091            {
1092              BYTE Check;
1093              Relay_Station=Read1B(240+0x100);
1094              DIR2=0;
1095              long_delay();
1096              PSendChar(0xfe);
1097              PSendChar(0xeb);
1098              PSendChar(0x90);
1099              PSendChar(0x00);
1100              PSendChar(0x00);
1101              PSendChar(0x00);
1102              PSendChar(0x00);
1103          
1104              PSendChar(0x06); //Length
1105              PSendChar(0x00); //0
1106              PSendChar(0x37);//Function
1107          
1108              PSendChar(Relay_Station);//Station    L
1109              PSendChar(0x00);//0          H
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 19  

1110              PSendChar(YkNo);
1111              PSendChar(YkHf);
1112              Check=YkNo+YkHf+0x37+Relay_Station;
1113              PSendChar(Check);
1114              DIR2=1;
1115            }
1116          
1117          /**********************************************************
1118          *名        称:WriteHddPro
1119          *功        能:保存电度值
1120          *说        明:
1121          *调        用:
1122          *入口参数:无
1123          *返 回 值:无
1124          ***********************************************************/
1125          /*
1126          void WriteHddPro(void)
1127          {
1128             BYTE Constant_Range,Range,i,j;
1129             DWORD Full_L;
1130          // Run=1;
1131                if(HddVal[WriteOrder])
1132                 {
1133          
1134                          Constant_Range=Read1B(120+i*8+j);
1135                          switch (Constant_Range)
1136                            {
1137                              case (0x26):
1138                                       Range=0;
1139                                       break;
1140                              case (0x36):
1141                                       Range=1;
1142                                       break;
1143                              case (0x56):
1144                                       Range=2;
1145                                       break;
1146                              case (0x76):
1147                                       Range=3;
1148                                       break;
1149                              case (0x86):
1150                                       Range=4;
1151                                       break;
1152                              default:
1153                                       Range=0;
1154                                       break;
1155                            }
1156                          Full_L=Full_Val[Range];
1157          //                Full_L=320000000;
1158                          Hdd_Str.Hdd_L=Read_Hdd(WriteOrder);
1159                          Hdd_Str.Hdd_L+=HddVal[WriteOrder];
1160                          if(Hdd_Str.Hdd_L>Full_L)
1161                           {
1162                            Hdd_Str.Hdd_L-=Full_L;
1163                           }
1164          
1165          
1166          
1167                  HddVal[WriteOrder]=0;
1168                  Write_Hdd(WriteOrder);
1169                 }
1170                WriteOrder++;
1171                if(WriteOrder==40) WriteOrder=0;
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 20  

1172          //   Run=0;
1173          }
1174          
1175          /**********************************************************
1176          *名        称:Turn_On
1177          *功        能:长按键启动采集器
1178          *说        明:
1179          *调        用:
1180          *入口参数:无
1181          *返 回 值:无
1182          ***********************************************************/
1183          /*
1184          void Turn_On(void)
1185          {
1186                  BYTE i;
1187                  Key_Count=0;
1188                  Speaker=0;
1189                  delay10ms(100);
1190                 for(i=0;i<5;i++)
1191                  {
1192                   Short_New[i]=0;
1193                   Write1B(0,170+i);
1194                   Break_New[i]=0;
1195                   Write1B(0,175+i);
1196                  }
1197                  Speaker=1;
1198                  Start=0x80;
1199                  Write1B(0x80,255);
1200                  Alarm_Flag=1;
1201          }
1202          
1203          
1204          /**********************************************************
1205          *名        称:OverRange
1206          *功        能:过负荷断电
1207          *说        明:
1208          *调        用:
1209          *入口参数:无
1210          *返 回 值:无
1211          ***********************************************************/
1212          
1213          void OverRange(void)
1214          {
1215   1          BYTE i,Tmp1;
1216   1           //BYTE YkNo;
1217   1      
1218   1           if(ms500>119)  //60s
1219   1            {
1220   2             ms500=0;
1221   2             for(i=0;i<40;i++)
1222   2               {
1223   3      
1224   3                  if(Hdd10s[i]>80)
1225   3                   {
1226   4      
1227   4                    Tmp1=Read1B(i*2+1+0x100);
1228   4                    Tmp1++;
1229   4                    if(Tmp1>59)
1230   4                     {
1231   5      
1232   5                       Write1B(Tmp1-60,i*2+1+0x100);
1233   5                       Tmp1=Read1B(i*2+0x100);
C51 COMPILER V7.50   HICJ6                                                                 07/20/2005 09:16:51 PAGE 21  

1234   5                       Tmp1++;
1235   5                       Write1B(Tmp1,i*2+0x100);

⌨️ 快捷键说明

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