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

📄 loop.lst

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -