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

📄 canpc.lst

📁 这是在KEIL环境下写的CAN源码
💻 LST
字号:
C51 COMPILER V7.50   CANPC                                                                 08/16/2008 17:34:30 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CANPC
OBJECT MODULE PLACED IN CANPC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CANPC.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***************************应用层CANOpen处理written by Meng Zhao   BJUT****************************/
   2          
   3          #include "can.h"
   4          
   5          #include "canpc.h"
   6          #include "REG591.h"
   7          #include "string.h"
   8          
   9          CAN_MSG data rec_mes;
  10          CAN_MSG data TX_SDO;
  11           CANOpenConfig data CANOpenpara;
  12          unsigned char data state;
  13          unsigned int data RecSDO_ID;
  14          unsigned int data RecPDO_ID;
  15          extern unsigned char rec_status;
  16          extern unsigned char send_status;
  17          BYTE RX_message[13];
  18          
  19          
  20          unsigned char const code SDOTable[]={
  21             // [1000h,00]: Device Type
  22            SDOREPLY(0x1000, 0x00, 4, OD_DEVICE_TYPE),
  23          
  24          #ifdef OD_SERIAL
                // [1018h,00]: Identity Object, Number of Entries = 4
                SDOREPLY(0x1018, 0x00, 1, 0x00000004L),
              #else
  28            // [1018h,00]: Identity Object, Number of Entries = 3
  29            SDOREPLY(0x1018, 0x00, 1, 0x00000003L),
  30          #endif
  31          
  32            // [1018h,01]: Identity Object, Vendor ID
  33            SDOREPLY(0x1018, 0x01, 4, OD_VENDOR_ID),
  34          
  35            // [1018h,02]: Identity Object, Product Code
  36            SDOREPLY(0x1018, 0x02, 4, OD_PRODUCT_CODE),
  37          
  38            // [1018h,03]: Identity Object, Revision
  39            SDOREPLY(0x1018, 0x03, 4, OD_REVISION),
  40          
  41          #ifdef OD_SERIAL
                // [1018h,04]: Identity Object, Serial
                SDOREPLY(0x1018, 0x04, 4, OD_SERIAL),
              #endif
  45          
  46            // [2018h,00]: MicroCANopen Identity Object, Number of Entries = 3
  47            SDOREPLY(0x2018, 0x00, 1, 0x00000003L),
  48          
  49            // [2018h,01]: MicroCANopen Identity Object, Vendor ID = 01455341, ESA Inc.
  50            SDOREPLY(0x2018, 0x01, 4, 0x01455341L),
  51          
  52            // [2018h,02]: MicroCANopen Identity Object, Product Code = "MCOP"
  53            SDOREPLY4(0x2018, 0x02, 4, 'P', 'O', 'C', 'M'),
  54          
  55            // [2018h,03]: MicroCANopen Identity Object, Revision = 1.20
C51 COMPILER V7.50   CANPC                                                                 08/16/2008 17:34:30 PAGE 2   

  56            SDOREPLY(0x2018, 0x03, 4, 0x00010020L),
  57          
  58          #ifdef PDO_IN_OD
                // NOTE: These entries must be added manually. The parameters must match
                // the parameters used to call the functions MCO_InitRPDO and MCO_InitTPDO.
              
                // These entries are necessary to be fully CANopen compliant.
                // Suppported in commercial version of MicroCANopen available from
                // www.CANopenStore.com
              
                // Warning: This version is not fully CANopen compliant - PDO_IN_OD must not be defined
                #error Warning: This version of MicroCANopen has a limited Object Dictionary! Un-define PDO_IN_OD to con
             -firm!
              #endif // PDO_IN_OD
  69          
  70            // End-of-table marker
  71            SDOREPLY(0xFFFF, 0xFF, 0xFF, 0xFFFFFFFFL)
  72          };
  73          void main()
  74          {
  75   1        Can_init();      
  76   1        
  77   1        reset_communication();
  78   1        while(1)
  79   1        {
  80   2        process();
  81   2        }
  82   1      }
  83          
  84          void CANOpen_init(unsigned char NodeID)
  85          
  86          {
  87   1        RecPDO_ID=0X200+NodeID;
  88   1        RecSDO_ID=0X600+NodeID;
  89   1        TX_SDO.ID=0X580+NodeID;
  90   1        TX_SDO.LEN=0X08;
  91   1         CANOpenpara.NodeID=NodeID;
  92   1      //设置3个滤波器分别以NMT,接收SDO,接收PDO报文的ID作为验证ID,这样如果接收到的报文ID与三个报文验证ID之一相符

⌨️ 快捷键说明

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