📄 can.lst
字号:
C166 COMPILER V6.04, CAN 12/10/2006 17:56:47 PAGE 1
C166 COMPILER V6.04, COMPILATION OF MODULE CAN
OBJECT MODULE PLACED IN CAN.OBJ
COMPILER INVOKED BY: d:\Keil\C166\BIN\C166.EXE CAN.C MODV2 BROWSE MODV2 DEBUG
stmt lvl source
1 //****************************************************************************
2 // @Module TwinCAN Module (CAN)
3 // @Filename CAN.C
4 // @Project cannet.dav
5 //----------------------------------------------------------------------------
6 // @Controller Infineon XC167CI-32F20
7 //
8 // @Compiler Keil
9 //
10 // @Codegenerator 2.4
11 //
12 // @Description This file contains functions that use the CAN module.
13 //
14 //----------------------------------------------------------------------------
15 // @Date 2006-12-10 17:52:24
16 //
17 //****************************************************************************
18
19 // USER CODE BEGIN (CAN_General,1)
20
21 // USER CODE END
22
23
24
25 //****************************************************************************
26 // @Project Includes
27 //****************************************************************************
28
29 #include "MAIN.H"
30
31 // USER CODE BEGIN (CAN_General,2)
32
33 // USER CODE END
34
35
36 //****************************************************************************
37 // @Macros
38 //****************************************************************************
39
40 // USER CODE BEGIN (CAN_General,3)
41
42 // USER CODE END
43
44
45 //****************************************************************************
46 // @Defines
47 //****************************************************************************
48
49 // Structure for a single TwinCAN object
50 // A total of 31 such object structures exists
51
52 struct stCanObj
53 {
54 ubyte ubData[8]; // Message Data 0..7
55 ulong ulCANAR; // Arbitration Register
C166 COMPILER V6.04, CAN 12/10/2006 17:56:47 PAGE 2
56 ulong ulCANAMR; // Acceptance Mask Register
57 uword uwMSGCTR; // Message Control Register
58 uword uwCounter; // Frame Counter
59 uword uwMSGCFG; // Message Configuration Register
60 uword uwINP; // Interrupt Node Pointer
61 uword uwCANFCR; // FIFO / Gateway Control Register
62 uword uwCANPTR; // FIFO Pointer
63 ulong ulReserved; // Reserved
64 };
65
66 #define CAN_HWOBJ ((struct stCanObj volatile far *) 0x200300)
67
68 // USER CODE BEGIN (CAN_General,4)
69
70 // USER CODE END
71
72
73 //****************************************************************************
74 // @Typedefs
75 //****************************************************************************
76
77 // USER CODE BEGIN (CAN_General,5)
78
79 // USER CODE END
80
81
82 //****************************************************************************
83 // @Imported Global Variables
84 //****************************************************************************
85
86 // USER CODE BEGIN (CAN_General,6)
87
88 // USER CODE END
89
90
91 //****************************************************************************
92 // @Global Variables
93 //****************************************************************************
94
95
96 // USER CODE BEGIN (CAN_General,7)
97
98 // USER CODE END
99
100
101 //****************************************************************************
102 // @External Prototypes
103 //****************************************************************************
104
105 // USER CODE BEGIN (CAN_General,8)
106
107 // USER CODE END
108
109
110 //****************************************************************************
111 // @Prototypes Of Local Functions
112 //****************************************************************************
113
114 // USER CODE BEGIN (CAN_General,9)
115
116 // USER CODE END
117
C166 COMPILER V6.04, CAN 12/10/2006 17:56:47 PAGE 3
118
119 //****************************************************************************
120 // @Function void CAN_vInit(void)
121 //
122 //----------------------------------------------------------------------------
123 // @Description This is the initialization function of the CAN function
124 // library. It is assumed that the SFRs used by this library
125 // are in its reset state.
126 //
127 //----------------------------------------------------------------------------
128 // @Returnvalue None
129 //
130 //----------------------------------------------------------------------------
131 // @Parameters None
132 //
133 //----------------------------------------------------------------------------
134 // @Date 2006-12-10
135 //
136 //****************************************************************************
137
138 // USER CODE BEGIN (Init,1)
139
140 // USER CODE END
141
142 void CAN_vInit(void)
143 {
144 1
145 1 // USER CODE BEGIN (Init,2)
146 1
147 1 // USER CODE END
148 1
149 1 /// -----------------------------------------------------------------------
150 1 /// Configuration of CAN Node A:
151 1 /// -----------------------------------------------------------------------
152 1
153 1 /// General Configuration of the Node A:
154 1 /// - set INIT and CCE
155 1
156 1 CAN_ACR = 0x0041; // load global control register
157 1
158 1 /// -----------------------------------------------------------------------
159 1 /// Configuration of CAN Node B:
160 1 /// -----------------------------------------------------------------------
161 1
162 1 /// General Configuration of the Node B:
163 1 /// - set INIT and CCE
164 1 /// - enable interrupt generation when a message transfer is completed
165 1 /// - transmit / receive OK interrupt node pointer: TwinCAN SRN 0
166 1
167 1 CAN_BCR = 0x0045; // load global control register
168 1 CAN_BGINP = 0x0000; // load global interrupt node pointer
169 1 // register
170 1
171 1 /// Configuration of the Node B Error Counter:
172 1 /// - the error warning threshold value (warning level) is 96
173 1
174 1 CAN_BECNTH = 0x0060; // load error counter register high
175 1
176 1 /// Configuration of the used CAN Port Pins:
177 1 /// - P9.0 is used for CAN Interface Input (RXDCB)
178 1 /// - P9.1 is used for CAN Interface Output (TXDCB)
179 1
C166 COMPILER V6.04, CAN 12/10/2006 17:56:47 PAGE 4
180 1 ALTSEL0P9 |= 0x0002; // select alternate output function
181 1 ALTSEL1P9 |= 0x0002; // select alternate output function
182 1 DP9 = (DP9 & ~(uword)0x0002) | 0x0002; //set direction register
183 1
184 1 /// Configuration of the Node B Baud Rate:
185 1 /// - required baud rate = 100.000 kbaud
186 1 /// - real baud rate = 100.000 kbaud
187 1 /// - sample point = 60.00 %
188 1 /// - there are 5 time quanta before sample point
189 1 /// - there are 4 time quanta after sample point
190 1 /// - the (re)synchronization jump width is 2 time quanta
191 1
192 1 CAN_BBTRL = 0x3453; // load bit timing register low
193 1
194 1 CAN_BBTRH = 0x0000; // load bit timing register high
195 1
196 1 CAN_BFCRL = 0x0000; // load frame counter timing register low
197 1
198 1 CAN_BFCRH = 0x0000; // load frame counter timing register high
199 1
200 1 /// -----------------------------------------------------------------------
201 1 /// Configuration of the CAN Message Objects 0 - 31:
202 1 /// -----------------------------------------------------------------------
203 1
204 1 /// -----------------------------------------------------------------------
205 1 /// Configuration of Message Object 0:
206 1 /// -----------------------------------------------------------------------
207 1 /// - message object 0 is valid
208 1 /// - enable receive interrupt; bit INTPND is set after successfull
209 1 /// reception of a frame
210 1
211 1 /// - message object is used as receive object
212 1 /// - standard 11-bit identifier
213 1 /// - 8 valid data bytes
214 1 /// - this message object works with CAN node B
215 1 /// - remote monitoring is disabled
216 1 /// - receive interrupt node pointer: TwinCAN SRN 1
217 1
218 1 CAN_MSGCFGL0 = 0x0082; // load message configuration register low
219 1 CAN_MSGCFGH0 = 0x0001; // load message configuration register high
220 1
221 1 /// - acceptance mask 11-bit: 0x7FF
222 1 /// - identifier 11-bit: 0x122
223 1
224 1 CAN_MSGAMRL0 = 0xFFFF; // load acceptance mask register low
225 1 CAN_MSGAMRH0 = 0xFFFF; // load acceptance mask register high
226 1 CAN_MSGARL0 = 0x0000; // load arbitration register low
227 1 CAN_MSGARH0 = 0x0488; // load arbitration register high
228 1 CAN_MSGDRL00 = 0x0000; // load data register 0 low
229 1 CAN_MSGDRH00 = 0x0000; // load data register 0 high
230 1 CAN_MSGDRL04 = 0x0000; // load data register 4 low
231 1 CAN_MSGDRH04 = 0x0000; // load data register 4 high
232 1
233 1 /// - functionality of standard message object
234 1
235 1 CAN_MSGFGCRL0 = 0x0000; // load FIFO/gateway control register low
236 1 CAN_MSGFGCRH0 = 0x0000; // load FIFO/gateway control register high
237 1
238 1 CAN_MSGCTRH0 = 0x0000; // load message control register high
239 1 CAN_MSGCTRL0 = 0x5599; // load message control register low
240 1
241 1 /// -----------------------------------------------------------------------
C166 COMPILER V6.04, CAN 12/10/2006 17:56:47 PAGE 5
242 1 /// Configuration of Message Object 1:
243 1 /// -----------------------------------------------------------------------
244 1 /// - message object 1 is valid
245 1 /// - enable transmit interrupt; bit INTPND is set after successfull
246 1 /// transmission of a frame
247 1
248 1 /// - message object is used as transmit object
249 1 /// - standard 11-bit identifier
250 1 /// - 8 valid data bytes
251 1 /// - this message object works with CAN node B
252 1 /// - remote monitoring is disabled
253 1 /// - transmit interrupt node pointer: TwinCAN SRN 2
254 1
255 1 CAN_MSGCFGL1 = 0x008A; // load message configuration register low
256 1 CAN_MSGCFGH1 = 0x0022; // load message configuration register high
257 1
258 1 /// - acceptance mask 11-bit: 0x7FF
259 1 /// - identifier 11-bit: 0x123
260 1
261 1 CAN_MSGAMRL1 = 0xFFFF; // load acceptance mask register low
262 1 CAN_MSGAMRH1 = 0xFFFF; // load acceptance mask register high
263 1 CAN_MSGARL1 = 0x0000; // load arbitration register low
264 1 CAN_MSGARH1 = 0x048C; // load arbitration register high
265 1 CAN_MSGDRL10 = 0x0000; // load data register 0 low
266 1 CAN_MSGDRH10 = 0x0000; // load data register 0 high
267 1 CAN_MSGDRL14 = 0x0000; // load data register 4 low
268 1 CAN_MSGDRH14 = 0x0000; // load data register 4 high
269 1
270 1 /// - functionality of standard message object
271 1
272 1 CAN_MSGFGCRL1 = 0x0000; // load FIFO/gateway control register low
273 1 CAN_MSGFGCRH1 = 0x0001; // load FIFO/gateway control register high
274 1
275 1 CAN_MSGCTRH1 = 0x0000; // load message control register high
276 1 CAN_MSGCTRL1 = 0x55A5; // load message control register low
277 1
278 1 /// -----------------------------------------------------------------------
279 1 /// Configuration of Message Object 2:
280 1 /// -----------------------------------------------------------------------
281 1 /// - message object 2 is valid
282 1 /// - enable transmit interrupt; bit INTPND is set after successfull
283 1 /// transmission of a frame
284 1
285 1 /// - message object is used as transmit object
286 1 /// - standard 11-bit identifier
287 1 /// - 8 valid data bytes
288 1 /// - this message object works with CAN node B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -