📄 loop.lst
字号:
184 2 if((c381&0x20)==0x00)loop_error[29]++; /*线圈30故障计数*/
185 2 else loop_error[29]=0;
186 2 if(loop_error[29]>5)loop_error[29]=5;
187 2 if((c381&0x40)==0x00)loop_error[30]++; /*线圈31故障计数*/
188 2 else loop_error[30]=0;
189 2 if(loop_error[30]>5)loop_error[30]=5;
190 2 if((c381&0x80)==0x00)loop_error[31]++; /*线圈32故障计数*/
191 2 else loop_error[31]=0;
192 2 if(loop_error[31]>5)loop_error[31]=5;
193 2 }
194 1 lpp=0;
195 1 for(i=0;i<16;i++)
196 1 {
197 2 ttemp=0x0001;
198 2 if(loop_error[i]==5)
199 2 {
200 3 ttemp=(ttemp<<i);
201 3 lpp=(lpp|ttemp); //lpp中位内容为1代表该线圈代表该线圈故障1-16
202 3 temp_lpp=lpp;
203 3 }
204 2 }
205 1 hpp=0;
206 1 for(i=0;i<16;i++)
207 1 {
208 2 ttemp=0x0001;
209 2 if(loop_error[i+16]==5)
210 2 {
211 3 ttemp=(ttemp<<i);
212 3 hpp=(hpp|ttemp); //hpp中位内容为1代表该线圈代表该线圈故障17-32
213 3 temp_hpp=hpp;
214 3 }
215 2 }
216 1 //actlpp = ~lpp; //线圈故障信息取反
217 1 //acthpp = ~hpp;
218 1 // if((last_actlpp!=actlpp)||(last_acthpp!=acthpp)){
219 1
220 1 if(((last_actlpp&temp_lpp)!=last_actlpp)||((last_acthpp&temp_hpp)!=last_acthpp)){
221 2 if(start_counter>=3){
222 3 error_type=0x01;
223 3 save_to_error();
224 3 }
225 2 }
226 1
227 1 last_actlpp=((last_actlpp|temp_lpp)&temp_lpp);
228 1 last_acthpp=((last_acthpp|temp_hpp)&temp_hpp);
229 1 cs_dram=1;
230 1 c381=XBYTE[0XC381]; /*读线圈状态*/
231 1 c380=XBYTE[0XC380];
232 1 c301=XBYTE[0XC301];
233 1 c300=XBYTE[0XC300];
234 1 if(((c300&0x01)==0)&&((flag&0x01)==0)&&(loop_error[0]!=5)&&(loop_set[0]==1)){
235 2 loop_now[0]=1; /*有车 */
236 2 }else {
237 2 loop_now[0]=0;
238 2 }
239 1 if(((c300&0x02)==0)&&((flag&0x01)==0)&&(loop_error[1]!=5)&&(loop_set[1]==1))loop_now[1]=1;
240 1 else loop_now[1]=0;
241 1 if(((c300&0x04)==0)&&((flag&0x01)==0)&&(loop_error[2]!=5)&&(loop_set[2]==1))loop_now[2]=1;
C51 COMPILER V6.02 LOOP 09/28/2006 21:46:49 PAGE 5
242 1 else loop_now[2]=0;
243 1 if(((c300&0x08)==0)&&((flag&0x01)==0)&&(loop_error[3]!=5)&&(loop_set[3]==1))loop_now[3]=1;
244 1 else loop_now[3]=0;
245 1 if(((c300&0x10)==0)&&((flag&0x02)==0)&&(loop_error[4]!=5)&&(loop_set[4]==1))loop_now[4]=1;
246 1 else loop_now[4]=0;
247 1 if(((c300&0x20)==0)&&((flag&0x02)==0)&&(loop_error[5]!=5)&&(loop_set[5]==1))loop_now[5]=1;
248 1 else loop_now[5]=0;
249 1 if(((c300&0x40)==0)&&((flag&0x02)==0)&&(loop_error[6]!=5)&&(loop_set[6]==1))loop_now[6]=1;
250 1 else loop_now[6]=0;
251 1 if(((c300&0x80)==0)&&((flag&0x02)==0)&&(loop_error[7]!=5)&&(loop_set[7]==1))loop_now[7]=1;
252 1 else loop_now[7]=0;
253 1 if(((c301&0x01)==0)&&((flag&0x04)==0)&&(loop_error[8]!=5)&&(loop_set[8]==1))loop_now[8]=1;
254 1 else loop_now[8]=0;
255 1 if(((c301&0x02)==0)&&((flag&0x04)==0)&&(loop_error[9]!=5)&&(loop_set[9]==1))loop_now[9]=1;
256 1 else loop_now[9]=0;
257 1 if(((c301&0x04)==0)&&((flag&0x04)==0)&&(loop_error[10]!=5)&&(loop_set[10]==1))loop_now[10]=1;
258 1 else loop_now[10]=0;
259 1 if(((c301&0x08)==0)&&((flag&0x04)==0)&&(loop_error[11]!=5)&&(loop_set[11]==1))loop_now[11]=1;
260 1 else loop_now[11]=0;
261 1 if(((c301&0x10)==0)&&((flag&0x08)==0)&&(loop_error[12]!=5)&&(loop_set[12]==1))loop_now[12]=1;
262 1 else loop_now[12]=0;
263 1 if(((c301&0x20)==0)&&((flag&0x08)==0)&&(loop_error[13]!=5)&&(loop_set[13]==1))loop_now[13]=1;
264 1 else loop_now[13]=0;
265 1 if(((c301&0x40)==0)&&((flag&0x08)==0)&&(loop_error[14]!=5)&&(loop_set[14]==1))loop_now[14]=1;
266 1 else loop_now[14]=0;
267 1 if(((c301&0x80)==0)&&((flag&0x08)==0)&&(loop_error[15]!=5)&&(loop_set[15]==1))loop_now[15]=1;
268 1 else loop_now[15]=0;
269 1 if(((c380&0x01)==5)&&((flag&0x10)==0)&&(loop_error[16]!=5)&&(loop_set[16]==1))loop_now[16]=1;
270 1 else loop_now[16]=0;
271 1 if(((c380&0x02)==0)&&((flag&0x10)==0)&&(loop_error[17]!=5)&&(loop_set[17]==1))loop_now[17]=1;
272 1 else loop_now[17]=0;
273 1 if(((c380&0x04)==0)&&((flag&0x10)==0)&&(loop_error[18]!=5)&&(loop_set[18]==1))loop_now[18]=1;
274 1 else loop_now[18]=0;
275 1 if(((c380&0x08)==0)&&((flag&0x10)==0)&&(loop_error[19]!=5)&&(loop_set[19]==1))loop_now[19]=1;
276 1 else loop_now[19]=0;
277 1 if(((c380&0x10)==0)&&((flag&0x20)==0)&&(loop_error[20]!=5)&&(loop_set[20]==1))loop_now[20]=1;
278 1 else loop_now[20]=0;
279 1 if(((c380&0x20)==0)&&((flag&0x20)==0)&&(loop_error[21]!=5)&&(loop_set[21]==1))loop_now[21]=1;
280 1 else loop_now[21]=0;
281 1 if(((c380&0x40)==0)&&((flag&0x20)==0)&&(loop_error[22]!=5)&&(loop_set[22]==1))loop_now[22]=1;
282 1 else loop_now[22]=0;
283 1 if(((c380&0x80)==0)&&((flag&0x20)==0)&&(loop_error[23]!=5)&&(loop_set[23]==1))loop_now[23]=1;
284 1 else loop_now[23]=0;
285 1 if(((c381&0x01)==0)&&((flag&0x40)==0)&&(loop_error[24]!=5)&&(loop_set[24]==1))loop_now[24]=1;
286 1 else loop_now[24]=0;
287 1 if(((c381&0x02)==0)&&((flag&0x40)==0)&&(loop_error[25]!=5)&&(loop_set[25]==1))loop_now[25]=1;
288 1 else loop_now[25]=0;
289 1 if(((c381&0x04)==0)&&((flag&0x40)==0)&&(loop_error[26]!=5)&&(loop_set[26]==1))loop_now[26]=1;
290 1 else loop_now[26]=0;
291 1 if(((c381&0x08)==0)&&((flag&0x40)==0)&&(loop_error[27]!=5)&&(loop_set[27]==1))loop_now[27]=1;
292 1 else loop_now[27]=0;
293 1 if(((c381&0x10)==0)&&((flag&0x80)==0)&&(loop_error[28]!=5)&&(loop_set[28]==1))loop_now[28]=1;
294 1 else loop_now[28]=0;
295 1 if(((c381&0x20)==0)&&((flag&0x80)==0)&&(loop_error[29]!=5)&&(loop_set[29]==1))loop_now[29]=1;
296 1 else loop_now[29]=0;
297 1 if(((c381&0x40)==0)&&((flag&0x80)==0)&&(loop_error[30]!=5)&&(loop_set[30]==1))loop_now[30]=1;
298 1 else loop_now[30]=0;
299 1 if(((c381&0x80)==0)&&((flag&0x80)==0)&&(loop_error[31]!=5)&&(loop_set[31]==1))loop_now[31]=1;
300 1 else loop_now[31]=0;
301 1
302 1 for(i=0; i<32; i++)
303 1 { if(loop_now[i]==1)
C51 COMPILER V6.02 LOOP 09/28/2006 21:46:49 PAGE 6
304 2 loop_ratio[i]++; //占空比计算
305 2
306 2 if((loop_now[i]==0)&&(loop_last[i]==1)) /*发生由高到低的跳变就认为车辆驶出线圈*/
307 2 {
308 3 //if((loop_now[5]==0)&&(loop_last[5]==1))
309 3 if(sensor_car_flag){
310 4 forsense[i]++; /*感应用 */
311 4 }
312 3 else {
313 4 forsense[i] = 0;
314 4 }
315 3 send_liul[i]++;
316 3 // if(no_comm==1) carcount[i]++; /*线路断 */
317 3 // else
318 3 //{
319 3 liul[i]++; /*线路通 */
320 3 // }
321 3 }
322 2 }
323 1 for(i=0; i<32; i++)
324 1 {
325 2 loop_last[i]=loop_now[i];
326 2 }
327 1
328 1 }
329 /*****************************************************************************************************/
330 // 判断感应时无车辆通过
331 /*****************************************************************************************************/
332 void phase_loop()
333 {
334 1 uchar i;
335 1 uint toto;
336 1 uint xdata temp;
337 1
338 1 if(sensor_car_flag)
339 1 {
340 2 loopid=0;
341 2 now_loop=0;
342 2 loop_nowstep=0;
343 2 for(i=0; i<16; i++)
344 2 {
345 3 toto = 0x0001;
346 3 toto = toto<<i;
347 3 temp = inuse_phase[step_counter]&toto; //当前阶段包含的相位
348 3
349 3 if(temp!=0)
350 3 {
351 4 if((XBYTE[baseaddr_now_phasesch+2+18*i]&0x04)!=0x04) //不是行人相位
352 4 {
353 5 loopid = XBYTE[baseaddr_now_phasesch+3+18*i];
354 5 now_loop = loopid<<24;
355 5 loopid = XBYTE[baseaddr_now_phasesch+4+18*i];
356 5 loopid = loopid<<16;
357 5 now_loop = now_loop|loopid;
358 5 loopid = XBYTE[baseaddr_now_phasesch+5+18*i];
359 5 loopid = loopid<<8;
360 5 now_loop = now_loop|loopid;
361 5 loopid = XBYTE[baseaddr_now_phasesch+6+18*i];
362 5 now_loop = now_loop|loopid; /*当前相位;第i相位包含的线圈*/
363 5 loop_nowstep=loop_nowstep|now_loop; //当前阶段包含的相位中所有的线圈检测器
364 5 }
365 4 }
C51 COMPILER V6.02 LOOP 09/28/2006 21:46:49 PAGE 7
366 3 }
367 2 for(i=0; i<32; i++)
368 2 {
369 3 loopid=0x00000001;
370 3 loopidd=(loopid<<i);
371 3 if((loop_nowstep&loopidd)==loopidd)
372 3 {
373 4 if(loop_error[i]==5)
374 4 sensor_looperror_flag = 1;
375 4 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -