📄 canpc.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 + -