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