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

📄 loop.lst

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -