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

📄 loop.c

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <loop.h>
/*****************************************************************************************************/
//     扫描线圈,判断线圈故障,判断有无车辆通过
/*****************************************************************************************************/
void cljc()
{
  uchar i;

  flagg=0;
  for(i=0; i<32; i++)  loop_set[i]=1;

  cs_dram = 1;
  c381 = XBYTE[0XC381];    /*读线圈状态*/
  c380 = XBYTE[0XC380];
  c301 = XBYTE[0XC301];
  c300 = XBYTE[0XC300];
  flagh = XBYTE[0XC382];   /*低四位代表线圈板标志位为1:通道为1时无故障,通道为0时故障*/
  flagl = XBYTE[0XC302];   /*低四位代表线圈板标志位为0:通道为1时无车,通道为0时有车*/
  flagl = flagl&0x0f;
  flagh = flagh<<4;
  flag  = flagl|flagh;
  if((flag&0x01)==0x01)         /*线圈1-4的故障判别*/
  {
      if((c300&0x01)==0x00)  loop_error[0]++;     /*线圈1故障计数*/
      else                   loop_error[0]=0;
      if(loop_error[0]>5)    loop_error[0]=5;
      if((c300&0x02)==0x00)  loop_error[1]++;     /*线圈2故障计数*/
      else                   loop_error[1]=0;
      if(loop_error[1]>5)    loop_error[1]=5;
      if((c300&0x04)==0x00)  loop_error[2]++;     /*线圈3故障计数*/
      else                   loop_error[2]=0;
      if(loop_error[2]>5)    loop_error[2]=5;
      if((c300&0x08)==0x00)  loop_error[3]++;     /*线圈4故障计数*/
      else                   loop_error[3]=0;
      if(loop_error[3]>5)    loop_error[3]=5;
  }
  if((flag&0x02)==0x02)        /*线圈5-8的故障判别*/
  {
                    if((c300&0x10)==0x00)loop_error[4]++;     /*线圈5故障计数*/
                                  else loop_error[4]=0;
                        if(loop_error[4]>5)loop_error[4]=5;
                    if((c300&0x20)==0x00)loop_error[5]++;     /*线圈6故障计数*/
                                  else loop_error[5]=0;
                        if(loop_error[5]>5)loop_error[5]=5;
                    if((c300&0x40)==0x00)loop_error[6]++;     /*线圈7故障计数*/
                                  else loop_error[6]=0;
                        if(loop_error[6]>5)loop_error[6]=5;
                    if((c300&0x80)==0x00)loop_error[7]++;     /*线圈8故障计数*/
                                  else loop_error[7]=0;
                        if(loop_error[7]>5)loop_error[7]=5;
  }
  if((flag&0x04)==0x04)       /*线圈9-12的故障判别*/
  {
                    if((c301&0x01)==0x00)loop_error[8]++;     /*线圈9故障计数*/
                                  else loop_error[8]=0;
                        if(loop_error[8]>5)loop_error[8]=5;
                    if((c301&0x02)==0x00)loop_error[9]++;     /*线圈10故障计数*/
                                  else loop_error[9]=0;
                        if(loop_error[9]>5)loop_error[9]=5;
                    if((c301&0x04)==0x00)loop_error[10]++;     /*线圈11故障计数*/
                                  else loop_error[10]=0;
                        if(loop_error[10]>5)loop_error[10]=5;
                    if((c301&0x08)==0x00)loop_error[11]++;     /*线圈12故障计数*/
                                  else loop_error[11]=0;
                        if(loop_error[11]>5)loop_error[11]=5;
  }
  if((flag&0x08)==0x08)        /*线圈13-16的故障判别*/
  {
                    if((c301&0x10)==0x00)loop_error[12]++;     /*线圈13故障计数*/
                                  else loop_error[12]=0;
                        if(loop_error[12]>5)loop_error[12]=5;
                    if((c301&0x20)==0x00)loop_error[13]++;     /*线圈14故障计数*/
                                  else loop_error[13]=0;
                        if(loop_error[13]>5)loop_error[13]=5;
                    if((c301&0x40)==0x00)loop_error[14]++;     /*线圈15故障计数*/
                                  else loop_error[14]=0;
                        if(loop_error[14]>5)loop_error[14]=5;
                    if((c301&0x80)==0x00)loop_error[15]++;     /*线圈16故障计数*/
                                  else loop_error[15]=0;
                        if(loop_error[15]>5)loop_error[15]=5;
  }
  if((flag&0x10)==0x10)         /*线圈17-20的故障判别*/
  {
                    if((c380&0x01)==0x00)loop_error[16]++;     /*线圈17故障计数*/
                                  else loop_error[16]=0;
                        if(loop_error[16]>5)loop_error[16]=5;
                    if((c380&0x02)==0x00)loop_error[17]++;     /*线圈18故障计数*/
                                  else loop_error[17]=0;
                        if(loop_error[17]>5)loop_error[17]=5;
                    if((c380&0x04)==0x00)loop_error[18]++;     /*线圈19故障计数*/
                                  else loop_error[18]=0;
                        if(loop_error[18]>5)loop_error[18]=5;
                    if((c380&0x08)==0x00)loop_error[19]++;     /*线圈20故障计数*/
                                  else loop_error[19]=0;
                        if(loop_error[19]>5)loop_error[19]=5;
  }
  if((flag&0x20)==0x20)       /*线圈20-24的故障判别*/
  {
                    if((c380&0x10)==0x00)loop_error[20]++;     /*线圈21故障计数*/
                                  else loop_error[20]=0;
                        if(loop_error[20]>5)loop_error[20]=5;
                    if((c380&0x20)==0x00)loop_error[21]++;     /*线圈22故障计数*/
                                  else loop_error[21]=0;
                        if(loop_error[21]>5)loop_error[21]=5;
                    if((c380&0x40)==0x00)loop_error[22]++;     /*线圈23故障计数*/
                                  else loop_error[22]=0;
                        if(loop_error[22]>5)loop_error[22]=5;
                    if((c380&0x80)==0x00)loop_error[23]++;     /*线圈24故障计数*/
                                  else loop_error[23]=0;
                        if(loop_error[23]>5)loop_error[23]=5;
  }
  if((flag&0x40)==0x40)       /*线圈24-28的故障判别*/
  {
                    if((c381&0x01)==0x00)loop_error[24]++;     /*线圈25故障计数*/
                                  else loop_error[24]=0;
                        if(loop_error[24]>5)loop_error[24]=5;
                    if((c381&0x02)==0x00)loop_error[25]++;     /*线圈26故障计数*/
                                  else loop_error[25]=0;
                        if(loop_error[25]>5)loop_error[25]=5;
                    if((c381&0x04)==0x00)loop_error[26]++;     /*线圈27故障计数*/
                                  else loop_error[26]=0;
                        if(loop_error[26]>5)loop_error[26]=5;
                    if((c381&0x08)==0x00)loop_error[27]++;     /*线圈28故障计数*/
                                  else loop_error[27]=0;
                        if(loop_error[27]>5)loop_error[27]=5;
  }
  if((flag&0x80)==0x80)      /*线圈28-32的故障判别*/
  {
                    if((c381&0x10)==0x00)loop_error[28]++;     /*线圈29故障计数*/
                                  else loop_error[28]=0;
                        if(loop_error[28]>5)loop_error[28]=5;
                    if((c381&0x20)==0x00)loop_error[29]++;     /*线圈30故障计数*/
                                  else loop_error[29]=0;
                        if(loop_error[29]>5)loop_error[29]=5;
                    if((c381&0x40)==0x00)loop_error[30]++;     /*线圈31故障计数*/
                                  else loop_error[30]=0;
                        if(loop_error[30]>5)loop_error[30]=5;
                    if((c381&0x80)==0x00)loop_error[31]++;     /*线圈32故障计数*/
                                  else loop_error[31]=0;
                        if(loop_error[31]>5)loop_error[31]=5;
  }
  lpp=0;
  for(i=0;i<16;i++)
  {
     ttemp=0x0001;
     if(loop_error[i]==5)
     {
       ttemp=(ttemp<<i);
       lpp=(lpp|ttemp);       //lpp中位内容为1代表该线圈代表该线圈故障1-16
     }
  }
  hpp=0;
  for(i=0;i<16;i++)
  {
     ttemp=0x0001;
     if(loop_error[i+16]==5)
     {
       ttemp=(ttemp<<i);
       hpp=(hpp|ttemp);      //hpp中位内容为1代表该线圈代表该线圈故障17-32
     }
  }
  actlpp = ~lpp;          //线圈故障信息取反
  acthpp = ~hpp;
  cs_dram=1;
  c381=XBYTE[0XC381];  /*读线圈状态*/
  c380=XBYTE[0XC380];
  c301=XBYTE[0XC301];
  c300=XBYTE[0XC300];
  if(((c300&0x01)==0)&&((flag&0x01)==0)&&(loop_error[0]!=5)&&(loop_set[0]==1)){
                                                                               loop_now[0]=1; /*有车 */
                                                                               }else {
                                                                                     loop_now[0]=0;
                                                                                     }
  if(((c300&0x02)==0)&&((flag&0x01)==0)&&(loop_error[1]!=5)&&(loop_set[1]==1))loop_now[1]=1;
                                                                        else loop_now[1]=0;
 if(((c300&0x04)==0)&&((flag&0x01)==0)&&(loop_error[2]!=5)&&(loop_set[2]==1))loop_now[2]=1;
                                                                        else loop_now[2]=0;
 if(((c300&0x08)==0)&&((flag&0x01)==0)&&(loop_error[3]!=5)&&(loop_set[3]==1))loop_now[3]=1;
                                                                        else loop_now[3]=0;
 if(((c300&0x10)==0)&&((flag&0x02)==0)&&(loop_error[4]!=5)&&(loop_set[4]==1))loop_now[4]=1;
                                                                        else loop_now[4]=0;
 if(((c300&0x20)==0)&&((flag&0x02)==0)&&(loop_error[5]!=5)&&(loop_set[5]==1))loop_now[5]=1;
                                                                        else loop_now[5]=0;
 if(((c300&0x40)==0)&&((flag&0x02)==0)&&(loop_error[6]!=5)&&(loop_set[6]==1))loop_now[6]=1;
                                                                        else loop_now[6]=0;
 if(((c300&0x80)==0)&&((flag&0x02)==0)&&(loop_error[7]!=5)&&(loop_set[7]==1))loop_now[7]=1;
                                                                        else loop_now[7]=0;
 if(((c301&0x01)==0)&&((flag&0x04)==0)&&(loop_error[8]!=5)&&(loop_set[8]==1))loop_now[8]=1;
                                                                        else loop_now[8]=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -