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

📄 hicj6.lst

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

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

1048   2               }
1049   1               for(i=0;i<40;i++)
1050   1               {
1051   2                Type=Read1B(200+i);
1052   2                if((Hdd_En[i%8]&(1<<(i%8))))
1053   2                 {
1054   3                  if(Type&0x01)  Alarm|=0x04;
1055   3                  if(Type&0x02)  Alarm|=0x02;
1056   3                  if(Type&0x04)  Alarm|=0x01;
1057   3                  if(Type&0x08)  Alarm|=0x80;
1058   3                 }
1059   2               }
1060   1               Alarm_Flag=1;
1061   1      }
1062          /**********************************************************
1063          *名	   称:TrsRelay
1064          *功	   能:通过口线模拟的串口给控制器发送合分指令
1065          *说	   明:
1066          *调	   用:
1067          *入口参数:无
1068          *返 回 值:无
1069          ***********************************************************/
1070          
1071          void TrsRelay(BYTE YkNo,BYTE YkHf)
1072            {
1073   1          BYTE Check;
1074   1          DIR2=0;
1075   1          long_delay();
1076   1          PSendChar(0xfe);
1077   1          PSendChar(0xeb);
1078   1          PSendChar(0x90);
1079   1          PSendChar(0x00);
1080   1          PSendChar(0x00);
1081   1          PSendChar(0x00);
1082   1          PSendChar(0x00);
1083   1      
1084   1          PSendChar(0x06); //Length
1085   1          PSendChar(0x00); //0
1086   1          PSendChar(0x37);//Function
1087   1          PSendChar(Relay_Station);//Station    L
1088   1          PSendChar(0x00);//0          H
1089   1          PSendChar(YkNo);
1090   1          PSendChar(YkHf);
1091   1          Check=YkNo+YkHf+0x37+Relay_Station;
1092   1          PSendChar(Check);
1093   1          DIR2=1;
1094   1        }
1095          
1096          /**********************************************************
1097          *名	   称:WriteHddPro
1098          *功	   能:保存电度值
1099          *说	   明:
1100          *调	   用:
1101          *入口参数:无
1102          *返 回 值:无
1103          ***********************************************************/
1104          void WriteHddPro(void)
1105          {
1106   1         BYTE Constant_Range,Range,i,j;
1107   1         DWORD Full_L;
1108   1      // Run=1;
1109   1            if(HddVal[WriteOrder])
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 19  

1110   1             {
1111   2            
1112   2                      Constant_Range=Read1B(120+i*8+j);
1113   2                      switch (Constant_Range)
1114   2                        {
1115   3                          case (0x26):
1116   3                                   Range=0;
1117   3                                   break;
1118   3                          case (0x36):
1119   3                                   Range=1;
1120   3                                   break;
1121   3                          case (0x56):
1122   3                                   Range=2;
1123   3                                   break;
1124   3                          case (0x76):
1125   3                                   Range=3;
1126   3                                   break;
1127   3                          case (0x86):
1128   3                                   Range=4;
1129   3                                   break;                             
1130   3                          default:
1131   3                                   Range=0;
1132   3                                   break;
1133   3                        }
1134   2                      Full_L=Full_Val[Range];
1135   2      //                Full_L=320000000;
1136   2                      Hdd_Str.Hdd_L=Read_Hdd(WriteOrder);
1137   2                      Hdd_Str.Hdd_L+=HddVal[WriteOrder];
1138   2                      if(Hdd_Str.Hdd_L>Full_L)
1139   2                       {
1140   3                        Hdd_Str.Hdd_L-=Full_L;
1141   3                       }
1142   2                     
1143   2            
1144   2              
1145   2              HddVal[WriteOrder]=0;
1146   2              Write_Hdd(WriteOrder);
1147   2             }
1148   1            WriteOrder++;
1149   1            if(WriteOrder==40) WriteOrder=0;
1150   1      //   Run=0;
1151   1      }
1152          
1153          /**********************************************************
1154          *名	   称:Turn_On
1155          *功	   能:长按键启动采集器
1156          *说	   明:
1157          *调	   用:
1158          *入口参数:无
1159          *返 回 值:无
1160          ***********************************************************/
1161          void Turn_On(void)
1162          {
1163   1              BYTE i;
1164   1              Key_Count=0;
1165   1              Speaker=0;
1166   1              delay10ms(100);
1167   1             for(i=0;i<5;i++)
1168   1              {
1169   2               Short_New[i]=0;
1170   2               Write1B(0,170+i);
1171   2               Break_New[i]=0;
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 20  

1172   2               Write1B(0,175+i);
1173   2              }
1174   1              Speaker=1;
1175   1              Start=0x80;
1176   1              Write1B(0x80,255);
1177   1              Alarm_Flag=1;
1178   1      }
1179          
1180          
1181          /**********************************************************
1182          *名	   称:OverRange
1183          *功	   能:过负荷断电
1184          *说	   明:
1185          *调	   用:
1186          *入口参数:无
1187          *返 回 值:无
1188          ***********************************************************/
1189          void OverRange(void)
1190          {
1191   1           BYTE i,j,Tmp1;
1192   1           BYTE YkNo;
1193   1           if(ms500>9)
1194   1            {
1195   2             ms500=0;
1196   2             for(i=0;i<40;i++)
1197   2               {
1198   3               Tmp1=Read1B(200+i);
1199   3               if(Tmp1&0x80)
1200   3                 {
1201   4                  Tmp1&=0x7f;
1202   4                  if(Hdd10s[i]>Tmp1)
1203   4                   {
1204   5                    RelayOff[i/8]|=1<<(i%8);
1205   5                   }
1206   4                   Hdd10s[i]=0;
1207   4                 }
1208   3               }
1209   2            }
1210   1      
1211   1           if(Trs_Counter>50)
1212   1            {
1213   2              Trs_Counter=0;
1214   2              for(i=0;i<5;i++)
1215   2               {
1216   3                if(RelayOff[i])
1217   3                  {
1218   4                    for(j=0;j<8;j++)
1219   4                      {
1220   5                          Tmp1=1<<j;
1221   5                        if(RelayOff[i]&Tmp1)
1222   5                          {
1223   6                            RelayOff[i]&=~Tmp1;
1224   6                            YkNo=i*8+j+1;
1225   6                            TrsRelay(YkNo,0x33);
1226   6                            TrsRelayOff[i]|=Tmp1;
1227   6                            i=5;
1228   6                            break;
1229   6                          }
1230   5                      }
1231   4                  }
1232   3               }
1233   2      
C51 COMPILER V6.12  HICJ6                                                                  01/10/2005 07:10:30 PAGE 21  

1234   2      
1235   2      
1236   2              for(i=0;i<5;i++)
1237   2                 {
1238   3                  if(TrsRelayOff[i])
1239   3                    {

⌨️ 快捷键说明

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