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

📄 tenms.c

📁 最先进的信号机程序,经过很多重要场合测试通过
💻 C
字号:
 #include <tenms.h>

/*****************************************************************************************************/
//     定时器0中断
/*****************************************************************************************************/
void timer0_ms() interrupt 1 using 2
{
    TH0=-(18432/256);  /*9216  10毫秒定时*/
    TL0=-(18432%256);

    lei++;
    if(lei>50)
    {
       lei = 0;
       FrontLed = !FrontLed;
    }  
 //   cljc();                //车辆检测
 //   phase_loop();          //相位流量检测
    read_state();
    far_detect();
    lei++;
    lei--;
    IP=0X10;
}
/*****************************************************************************************************/
//    输出灯组检测函数
/*****************************************************************************************************/
void  read_state(void)  using 2
{
    uint    lod;
    uchar    i;
    gl_read=XBYTE[0XC200];       //绿灯1-8 /*实际信息,来自硬件端口*/
    yl_read=XBYTE[0XC201];       //黄灯1-8
    rl_read=XBYTE[0XC202];       //红灯1-8
    gh_read=XBYTE[0XC280];       //绿灯9-16
    yh_read=XBYTE[0XC281];       //黄灯9-16
    rh_read=XBYTE[0XC282];       //红灯9-16

    g_read=gh_read*256+gl_read;    /*16位分别代表16个灯组的绿灯情况*/
    y_read=yh_read*256+yl_read;    /*16位分别代表16个灯组的黄灯情况*/
    r_read=rh_read*256+rl_read;    /*16位分别代表16个灯组的红灯情况*/

    g_out=greenh*256+greenl;       /*16位分别代表16个灯组的绿灯程序输出情况*/
    y_out=yelh*256+yell;           /*16位分别代表16个灯组的黄灯程序输出情况*/
    r_out=redh*256+redl;           /*16位分别代表16个灯组的红灯程序输出情况*/


 for(i=0;i<16;i++){
     lod=0x0001;
     lod=(lod<<i);
     if(((g_out&lod)==lod)&&((g_read&lod)!=lod))
         {if(gtemp1[i]==10)gtemp1[i]=10;
          else
          gtemp1[i]++;
          }
     else gtemp1[i]=0;
     if(((y_out&lod)==lod)&&((y_read&lod)!=lod))
         {if(ytemp1[i]==10)
           ytemp1[i]=10;
          else
          ytemp1[i]++;
          }
     else ytemp1[i]=0;
     if(((r_out&lod)==lod)&&((r_read&lod)!=lod))
         {if(rtemp1[i]==10)
          rtemp1[i]=10;
          else
          rtemp1[i]++;
          }
     else rtemp1[i]=0;
     if(((g_read&lod)==lod)&&((g_out&lod)!=lod))
          {if(gtemp2[i]==70)
           gtemp2[i]=70;
          else
          gtemp2[i]++;
          }
     else gtemp2[i]=0;
     if(((y_read&lod)==lod)&&((y_out&lod)!=lod))
          {if(ytemp2[i]==70)ytemp2[i]=70;
          else
          ytemp2[i]++;
          }
     else ytemp2[i]=0;
     if(((r_read&lod)==lod)&&((r_out&lod)!=lod))
          {if(rtemp2[i]==70)rtemp2[i]=70;
          else
          rtemp2[i]++;
          }
      else rtemp2[i]=0;

    if(gtemp1[i]==10)
     g_load1=(g_load1|lod); /*程序输出但采样没有,驱而不亮*/
     if(ytemp1[i]==10)
     y_load1=(y_load1|lod); /*程序输出但采样没有,驱而不亮*/

     if(rtemp1[i]==10)
     r_load1=(r_load1|lod); /*程序输出但采样没有,驱而不亮*/
     if(gtemp2[i]==70)
     g_load2=(g_load2|lod); /*程序没有输出但采样有,不驱而亮*/
     if(ytemp2[i]==70)
     y_load2=(y_load2|lod); /*程序没有输出但采样有,不驱而亮*/
     if(rtemp2[i]==70)
     r_load2=(r_load2|lod); /*程序没有输出但采样有,不驱而亮*/

  }
}

⌨️ 快捷键说明

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