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

📄 tenms.bak

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

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

    lei++;
    if(lei>50)
    {
       lei = 0;
       FrontLed = !FrontLed;
    }
    read_state();
}
/*****************************************************************************************************/
//    输出灯组检测函数
/*****************************************************************************************************/
void  read_state(void)  using 2
{
    uint    lod;
    uchar   i;

    gl_read=XBYTE[0XC200];        /*实际信息,来自硬件端口*/
    yl_read=XBYTE[0XC201];
    rl_read=XBYTE[0XC202];
    gh_read=XBYTE[0XC280];
    yh_read=XBYTE[0XC281];
    rh_read=XBYTE[0XC282];

    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 + -