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