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

📄 xkcan_node.lst

📁 CAN工业节点设计、CAN控制器为SJA1000.C源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 466   3                                      //Generate a full frame from CAN
 467   3                                      //flag_485_tx = 1;
 468   3                              }
 469   3                              else if ( csTemp == PDO2_485_CTRL_1 && flag_485_tx == 0)
 470   3                              {
 471   3                                      //Generate a full frame from CAN
 472   3                                      //flag_485_tx = 1;
 473   3                              }
 474   3                              else if ( csTemp == PDO2_485_CTRL_C && flag_485_tx == 0)
 475   3                              {
 476   3                                      //Generate a full frame from CAN
 477   3                                      //flag_485_tx = 1;
 478   3                              }
 479   3                              else if ( csTemp == PDO2_485_CTRL_C_1 && flag_485_tx == 0)
 480   3                              {
 481   3                                      //Generate a full frame from CAN
 482   3                                      //flag_485_tx = 1;
 483   3                              }
 484   3                              else
 485   3                              {
 486   3                                      // ERROR Handling
 487   3                              }
 488   3              */
 489   3                      }
C51 COMPILER V8.09   XKCAN_NODE                                                            03/13/2008 06:00:59 PAGE 9   

 490   2                      else if ( fcTemp == FC_SDO_TX )
 491   2                      {
 492   3                              if ( csTemp == SDO_CS_EXP_TIME )
 493   3                              {
 494   4                                      CLOCK_Exp_Set( pReadRxCanFrame->dat[1], pReadRxCanFrame->dat[2], pReadRxCanFrame->dat[3]);
 495   4                                      flag_timer_exp_set = 1;
 496   4                              }
 497   3                              else if ( csTemp == SDO_CS_EXP_START )
 498   3                              {
 499   4                                      if (flag_timer_exp_set == 1)
 500   4                                              EnterExpStatus(EXP_RUNNING);
 501   4                              }
 502   3                              else if ( csTemp == SDO_CS_EXP_STOP )
 503   3                              {
 504   4                                      EnterExpStatus(EXP_STOPPED);
 505   4                              }
 506   3                              else if ( csTemp == SDO_CS_EXP_PAUSE )
 507   3                              {
 508   4                                      EnterExpStatus(EXP_PAUSE);
 509   4                              }
 510   3                              else if ( csTemp == SDO_CS_EXP_RESET )
 511   3                              {
 512   4                                      EnterExpStatus(EXP_INITIALISING);
 513   4                              }
 514   3                              else if ( csTemp == SDO_CS_EXP_RESUME )
 515   3                              {
 516   4                                      EnterExpStatus(EXP_RUNNING);
 517   4                              }
 518   3                              else if ( csTemp == SDO_CS_EXP_END )
 519   3                              {
 520   4                                      EnterExpStatus(EXP_END);
 521   4                              }
 522   3                              else 
 523   3                              {
 524   4                                      //TODO:         Add your error handling code here
 525   4                                      //ERROR:        Recevied undefined NMT Module Control frame
 526   4                              }               
 527   3                      }
 528   2              
 529   2                      else
 530   2                      {
 531   3                              //Error Handle
 532   3                      }
 533   2              }
 534   1              
 535   1              // Data received. After all dealings, switch the ping-pong buffer
 536   1      
 537   1              pCanFrameTemp2 = pReadRxCanFrameTemp;
 538   1              pReadRxCanFrameTemp = pReadRxCanFrame;
 539   1              pReadRxCanFrame = pCanFrameTemp2;
 540   1      }
 541          
 542          
 543          void StatusMachine()
 544          {
 545   1              if (NMT_Status == STATUS_INITIALISING)
 546   1              {
 547   2                      //STATUS_INITIALISING
 548   2                      EnterStatus (STATUS_RESET_APP); // automatically
 549   2              }
 550   1              else if (NMT_Status == STATUS_RESET_APP)
 551   1              {
C51 COMPILER V8.09   XKCAN_NODE                                                            03/13/2008 06:00:59 PAGE 10  

 552   2                      //STATUS_RESET_APP
 553   2                      EnterStatus (STATUS_RESET_COMM); // automatically
 554   2              }
 555   1              else if (NMT_Status == STATUS_RESET_COMM)
 556   1              {
 557   2                      //STATUS_RESET_COMM
 558   2                      EnterStatus (STATUS_PRE_OPERATIONAL); // automatically
 559   2              }
 560   1              else if (NMT_Status == STATUS_PRE_OPERATIONAL)
 561   1              {
 562   2                      //STATUS_PRE_OPERATIONAL
 563   2                      //EnterStatus (STATUS_OPERATIONAL); // automatically
 564   2              }
 565   1              else if (NMT_Status == STATUS_OPERATIONAL)
 566   1              {
 567   2                      // Check all instruments and other devices's status
 568   2                      UpdateRegStatus();
 569   2      
 570   2                      // Send Data to 485 bus
 571   2                      _485_SendData(stntype);
 572   2                      // Receive Data from UART, this might be 485 data
 573   2                      stntype = _485_ReceiveData();
 574   2      
 575   2                      //CRC Check
 576   2                      //if ( flag_485_rcv == 1 )
 577   2                      //{
 578   2                      //      if ( _485_Tuoke_DH4_CRCCheck( pRx485Frame ) != 1 );
 579   2                      //              flag_485_rcv = 0;
 580   2                      //}
 581   2      
 582   2                      // SEND 485 data to CAN
 583   2                      if (flag_485_rcv == 1 )
 584   2                      {
 585   3                              txCanFrameTemp.cobid = _GEN_D_COBID(FC_D_PDO2_RX, NID);
 586   3                              txCanFrameTemp.rtr = 0;
 587   3                              txCanFrameTemp.dat[0] = PDO2_485_READ;
 588   3                              txCanFrameTemp.dat[1] = stntype;
 589   3                              
 590   3                              if (stntype == INSTR_TUOKE_DH4)
 591   3                              {
 592   4                                      txCanFrameTemp.dlc = 5;
 593   4                                      txCanFrameTemp.dat[2] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->stn;
 594   4                                      txCanFrameTemp.dat[3] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->dat_L;
 595   4                                      txCanFrameTemp.dat[4] = ((_t_485_tuoke_dh4_rx *)pRx485Frame)->dat_H;
 596   4                              }
 597   3      
 598   3                              CAN_Transmit( &txCanFrameTemp );
 599   3                              flag_485_rcv = 0;
 600   3                      }
 601   2                                              
 602   2                      if (EXP_Status == EXP_PRE_INIT)
 603   2                      {
 604   3                              EnterExpStatus(EXP_INITIALISING);
 605   3                      }
 606   2                      else if (EXP_Status == EXP_INITIALISING)
 607   2                      {
 608   3                              if (flag_timer_exp_set == 1)
 609   3                                      EnterExpStatus(EXP_STANDBY);
 610   3                      }
 611   2                      else if (EXP_Status == EXP_STANDBY)
 612   2                      {
 613   3                              ;
C51 COMPILER V8.09   XKCAN_NODE                                                            03/13/2008 06:00:59 PAGE 11  

 614   3                      }
 615   2                      else if (EXP_Status == EXP_RUNNING)
 616   2                      {
 617   3                              if (flag_timer_exp_timeup == 1)
 618   3                              {
 619   4                                      EnterExpStatus(EXP_END_REQUEST);
 620   4                              }
 621   3                      }
 622   2                      else if (EXP_Status == EXP_PAUSE)
 623   2                      {
 624   3                              ;
 625   3                      }
 626   2                      else if (EXP_Status == EXP_FAULT)
 627   2                      {
 628   3                              ;
 629   3                      }
 630   2                      else if (EXP_Status == EXP_STOPPED)
 631   2                      {
 632   3                              EnterExpStatus(EXP_END_REQUEST);
 633   3                      }
 634   2                      else if (EXP_Status == EXP_END_REQUEST)
 635   2                      {
 636   3                              ;
 637   3                      }
 638   2                      else if (EXP_Status == EXP_END)
 639   2                      {
 640   3                              ;
 641   3                      }
 642   2                      else if (EXP_Status == EXP_STATUS_ERROR)
 643   2                      {
 644   3                              ;
 645   3                      }
 646   2                      else
 647   2                      {
 648   3                              ;
 649   3                      }
 650   2                      
 651   2              }
 652   1              else if (NMT_Status == STATUS_STOPPED)
 653   1              {
 654   2                      //STATUS_STOPPED
 655   2              }
 656   1              else
 657   1              {
 658   2                      //      STATUS_DEFAULT
 659   2              }
 660   1      
 661   1      }
 662          
 663          void UpdateRegStatus()
 664          {
 665   1              ubyte cTemp;
 666   1      
 667   1              if ( timer_tick1 != timer_tick2 )
 668   1              {
 669   2                      timer_tick2 = TIMER_Count();
 670   2      
 671   2                      cTemp = Status_Read();
 672   2                      if (cTemp == 0x55)
 673   2                      {
 674   3                              regStatus[1] = Status_Read();
 675   3      
C51 COMPILER V8.09   XKCAN_NODE                                                            03/13/2008 06:00:59 PAGE 12  

 676   3                      }
 677   2                      else
 678   2                      {
 679   3                              cTemp = Status_Read();
 680   3                              cTemp = Status_Read();
 681   3                      }
 682   2                      cTemp = Status_Read();                          
 683   2              }       
 684   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1703    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24       9
   IDATA SIZE       =     73    ----
   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 + -