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

📄 light.lst

📁 pdh控制程序
💻 LST
字号:
C51 COMPILER V7.20   LIGHT                                                                 02/21/2006 08:36:07 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LIGHT
OBJECT MODULE PLACED IN .\output\light.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE light.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\light.lst) OBJECT(
                    -.\output\light.obj)

line level    source

   1          #ifndef _LIGHT_C_
   2          #define _LIGHT_C_
   3          
   4          #include "api.h"
   5          
   6          void task_light_process(void)
   7          {
   8   1              SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
   9   1      
  10   1              if( gSystemInfo.light_process_flag == TASK_EXECUTE )
  11   1              {
  12   2                      light_alarm( psdev );
  13   2                      gSystemInfo.light_process_flag = TASK_READY;
  14   2              }
  15   1      }
  16          
  17          BYTE light_e1_alarm( BYTE *e1_status  )
  18          {
  19   1              BYTE xdata counter;
  20   1              BYTE xdata light = INVALID;
  21   1          SYSTEM_INFOMATION *psys = &gSystemInfo;
  22   1      
  23   1              for( counter=0; counter<psys->max_system_e1; counter++ )
  24   1              {
  25   2                      if( ((*e1_status)&(~E1_NOALARM)) == E1_ALARM )
  26   2                      {
  27   3                              light &= ~(BIT0<<counter);
  28   3                      }
  29   2                      e1_status ++;
  30   2              }
  31   1              return light;
  32   1      }
  33          
  34          void get_e1_light( BYTE *show, BYTE alarm, BYTE loop  )
  35          {
  36   1              BYTE xdata counter;
  37   1          SYSTEM_INFOMATION *psys = &gSystemInfo;
  38   1      
  39   1              for( counter=0; counter<psys->max_system_e1; counter++ )
  40   1              {
  41   2                      if( !(loop & (BIT0<<counter)) )
  42   2                              show[counter] = FALSH;
  43   2                      else if( !(alarm&(BIT0<<counter)) )
  44   2                              show[counter] = SHINE;
  45   2                      else 
  46   2                              show[counter] = DROEN;
  47   2              }
  48   1      }
  49          
  50          BYTE light_e1_loop( BYTE *e1_status  )
  51          {
  52   1              BYTE xdata counter;
  53   1              BYTE xdata light = INVALID;
  54   1          SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
C51 COMPILER V7.20   LIGHT                                                                 02/21/2006 08:36:07 PAGE 2   

  55   1      
  56   1              for( counter=0; counter<psys->max_system_e1; counter++ )
  57   1              {
  58   2                      if( ((*e1_status)&(~E1_NOLOOP)) == E1_LOOP )
  59   2                      {
  60   3                              light &= ~(BIT0<<counter);
  61   3                      }
  62   2                      e1_status ++;
  63   2              }
  64   1              return light;
  65   1      }
  66          
  67          bit falsh_light_local = 0;
  68          bit falsh_light_remote = 0;
  69          BYTE light_e1_status( BYTE end, BYTE *show )
  70          {
  71   1              BYTE xdata counter;
  72   1              BYTE xdata light = INVALID;
  73   1          SYSTEM_INFOMATION *psys = &gSystemInfo;
  74   1              bit falsh_light;
  75   1      
  76   1              if( end == LOCAL_END_LIGHT )
  77   1              {
  78   2                      falsh_light_local = ~falsh_light_local;
  79   2                      falsh_light = falsh_light_local;
  80   2              }
  81   1              else
  82   1              {
  83   2                      falsh_light_remote = ~falsh_light_remote;
  84   2                      falsh_light = falsh_light_remote;
  85   2              }
  86   1      
  87   1              for( counter=0; counter<psys->max_system_e1; counter++ )
  88   1              {
  89   2                      switch( show[counter] )
  90   2                      {
  91   3                      case FALSH:
  92   3                              if( falsh_light )
  93   3                                      light |= (BIT0<<counter);
  94   3                              else
  95   3                                      light &= ~(BIT0<<counter);
  96   3                              break;
  97   3      
  98   3                      case SHINE:
  99   3                              light &= ~(BIT0<<counter);
 100   3                              break;
 101   3      
 102   3                      case DROEN:
 103   3                              light |= (BIT0<<counter);
 104   3                              break;
 105   3              
 106   3                      default:
 107   3                              break;
 108   3                      }
 109   2              }
 110   1      
 111   1              return light;
 112   1      }
 113          
 114          /*本端E1告警点灯程序*/
 115          void light_local_e1_alarm( SYSTEM_DEVICE_STATUS *psdev )
 116          {
C51 COMPILER V7.20   LIGHT                                                                 02/21/2006 08:36:07 PAGE 3   

 117   1              BYTE xdata alarm = INVALID;
 118   1              BYTE xdata loop = INVALID;
 119   1              BYTE xdata light = INVALID;
 120   1              BYTE xdata show[SYSTEM_DEVICE_TYPE_08J];
 121   1      
 122   1              /*寻找是否有E1告警*/
 123   1              alarm = light_e1_alarm( psdev->local.e1_status );
 124   1      
 125   1              /*是否有环回设置*/
 126   1              loop = light_e1_loop( psdev->remote.e1_status );
 127   1      
 128   1              /*控制灯应该如何显示,环回:闪烁、中断:长亮、无告警:灭*/
 129   1              get_e1_light( show, alarm, loop );
 130   1      
 131   1              light = light_e1_status( LOCAL_END_LIGHT, show );
 132   1      
 133   1              WriteChip( LOCAL_E1ALARM_ADDR, light );
 134   1      }
 135          
 136          void light_remote_e1_alarm( SYSTEM_DEVICE_STATUS *psdev )
 137          {
 138   1              BYTE xdata alarm = INVALID;
 139   1              BYTE xdata loop = INVALID;
 140   1              BYTE xdata light = INVALID;
 141   1              BYTE xdata show[SYSTEM_DEVICE_TYPE_08J];
 142   1      
 143   1              alarm = light_e1_alarm( psdev->remote.e1_status );
 144   1              loop = light_e1_loop( psdev->local.e1_status );
 145   1      
 146   1              get_e1_light( show, alarm, loop );
 147   1      
 148   1              light = light_e1_status( REMOTE_END_LIGHT, show );
 149   1      
 150   1              WriteChip( REMOTE_E1ALARM_ADDR, light );
 151   1      }
 152          
 153          BYTE light_fiber( BYTE* fiber_status )
 154          {
 155   1              BYTE xdata counter;
 156   1              BYTE xdata light = INVALID;
 157   1              BYTE xdata alarm;
 158   1      
 159   1              for( counter=0; counter<MAX_FIBER_NOMBER; counter++ )
 160   1              {
 161   2                      alarm = (*fiber_status)&(FIBER_ALARM_STATUS);
 162   2                      switch( alarm )
 163   2                      {
 164   3                      case FIBER_LOS:
 165   3                              light = ~BIT4;
 166   3                              break;
 167   3      
 168   3                      case FIBER_LFA:
 169   3                              light = ~BIT3;
 170   3                              break;
 171   3      
 172   3                      case FIBER_E_3:
 173   3                              light = ~BIT2;
 174   3                              break;
 175   3      
 176   3                      case FIBER_E_6:
 177   3      /*                      light = ~BIT1;*/
 178   3                              break;
C51 COMPILER V7.20   LIGHT                                                                 02/21/2006 08:36:07 PAGE 4   

 179   3      
 180   3                      default:
 181   3                              break;
 182   3                      }
 183   2                      fiber_status ++;
 184   2              }
 185   1              return  light;
 186   1      }
 187          
 188          BYTE get_local_alarm_status( SYSTEM_DEVICE_STATUS *psdev )
 189          {
 190   1              return (psdev->local.alarm_hook&0xf0)>>4;
 191   1      }
 192          
 193          BYTE light_fiber_time( SYSTEM_DEVICE_STATUS *psdev )
 194          {
 195   1          BYTE xdata counter;
 196   1          BYTE xdata light = 0xff;
 197   1          BYTE xdata alarm;
 198   1          BYTE xdata fiber_number = 1;
 199   1          BYTE xdata local_chip;
 200   1      
 201   1          if( psdev->local.program&0x01  )
 202   1             fiber_number = 2;
 203   1      
 204   1          for( counter=0; counter<fiber_number; counter++ )
 205   1          {
 206   2              alarm = (psdev->local.fiber_status[counter])&(~FIBER_NOALARM);
 207   2              switch( alarm )
 208   2              {
 209   3                  case FIBER_LFA:
 210   3                      light = ~BIT3;
 211   3                      break;
 212   3      
 213   3                  case FIBER_E_3:
 214   3                      light = ~BIT2;
 215   3                      break;
 216   3      
 217   3                  case FIBER_E_6:
 218   3      /*                light = ~BIT1;*/
 219   3                      break;
 220   3      
 221   3                  default:
 222   3                      local_chip = ReadChip( LOCAL_STATUS_ADDR );
 223   3                      if( (local_chip&0x03) != 0x03 )
 224   3                          light = ~BIT4;
 225   3                      break;
 226   3              }
 227   2          }
 228   1          return  light;
 229   1      }
 230          
 231          void light_local_fiber_alarm( SYSTEM_DEVICE_STATUS *psdev )
 232          {
 233   1              BYTE xdata light = INVALID;
 234   1      
 235   1          light = light_fiber_time( psdev );
 236   1              if( get_local_alarm_status( psdev ) != ALARM )
 237   1                      light &= ~BIT5;
 238   1      
 239   1              WriteChip( LOCAL_FIBERALARM_ADDR, light );
 240   1      }
C51 COMPILER V7.20   LIGHT                                                                 02/21/2006 08:36:07 PAGE 5   

 241          
 242          BYTE get_remote_alarm_status( SYSTEM_DEVICE_STATUS *psdev )
 243          {
 244   1              return (psdev->remote.alarm_hook&0xf0)>>4;
 245   1      }
 246          
 247          void light_remote_fiber_alarm( SYSTEM_DEVICE_STATUS *psdev )
 248          {
 249   1              BYTE xdata light = INVALID;
 250   1      
 251   1              light = light_fiber( psdev->remote.fiber_status );
 252   1              if( get_remote_alarm_status( psdev )  != ALARM )
 253   1                      light &= ~BIT5;
 254   1      
 255   1              WriteChip( REMOTE_FIBERALARM_ADDR, light );
 256   1      }
 257          
 258          void light_alarm( SYSTEM_DEVICE_STATUS *psdev )
 259          {
 260   1              light_local_e1_alarm( psdev );
 261   1              light_remote_e1_alarm( psdev );
 262   1      
 263   1              light_local_fiber_alarm( psdev );
 264   1              light_remote_fiber_alarm( psdev );
 265   1      }
 266          
 267          
 268          
 269          
 270          
 271          
 272          
 273          
 274          
 275          
 276          
 277          
 278          
 279          
 280          
 281          
 282          
 283          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1135    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----     149
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      38
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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