📄 loop.lst
字号:
162 1 actlpp = ~lpp; //线圈故障信息取反
163 1 acthpp = ~hpp;
164 1 cs_dram=1;
165 1 c381=XBYTE[0XC381]; /*读线圈状态*/
166 1 c380=XBYTE[0XC380];
167 1 c301=XBYTE[0XC301];
168 1 c300=XBYTE[0XC300];
169 1 if(((c300&0x01)==0)&&((flag&0x01)==0)&&(loop_error[0]!=5)&&(loop_set[0]==1)){
170 2 loop_now[0]=1; /*有车 */
171 2 }else {
172 2 loop_now[0]=0;
173 2 }
174 1 if(((c300&0x02)==0)&&((flag&0x01)==0)&&(loop_error[1]!=5)&&(loop_set[1]==1))loop_now[1]=1;
175 1 else loop_now[1]=0;
176 1 if(((c300&0x04)==0)&&((flag&0x01)==0)&&(loop_error[2]!=5)&&(loop_set[2]==1))loop_now[2]=1;
177 1 else loop_now[2]=0;
178 1 if(((c300&0x08)==0)&&((flag&0x01)==0)&&(loop_error[3]!=5)&&(loop_set[3]==1))loop_now[3]=1;
179 1 else loop_now[3]=0;
C51 COMPILER V6.02 LOOP 08/02/2006 14:44:13 PAGE 4
180 1 if(((c300&0x10)==0)&&((flag&0x02)==0)&&(loop_error[4]!=5)&&(loop_set[4]==1))loop_now[4]=1;
181 1 else loop_now[4]=0;
182 1 if(((c300&0x20)==0)&&((flag&0x02)==0)&&(loop_error[5]!=5)&&(loop_set[5]==1))loop_now[5]=1;
183 1 else loop_now[5]=0;
184 1 if(((c300&0x40)==0)&&((flag&0x02)==0)&&(loop_error[6]!=5)&&(loop_set[6]==1))loop_now[6]=1;
185 1 else loop_now[6]=0;
186 1 if(((c300&0x80)==0)&&((flag&0x02)==0)&&(loop_error[7]!=5)&&(loop_set[7]==1))loop_now[7]=1;
187 1 else loop_now[7]=0;
188 1 if(((c301&0x01)==0)&&((flag&0x04)==0)&&(loop_error[8]!=5)&&(loop_set[8]==1))loop_now[8]=1;
189 1 else loop_now[8]=0;
190 1 if(((c301&0x02)==0)&&((flag&0x04)==0)&&(loop_error[9]!=5)&&(loop_set[9]==1))loop_now[9]=1;
191 1 else loop_now[9]=0;
192 1 if(((c301&0x04)==0)&&((flag&0x04)==0)&&(loop_error[10]!=5)&&(loop_set[10]==1))loop_now[10]=1;
193 1 else loop_now[10]=0;
194 1 if(((c301&0x08)==0)&&((flag&0x04)==0)&&(loop_error[11]!=5)&&(loop_set[11]==1))loop_now[11]=1;
195 1 else loop_now[11]=0;
196 1 if(((c301&0x10)==0)&&((flag&0x08)==0)&&(loop_error[12]!=5)&&(loop_set[12]==1))loop_now[12]=1;
197 1 else loop_now[12]=0;
198 1 if(((c301&0x20)==0)&&((flag&0x08)==0)&&(loop_error[13]!=5)&&(loop_set[13]==1))loop_now[13]=1;
199 1 else loop_now[13]=0;
200 1 if(((c301&0x40)==0)&&((flag&0x08)==0)&&(loop_error[14]!=5)&&(loop_set[14]==1))loop_now[14]=1;
201 1 else loop_now[14]=0;
202 1 if(((c301&0x80)==0)&&((flag&0x08)==0)&&(loop_error[15]!=5)&&(loop_set[15]==1))loop_now[15]=1;
203 1 else loop_now[15]=0;
204 1 if(((c380&0x01)==5)&&((flag&0x10)==0)&&(loop_error[16]!=5)&&(loop_set[16]==1))loop_now[16]=1;
205 1 else loop_now[16]=0;
206 1 if(((c380&0x02)==0)&&((flag&0x10)==0)&&(loop_error[17]!=5)&&(loop_set[17]==1))loop_now[17]=1;
207 1 else loop_now[17]=0;
208 1 if(((c380&0x04)==0)&&((flag&0x10)==0)&&(loop_error[18]!=5)&&(loop_set[18]==1))loop_now[18]=1;
209 1 else loop_now[18]=0;
210 1 if(((c380&0x08)==0)&&((flag&0x10)==0)&&(loop_error[19]!=5)&&(loop_set[19]==1))loop_now[19]=1;
211 1 else loop_now[19]=0;
212 1 if(((c380&0x10)==0)&&((flag&0x20)==0)&&(loop_error[20]!=5)&&(loop_set[20]==1))loop_now[20]=1;
213 1 else loop_now[20]=0;
214 1 if(((c380&0x20)==0)&&((flag&0x20)==0)&&(loop_error[21]!=5)&&(loop_set[21]==1))loop_now[21]=1;
215 1 else loop_now[21]=0;
216 1 if(((c380&0x40)==0)&&((flag&0x20)==0)&&(loop_error[22]!=5)&&(loop_set[22]==1))loop_now[22]=1;
217 1 else loop_now[22]=0;
218 1 if(((c380&0x80)==0)&&((flag&0x20)==0)&&(loop_error[23]!=5)&&(loop_set[23]==1))loop_now[23]=1;
219 1 else loop_now[23]=0;
220 1 if(((c381&0x01)==0)&&((flag&0x40)==0)&&(loop_error[24]!=5)&&(loop_set[24]==1))loop_now[24]=1;
221 1 else loop_now[24]=0;
222 1 if(((c381&0x02)==0)&&((flag&0x40)==0)&&(loop_error[25]!=5)&&(loop_set[25]==1))loop_now[25]=1;
223 1 else loop_now[25]=0;
224 1 if(((c381&0x04)==0)&&((flag&0x40)==0)&&(loop_error[26]!=5)&&(loop_set[26]==1))loop_now[26]=1;
225 1 else loop_now[26]=0;
226 1 if(((c381&0x08)==0)&&((flag&0x40)==0)&&(loop_error[27]!=5)&&(loop_set[27]==1))loop_now[27]=1;
227 1 else loop_now[27]=0;
228 1 if(((c381&0x10)==0)&&((flag&0x80)==0)&&(loop_error[28]!=5)&&(loop_set[28]==1))loop_now[28]=1;
229 1 else loop_now[28]=0;
230 1 if(((c381&0x20)==0)&&((flag&0x80)==0)&&(loop_error[29]!=5)&&(loop_set[29]==1))loop_now[29]=1;
231 1 else loop_now[29]=0;
232 1 if(((c381&0x40)==0)&&((flag&0x80)==0)&&(loop_error[30]!=5)&&(loop_set[30]==1))loop_now[30]=1;
233 1 else loop_now[30]=0;
234 1 if(((c381&0x80)==0)&&((flag&0x80)==0)&&(loop_error[31]!=5)&&(loop_set[31]==1))loop_now[31]=1;
235 1 else loop_now[31]=0;
236 1
237 1 for(i=0; i<32; i++)
238 1 { if(loop_now[i]==1)
239 2 loop_ratio[i]++; //占空比计算
240 2
241 2 if((loop_now[i]==0)&&(loop_last[i]==1)) /*发生由高到低的跳变就认为车辆驶出线圈*/
C51 COMPILER V6.02 LOOP 08/02/2006 14:44:13 PAGE 5
242 2 {
243 3 //if((loop_now[5]==0)&&(loop_last[5]==1))
244 3 if(sensor_car_flag){
245 4 forsense[i]++; /*感应用 */
246 4 }
247 3 else {
248 4 forsense[i] = 0;
249 4 }
250 3 send_liul[i]++;
251 3 // if(no_comm==1) carcount[i]++; /*线路断 */
252 3 // else
253 3 //{
254 3 liul[i]++; /*线路通 */
255 3 // }
256 3 }
257 2 }
258 1 for(i=0; i<32; i++)
259 1 {
260 2 loop_last[i]=loop_now[i];
261 2 }
262 1
263 1 }
264 /*****************************************************************************************************/
265 // 判断感应时无车辆通过
266 /*****************************************************************************************************/
267 void phase_loop()
268 {
269 1 uchar i;
270 1 uint toto;
271 1 uint xdata temp;
272 1
273 1 if(sensor_car_flag)
274 1 {
275 2 loopid=0;
276 2 now_loop=0;
277 2 loop_nowstep=0;
278 2 for(i=0; i<16; i++)
279 2 {
280 3 toto = 0x0001;
281 3 toto = toto<<i;
282 3 temp = inuse_phase1[step_counter]&toto; //当前阶段包含的相位
283 3
284 3 if(temp!=0)
285 3 {
286 4 if((XBYTE[baseaddr_now_phasesch+2+18*i]&0x04)!=0x04) //不是行人相位
287 4 {
288 5 loopid = XBYTE[baseaddr_now_phasesch+3+18*i];
289 5 now_loop = loopid<<24;
290 5 loopid = XBYTE[baseaddr_now_phasesch+4+18*i];
291 5 loopid = loopid<<16;
292 5 now_loop = now_loop|loopid;
293 5 loopid = XBYTE[baseaddr_now_phasesch+5+18*i];
294 5 loopid = loopid<<8;
295 5 now_loop = now_loop|loopid;
296 5 loopid = XBYTE[baseaddr_now_phasesch+6+18*i];
297 5 now_loop = now_loop|loopid; /*当前相位;第i相位包含的线圈*/
298 5 loop_nowstep=loop_nowstep|now_loop; //当前阶段包含的相位
299 5 }
300 4 }
301 3 }
302 2 for(i=0; i<32; i++)
303 2 {
C51 COMPILER V6.02 LOOP 08/02/2006 14:44:13 PAGE 6
304 3 loopid=0x00000001;
305 3 loopidd=(loopid<<i);
306 3 if((loop_nowstep&loopidd)==loopidd)
307 3 {
308 4 if(loop_error[i]==5)
309 4 sensor_looperror_flag = 1;
310 4 else
311 4 {
312 5 carnumber=carnumber+forsense[i]; /*绿灯剩余时间低于单位步长时,相位所有的车流量*/
313 5 if(carnumber!=0){
314 6 carnumber=1;
315 6 }
316 5 forsense[i]=0;
317 5 }
318 4 }
319 3 }
320 2 }
321 1 else
322 1 { //非感应控制时相关变量清零
323 2 carnumber=0;
324 2 forsense[i]=0;
325 2 lastcarnumber=0;
326 2 }
327 1
328 1 }
329 void jude_looperror()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -