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

📄 rc7017uart.lst

📁 pdh控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 267   2               else if( status&BIT4 )
 268   2                   psdev->remote.fiber_status[fiber] |= FIBER_E_3;
 269   2      /*         else if( status&BIT3 )
 270   2                   psdev->remote.fiber_status[fiber] |= FIBER_E_6;*/
 271   2          }
 272   1      }
 273          
 274          void remote_alarm_check_fiber_status_with_als( BYTE status )
 275          {
 276   1          SYSTEM_INFOMATION *psys = &gSystemInfo;
 277   1          BYTE xdata chip_status;
 278   1      
 279   1          chip_status = fiber_status_form_var( psys->valar[6] );
 280   1          remote_alarm_check( chip_status, status );
 281   1      }
 282          
 283          void remote_alarm_check_fiber_status_without_als( BYTE status )
 284          {
 285   1          SYSTEM_INFOMATION *psys = &gSystemInfo;
 286   1          BYTE xdata chip_status;
 287   1      
 288   1          chip_status = ( psys->valar[6] ) >> 6;
 289   1          remote_alarm_check( chip_status, status );
 290   1      }
 291          
 292          void local_alarm_check( BYTE chip_status, BYTE status )
 293          {
 294   1          SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 295   1          BYTE xdata fiber;
 296   1      
 297   1          for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
 298   1          {
 299   2              psdev->local.fiber_status[fiber] &= FIBER_NOALARM;
 300   2              if( !((chip_status>>fiber)&BIT0) )
 301   2                  psdev->local.fiber_status[fiber] |= FIBER_LOS;
 302   2          }
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 6   

 303   1      
 304   1          fiber = get_use_fiber( psdev->local.fiber_status );
 305   1          if( (psdev->local.fiber_status[fiber]&FIBER_ALARM_STATUS) == FIBER_OK )
 306   1          {
 307   2              if( status&BIT5 )
 308   2                  psdev->local.fiber_status[fiber] |= FIBER_LFA;
 309   2              else if( status&BIT4 )
 310   2                  psdev->local.fiber_status[fiber] |= FIBER_E_3;
 311   2      /*        else if( status&BIT3 )
 312   2                  psdev->local.fiber_status[fiber] |= FIBER_E_6;*/
 313   2          }
 314   1      
 315   1          if( check_remote_status() == ALARM )
 316   1          {
 317   2              psdev->remote.fiber_status[0] &= FIBER_NOALARM;
 318   2              psdev->remote.fiber_status[1] &= FIBER_NOALARM;
 319   2          }
 320   1      }
 321          
 322          void local_alarm_check_fiber_status_with_als( BYTE status )
 323          {
 324   1          BYTE xdata chip_status;
 325   1          BYTE xdata local_chip;
 326   1      
 327   1          local_chip = ReadChip( LOCAL_STATUS_ADDR );
 328   1      
 329   1          chip_status = fiber_status_form_chip( local_chip );
 330   1          local_alarm_check( chip_status, status );
 331   1      }
 332          
 333          void local_alarm_check_fiber_status_without_als( BYTE status )
 334          {
 335   1          BYTE xdata chip_status;
 336   1      
 337   1          chip_status = ReadChip( LOCAL_STATUS_ADDR );
 338   1      
 339   1          local_alarm_check( chip_status, status );
 340   1      }
 341          
 342          BYTE get_local_als_status( void )
 343          {
 344   1           SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 345   1      
 346   1          if( psdev->local.program&BIT1 )
 347   1              return 0;
 348   1           return 1;
 349   1      }
 350          
 351          void local_alarm_check_fiber_status( BYTE status )
 352          {
 353   1          if( get_local_als_status() )
 354   1              local_alarm_check_fiber_status_without_als( status );
 355   1          else
 356   1              local_alarm_check_fiber_status_with_als( status );
 357   1      }
 358          
 359          void remote_alarm_check_fiber_status( BYTE status )
 360          {
 361   1          if( get_local_als_status() )
 362   1              remote_alarm_check_fiber_status_without_als( status );
 363   1          else
 364   1              remote_alarm_check_fiber_status_with_als( status );
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 7   

 365   1      }
 366          
 367          void serial_alarm_command( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
 368          {
 369   1              SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 370   1      
 371   1          if ( psys->sendrc7017 != SETCMDSERIAL )
 372   1               psys->sendrc7017= VALARSERIAL;
 373   1      
 374   1              memcpy( &(psys->alarm), pUart->ReceiceBuffer, pUart->ReceiceLength );
 375   1      
 376   1              alarm_check_first_status( psdev, psys->alarm[3] );
 377   1      
 378   1              alarm_check_local_e1_alarm_status( psdev, psys );
 379   1              local_alarm_check_fiber_status( psys->alarm[6] );
 380   1      
 381   1              alarm_check_remote_e1_alarm_status( psdev, psys );
 382   1              remote_alarm_check_fiber_status( psys->alarm[9] );
 383   1      }
 384          
 385          void alarm_check_remote_e1_loop_status( SYSTEM_DEVICE_STATUS *psdev, SYSTEM_INFOMATION *psys )
 386          {
 387   1              BYTE counter;
 388   1      
 389   1              for( counter=0; counter<psys->max_system_e1; counter++ )
 390   1              {
 391   2                      psdev->local.e1_status[counter] &= E1_NOLOOP;
 392   2      
 393   2                      if( ((psys->valar[5]>>counter)&BIT0) )
 394   2                              psdev->local.e1_status[counter] |= E1_LOOP;
 395   2              }
 396   1      }
 397          
 398          void remote_device_type( BYTE status )
 399          {
 400   1          SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
 401   1          BYTE xdata  program_type;
 402   1      
 403   1          program_type = (status&7) | 0x80;
 404   1          psdev->remote.program = program_type;
 405   1      }
 406          
 407          void serial_valar_command( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
 408          {
 409   1              SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
 410   1              BYTE *pbuffer;
 411   1      
 412   1              pbuffer = pUart->ReceiceBuffer;
 413   1      
 414   1          if ( psys->sendrc7017 != SETCMDSERIAL )
 415   1               psys->sendrc7017= ALARMSERIAL;
 416   1      
 417   1              pbuffer += RC7017_VALAR_ADDRESS;
 418   1              memcpy( &(psys->valar), pbuffer, RC7017_VALAR_LENGTH );
 419   1      
 420   1      
 421   1              if( !((psys->valar[6])&BIT5) ) 
 422   1              {
 423   2                      psdev->remote.fiber_status[0] &= FIBER_USE;
 424   2                      psdev->remote.fiber_status[1] |= FIBER_NOUSE;
 425   2              }
 426   1              else
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 8   

 427   1              {
 428   2                      psdev->remote.fiber_status[0] |= FIBER_NOUSE;
 429   2                      psdev->remote.fiber_status[1] &= FIBER_USE;
 430   2              }
 431   1      
 432   1          if( disable_remote_alarm_status() == ALARM )
 433   1              return;
 434   1      
 435   1              alarm_check_remote_e1_alarm_status( psdev, psys );
 436   1              alarm_check_remote_e1_loop_status( psdev, psys );
 437   1      
 438   1          psdev->remote.laser_close[0] = ((~(psys->valar[6]))&BIT3) >>3;
 439   1          remote_device_type( psys->valar[7] );
 440   1      }
 441          
 442          BYTE serial_check_error( SERIALSTRUCT *pUart )
 443          {
 444   1              BYTE *pbuffer;
 445   1      
 446   1              pbuffer = pUart->ReceiceBuffer;
 447   1      
 448   1              if( *pbuffer != SYNCHR1_0X7E )
 449   1                      return ERROR;
 450   1      
 451   1              pbuffer ++;
 452   1              if( (*pbuffer != SYNCHR2_0X81) && (*pbuffer != SYNCHR2_0X82) )
 453   1                      return ERROR;
 454   1      
 455   1              pbuffer += pUart->ReceiceLength - 2;
 456   1              if( *pbuffer != SERIAL_END )
 457   1                      return ERROR;
 458   1      
 459   1              return OK;
 460   1      }
 461          
 462          void process_rc7017_serial( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
 463          {
 464   1              BYTE rc;
 465   1              BYTE type;
 466   1      
 467   1              if( ( rc = serial_check_error( pUart ) ) == ERROR )
 468   1                      return;
 469   1      
 470   1              type = pUart->ReceiceBuffer[2]&0xc0;
 471   1              switch( type )
 472   1              {
 473   2              case COMMAND_SET:
 474   2                      serial_set_command( psys );
 475   2                      break;
 476   2      
 477   2              case COMMAND_ALARM:
 478   2                      serial_alarm_command( pUart, psys );
 479   2                      break;
 480   2      
 481   2              case COMMAND_VALAR:
 482   2                      serial_valar_command( pUart, psys );
 483   2                      break;
 484   2      
 485   2              default:
 486   2                      break;
 487   2              }
 488   1              return;
C51 COMPILER V7.20   RC7017UART                                                            02/20/2006 10:13:55 PAGE 9   

 489   1      }
 490          
 491          void rc7017_serial_process( SERIALSTRUCT *pUart )
 492          {
 493   1              SYSTEM_INFOMATION *psys = &gSystemInfo;
 494   1      
 495   1              /*发送数据处理*/
 496   1              if( psys->rc7017sendflag == SENDING )
 497   1              {
 498   2                      EncapsulationSendBuffer( pUart, psys );
 499   2      
 500   2                      emulateStartSend();
 501   2      
 502   2                      psys->rc7017sendflag = SENDWAIT;
 503   2              }
 504   1      
 505   1              /*接收数据处理*/
 506   1              if( gIoSerial.ReveiveStatus == RECEIVE_OVER )
 507   1              {
 508   2                      process_rc7017_serial( pUart, psys );
 509   2      
 510   2                      pUart->ReceiceLength = 0;
 511   2                      pUart->ReveiveStatus = RECEIVE_WAIT;
 512   2              }
 513   1      }
 514          
 515          /*对RC7017串口处理函数*/
 516          void task_rc7017_serial_process(void)
 517          {
 518   1              SERIALSTRUCT *pUart = &gIoSerial;
 519   1      
 520   1              rc7017_serial_process( pUart );
 521   1      }
 522          
 523          
 524          
 525          
 526          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2782    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     10      10
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----     106
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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