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

📄 tenms.c

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 C
字号:
 #include <tenms.h>
void judge_lamp_error() using 1
{
   //  if((drive_no_lamp&last_drive_no_lamp)!=last_drive_no_lamp){
   if((drive_no_lamp^last_drive_no_lamp)!=0) {
                   if(start_counter>=3){
                        error_type=0x02;
                        save_to_error();
                                        }
                                          }
  //   if((no_drive_lamp&last_no_drive_lamp)!=last_drive_no_lamp){
   if((no_drive_lamp^last_no_drive_lamp)!=0){
                 if(start_counter>=3){
                        error_type=0x03;
                        save_to_error();
                                        }
                                           }
     last_drive_no_lamp=drive_no_lamp;
     last_no_drive_lamp=no_drive_lamp;
}
/*****************************************************************************************************/
//     定时器0中断
/*****************************************************************************************************/
void timer0_ms() interrupt 1 using 1
{
    TH0=-(18432/256);  /*9216  10毫秒定时*/
    TL0=-(18432%256);
    WatchDog = !WatchDog;
    XBYTE[0XC083]=0X8b;         //CPU板内8255设置,绿灯电源为输出,遥控为输入
    XBYTE[0XC080]=0X81;         //输出绿灯电源
    lei++;
    if(lei>50)
    {
       lei = 0;
       FrontLed = !FrontLed;
    }      
    read_state();
    far_detect();
    lei++;
    lei--;
    IP=0X10;

}
/*****************************************************************************************************/
//    输出灯组检测函数
/*****************************************************************************************************/
void  read_state(void)  using 1
{
    uint    lod;
    uchar    i;
    g_load1=0;
    y_load1=0;
    r_load1=0;
    g_load2=0;
    y_load2=0;
    r_load2=0;
    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]>=10)gtemp2[i]=10;
          else gtemp2[i]++;
          }else gtemp2[i]=0;
     if(((y_read&lod)==lod)&&((y_out&lod)!=lod))
          {if(ytemp2[i]>=10)ytemp2[i]=10;
          else ytemp2[i]++;
          }else ytemp2[i]=0;
     if(((r_read&lod)==lod)&&((r_out&lod)!=lod))
          {if(rtemp2[i]>=10)rtemp2[i]=10;
          else rtemp2[i]++;
          }else rtemp2[i]=0;
    }
    for(i=0;i<16;i++){
        if(gtemp1[i]==10)g_load1=(g_load1|(0x0001<<i));
        if(ytemp1[i]==10)y_load1=(y_load1|(0x0001<<i));
        if(rtemp1[i]==10)r_load1=(r_load1|(0x0001<<i));
        if(gtemp2[i]==10)g_load2=(g_load2|(0x0001<<i));
        if(ytemp2[i]==10)y_load2=(y_load2|(0x0001<<i));
        if(rtemp2[i]==10)r_load2=(r_load2|(0x0001<<i));
                      }
    // drive_no_lamp=g_load1|y_load1|r_load1;  //驱而不亮的灯组
    // no_drive_lamp=g_load2|y_load2|r_load2;  //不驱而亮的灯组

}
judge_lamp() using 1
{
    drive_no_lamp=g_load1|y_load1|r_load1;  //驱而不亮的灯组
    no_drive_lamp=g_load2|y_load2|r_load2;  //不驱而亮的灯组


}

⌨️ 快捷键说明

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