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

📄 rc7017uart.lst

📁 pdh控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 1   


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

line level    source

   1          #ifndef _RC7017UART_C_
   2          #define _RC7017UART_C_
   3          
   4          #include "api.h"
   5          #include "serial.h"
   6          
   7          #define FIBER_LOS_TIME 18
   8          #define FIBER_LOS_OK_TIME 16
   9          
  10          void EncapsulationSetCommand( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
  11          {
  12   1              BYTE counter;
  13   1              BYTE *pbuffer;
  14   1      
  15   1              pbuffer = pUart->SendBuffer + 2;
  16   1      
  17   1              pUart->SendLength = COMMAND_SET_LEGNTH;
  18   1      
  19   1              *pbuffer ++ = COMMAND_SET;
  20   1              for(counter=0; counter<sizeof( psys->setbuffer ); counter++)
  21   1                      *pbuffer ++ = psys->setbuffer[counter];
  22   1      
  23   1              *pbuffer ++ = SERIAL_END;
  24   1      }
  25          
  26          void EncapsulationAlarmCommand( SERIALSTRUCT *pUart )
  27          {
  28   1              BYTE *pbuffer;
  29   1      
  30   1              pbuffer = pUart->SendBuffer + 2;
  31   1      
  32   1              pUart->SendLength = COMMAND_ALARM_LEGNTH;
  33   1      
  34   1              *pbuffer ++ = COMMAND_ALARM;
  35   1              *pbuffer ++ = 0x00;
  36   1              *pbuffer ++ = SERIAL_END;
  37   1      }
  38          
  39          void EncapsulationValarCommand( SERIALSTRUCT *pUart )
  40          {
  41   1              BYTE counter;
  42   1              BYTE *pbuffer;
  43   1      
  44   1              pbuffer = pUart->SendBuffer + 2;
  45   1      
  46   1              pUart->SendLength = COMMAND_VALAR_LEGNTH;
  47   1      
  48   1              *pbuffer ++ = COMMAND_VALAR;
  49   1      
  50   1              for(counter=0; counter<6; counter++)
  51   1                      *pbuffer ++ = 0;
  52   1      
  53   1              *pbuffer ++ = SERIAL_END;
  54   1      }
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 2   

  55          
  56          void EncapsulationSendBuffer( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
  57          {
  58   1              BYTE *pbuffer;
  59   1      
  60   1              pbuffer = pUart->SendBuffer;
  61   1              pUart->SendLength = 0;
  62   1      
  63   1              *pbuffer++ = SYNCHR1_0X7E;
  64   1              *pbuffer++ = SYNCHR2_0X81;
  65   1      
  66   1              switch( psys->sendrc7017  )
  67   1              {
  68   2              case SETCMDSERIAL:
  69   2                      EncapsulationSetCommand( pUart, psys );
  70   2                      break;
  71   2      
  72   2              case ALARMSERIAL:
  73   2                      EncapsulationAlarmCommand( pUart );
  74   2                      break;
  75   2      
  76   2              case VALARSERIAL:
  77   2                      EncapsulationValarCommand( pUart );
  78   2                      break;
  79   2      
  80   2              default :
  81   2                      psys->sendrc7017= ALARMSERIAL;
  82   2                      break;
  83   2              }
  84   1              pUart->SendCounter = 0;
  85   1      }
  86          
  87          
  88          void serial_set_command( SYSTEM_INFOMATION *psys )
  89          {
  90   1              psys->SetCommandCounter ++;
  91   1              if( psys->SetCommandCounter == COMMAND_SET_COUNTER )
  92   1              {
  93   2                      psys->sendrc7017 = ALARMSERIAL;
  94   2                      psys->SetCommandCounter = 0;
  95   2              }
  96   1      }
  97          
  98          void alarm_check_first_status( SYSTEM_DEVICE_STATUS *psdev, BYTE status )
  99          {
 100   1              if( status&BIT2 )
 101   1              {
 102   2                      psdev->remote.alarm_hook &= HOOK_ON;
 103   2                      psdev->remote.alarm_hook |= HOOK_OFF;
 104   2              }
 105   1              else
 106   1                      psdev->remote.alarm_hook &= HOOK_ON;
 107   1      
 108   1              if( status&BIT0 )
 109   1              {
 110   2                      psdev->local.alarm_hook &= HOOK_ON;
 111   2                      psdev->local.alarm_hook |= PHONE_TALK;
 112   2                      psdev->remote.alarm_hook &= HOOK_ON;
 113   2                      psdev->remote.alarm_hook |= PHONE_TALK;
 114   2              }
 115   1      }
 116          
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 3   

 117          void alarm_check_local_e1_alarm_status( SYSTEM_DEVICE_STATUS *psdev, SYSTEM_INFOMATION *psys )
 118          {
 119   1              BYTE counter;
 120   1      
 121   1              for( counter=0; counter<psys->max_system_e1; counter++ )
 122   1              {
 123   2                      psdev->local.e1_status[counter] &= E1_NOALARM;
 124   2                      if( ((psys->alarm[4]>>counter)&BIT0) && ((psys->e1_use>>counter)&BIT0) )
 125   2                      {
 126   3                              psdev->local.e1_status[counter] |= E1_ALARM;
 127   3                      }
 128   2              }
 129   1      }
 130          
 131          BYTE get_use_fiber( BYTE *fiber_status )
 132          {
 133   1              BYTE counter;
 134   1      
 135   1              for( counter=0; counter<MAX_FIBER_NOMBER; counter++ )
 136   1                      if( !(fiber_status[counter]&FIBER_NOUSE) )
 137   1                              break;
 138   1      
 139   1              return counter;
 140   1      }
 141          
 142          void alarm_check_remote_e1_alarm_status( SYSTEM_DEVICE_STATUS *psdev, SYSTEM_INFOMATION *psys )
 143          {
 144   1              BYTE counter;
 145   1      
 146   1          if( check_remote_status() == ALARM )
 147   1              return;
 148   1      
 149   1          if( disable_remote_alarm_status() == ALARM )
 150   1              return;
 151   1      
 152   1              for( counter=0; counter<psys->max_system_e1; counter++ )
 153   1              {
 154   2                      psdev->remote.e1_status[counter] &= E1_NOALARM;
 155   2                      if( ((psys->alarm[7]>>counter)&BIT0) && ((psys->valar[4]>>counter)&BIT0) )
 156   2                      {
 157   3                              psdev->remote.e1_status[counter] |= E1_ALARM;
 158   3                      }
 159   2              }
 160   1      }
 161          
 162          BYTE fiber_status_form_chip( BYTE chip_status )
 163          {
 164   1          static BYTE xdata los_time[MAX_FIBER_NOMBER] = {0,0};
 165   1          static BYTE xdata get_time[MAX_FIBER_NOMBER] = {17,17};
 166   1          static BYTE xdata fiber_status = 0xff;
 167   1      /*    static BYTE xdata preview_chip_status = 0xff;*/
 168   1          BYTE xdata fiber;
 169   1      
 170   1      /*
 171   1          if( preview_chip_status != chip_status )
 172   1          {
 173   1              for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 174   1                  if( ((preview_chip_status>>fiber)&BIT0)
 175   1                      && ( !((chip_status>>fiber)&BIT0)) )
 176   1                  {
 177   1                      los_time[fiber] = 0;
 178   1                      get_time[fiber] = 0;
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 4   

 179   1                  }
 180   1              preview_chip_status = chip_status;
 181   1          }
 182   1      */
 183   1          for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 184   1          {
 185   2              get_time[fiber] = ( get_time[fiber] + 1 )%FIBER_LOS_TIME;
 186   2              if( !((chip_status>>fiber)&BIT0) )
 187   2                  los_time[fiber] ++;
 188   2              if( !get_time[fiber] )
 189   2                      {
 190   3                  if( los_time[fiber] >= FIBER_LOS_OK_TIME  )
 191   3                      fiber_status &= ~(BIT0<<fiber);
 192   3                  else
 193   3                  {
 194   4                                      if( los_time[fiber] != 0 )
 195   4                                              gSystemInfo.remote_fiber_status[fiber] = ALARM;
 196   4                                      else
 197   4                                              gSystemInfo.remote_fiber_status[fiber] = NOALARM;
 198   4                                      fiber_status |= (BIT0<<fiber);
 199   4                  }
 200   3                  los_time[fiber] = 0;
 201   3              }
 202   2          }
 203   1          return fiber_status;
 204   1      }
 205          
 206          BYTE fiber_status_form_var( BYTE chip_status )
 207          {
 208   1          static BYTE xdata los_time[MAX_FIBER_NOMBER] = {0,0};
 209   1          static BYTE xdata get_time[MAX_FIBER_NOMBER] = {17,17};
 210   1          static BYTE xdata fiber_status = 0xff;
 211   1      /*    static BYTE xdata preview_chip_status = 0xff;*/
 212   1          BYTE xdata fiber;
 213   1      
 214   1      /*
 215   1          if( preview_chip_status != chip_status )
 216   1          {
 217   1              for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 218   1                  if( ((preview_chip_status>>fiber)&BIT0)
 219   1                      && ( !((chip_status>>fiber)&BIT0)) )
 220   1                  {
 221   1                      los_time[fiber] = 0;
 222   1                      get_time[fiber] = 0;
 223   1                }
 224   1                  preview_chip_status = chip_status;
 225   1          }
 226   1      */
 227   1          for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 228   1          {
 229   2              get_time[fiber] = ( get_time[fiber] + 1 )%FIBER_LOS_TIME;
 230   2              if( !(chip_status&(BIT7>>fiber)) )
 231   2                  los_time[fiber] ++;
 232   2              if( !get_time[fiber] )
 233   2              {
 234   3                  if( los_time[fiber] >= FIBER_LOS_OK_TIME  )
 235   3                      fiber_status &= ~(BIT0<<fiber);
 236   3                  else
 237   3                      fiber_status |= (BIT0<<fiber);
 238   3                  los_time[fiber] = 0;
 239   3              }
 240   2          }
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 5   

 241   1      
 242   1          return fiber_status;
 243   1      }
 244          
 245          void remote_alarm_check( BYTE chip_status, BYTE status )
 246          {
 247   1          SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 248   1          BYTE xdata fiber;
 249   1      
 250   1          if( check_remote_status() == ALARM )
 251   1          {
 252   2              psdev->remote.fiber_status[0] &= FIBER_NOALARM;
 253   2              psdev->remote.fiber_status[1] &= FIBER_NOALARM;
 254   2              return;
 255   2          }
 256   1          for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 257   1          {
 258   2              psdev->remote.fiber_status[fiber] &= FIBER_NOALARM;
 259   2              if( !((chip_status>>fiber)&BIT0) )
 260   2                  psdev->remote.fiber_status[fiber] |= FIBER_LOS;
 261   2          }
 262   1          fiber = get_use_fiber( psdev->remote.fiber_status );
 263   1          if( (psdev->remote.fiber_status[fiber] & FIBER_ALARM_STATUS) == FIBER_OK )
 264   1          {
 265   2               if( status&BIT5 )
 266   2                   psdev->remote.fiber_status[fiber] |= FIBER_LFA;

⌨️ 快捷键说明

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