fd0fa62a90ebcd9c5ee17c591f501850562b1a2d
[fw/sdcc] / device / include / regc515c.h
1 /*****************************************************************************
2 |*
3 |*  MODULE:            regc515c.h
4 |*
5 |*    This file contains definitions for the builtin CAN-Bus Controller of
6 |*    the Siemens c515c controller
7 |*
8 ****************************************************************************/
9
10 #ifndef _REGC515C_H
11 #define _REGC515C_H
12
13 /* define CPU_CLK_10MHZ or CPU_CLK_8MHZ to select the right values for */
14 /* the bit timing registers */
15
16 #define CPU_CLK_10MHZ
17
18 /* address of can controller in xmem */
19 #define CAN_CTRL        0xf700
20
21 /* size of message buffer including 1 dummy byte at end */
22 #define CAN_MSG_SZ      0x10
23
24 /* register offset definitions */
25 #define CR      0
26 #define SR      1
27 #define IR      2
28
29 #define BT_0    4
30 #define BT_1    5
31 #define GMS_0   6
32 #define GMS_1   7
33 #define GME_0   8
34 #define GME_1   9
35 #define GME_2   0xa
36 #define GME_3   0xb
37 #define MSG15MSK_0      0xc
38 #define MSG15MSK_1      0xd
39 #define MSG15MSK_2      0xe
40 #define MSG15MSK_3      0xf
41
42 /* register offsets  in message buffer */
43 #define MCR_0   0
44 #define MCR_1   1
45 #define ARB_0   2
46 #define ARB_1   3
47 #define ARB_2   4
48 #define ARB_3   5
49 #define MCFG    6
50 /* beginning of message data */
51 #define DATA    7
52
53 /* bits in cntr_x registers */
54 #define MSGVAL  0x80
55 #define TXIE    0x20
56 #define RXIE    0x8
57 #define INTPND  0x2
58 #define RMTPND  0x80
59 #define TXRQST  0x20
60 #define MSGLST  0x8
61 #define CPUUPD  0x8
62 #define NEWDAT  0x2
63
64 /* macros for setting and resetting above bits, see Siemens documentation */
65 #define MCR_BIT_SET(p,x) ((p) = (0xff & ~((x) >> 1)))
66 #define MCR_BIT_RES(p,x) ((p) = (0xff & ~(x)))
67
68 /* direction = transmit in mcfg */
69 #define DIR_TRANSMIT    0x8
70
71 /* constants for bit timing registers */
72 /* 8 MHZ */
73 #ifdef CPU_CLK_8MHZ
74 #define BT_0_125K       0x3
75 #define BT_1_125K       0x1c
76 #define BT_0_250K       0x1
77 #define BT_1_250K       0x1c
78 #define BT_0_500K       0x0
79 #define BT_1_500K       0x1c
80 #define BT_0_1M         0x0
81 #define BT_1_1M         0x14
82 #endif
83 /* dito, 10 MHZ */
84 #ifdef CPU_CLK_10MHZ
85 #define BT_0_125K       0x3
86 #define BT_1_125K       0x1c
87 #define BT_0_250K       0x1
88 #define BT_1_250K       0x1c
89 #define BT_0_500K       0x0
90 #define BT_1_500K       0x2f
91 #define BT_0_1M         0x0
92 #define BT_1_1M         0x25
93 #endif
94
95 /* Control register bits */
96
97 #define CINIT   0x1
98 #define IE      0x2
99 #define SIE     0x4
100 #define EIE     0x8
101
102 #define CCE     0x40
103
104 /* status register bits */
105 #define LEC0    0x1
106 #define LEC1    0x2
107 #define LEC2    0x4
108 #define TXOK    0x8
109 #define RXOK    0x10
110 #define WAKE    0x20
111 #define WARN    0x40
112 #define BOFF    0x80
113
114
115 typedef struct can_msg
116 {
117     unsigned char mcr_0;
118     unsigned char mcr_1;
119     unsigned char arb_0;
120     unsigned char arb_1;
121     unsigned char arb_2;
122     unsigned char arb_3;
123     unsigned char mcfg;
124     unsigned char data_bytes[8];
125     unsigned char dummy;
126 } *can_msgp;
127
128 xdata at CAN_CTRL struct
129 {
130     unsigned    char    cr;
131     unsigned    char    sr;
132     unsigned    char    ir;
133     unsigned    char    res0;
134     unsigned    char    bt_0;
135     unsigned    char    bt_1;
136     unsigned    char    gms_0;
137     unsigned    char    gms_1;
138     unsigned    char    gme_0;
139     unsigned    char    gme_1;
140     unsigned    char    gme_2;
141     unsigned    char    gme_3;
142     unsigned    char    msg15msk_0;
143     unsigned    char    msg15msk_1;
144     unsigned    char    msg15msk_2;
145     unsigned    char    msg15msk_3;
146     struct      can_msg msgbufs[15];
147 } can_ctrl;
148
149 /* Byte registers in numerical order */
150
151 sfr at 0x80 P0;
152 sfr at 0x81 SP;
153 sfr at 0x82 DPL;
154 sfr at 0x83 DPH;
155 sfr at 0x86 WDTREL;
156 sfr at 0x87 PCON;
157 sfr at 0x88 TCON;
158 sfr at 0x88 PCON1;
159 sfr at 0x89 TMOD;
160 sfr at 0x8A TL0;
161 sfr at 0x8B TL1;
162 sfr at 0x8C TH0;
163 sfr at 0x8D TH1;
164 sfr at 0x90 P1;
165 sfr at 0x91 XPAGE;
166 sfr at 0x92 DPSEL;
167 sfr at 0x93 SSCCON;
168 sfr at 0x94 STB;
169 sfr at 0x95 SRB;
170 sfr at 0x96 SSCMOD;
171 sfr at 0x98 SCON;
172 sfr at 0x99 SBUF;
173 sfr at 0x9A IEN2;
174 sfr at 0xA0 P2;
175 sfr at 0xA8 IEN0;
176 sfr at 0xA9 IP0;
177 sfr at 0xAA SRELL;
178 sfr at 0xAB SCF;
179 sfr at 0xAC SCIEN;
180 sfr at 0xB0 P3;
181 sfr at 0xB1 SYSCON;
182 sfr at 0xB8 IEN1;
183 sfr at 0xB9 IP1;
184 sfr at 0xBA SRELH;
185 sfr at 0xC0 IRCON;
186 sfr at 0xC1 CCEN;
187 sfr at 0xC2 CCL1;
188 sfr at 0xC3 CCH1;
189 sfr at 0xC4 CCL2;
190 sfr at 0xC5 CCH2;
191 sfr at 0xC6 CCL3;
192 sfr at 0xC7 CCH3;
193 sfr at 0xC8 T2CON;
194 sfr at 0xCA CRCL;
195 sfr at 0xCB CRCH;
196 sfr at 0xCC TL2;
197 sfr at 0xCD TH2;
198 sfr at 0xD0 PSW;
199 sfr at 0xD8 ADCON0;
200 sfr at 0xD9 ADDATH;
201 sfr at 0xDA ADDATL;
202 sfr at 0xDB P6;
203 sfr at 0xDC ADCON1;
204 sfr at 0xE0 ACC;
205 sfr at 0xE8 P4;
206 sfr at 0xF0 B;
207 sfr at 0xF8 P5;
208 sfr at 0xF8 DIR5;
209 sfr at 0xFA P7;
210
211
212 /* defining bits in SFR P0 */
213 sbit at 0x80  P0_0;
214 sbit at 0x81  P0_1;
215 sbit at 0x82  P0_2;
216 sbit at 0x83  P0_3;
217 sbit at 0x84  P0_4;
218 sbit at 0x85  P0_5;
219 sbit at 0x86  P0_6;
220 sbit at 0x87  P0_7;
221
222
223
224 /* defining bits in SFR PCON1 */
225 sbit at 0x88  IT0;
226 sbit at 0x89  IE0;
227 sbit at 0x8a  IT1;
228 sbit at 0x8b  IE1;
229 sbit at 0x8c  TR0;
230 sbit at 0x8d  TF0;
231 sbit at 0x8e  TR1;
232 sbit at 0x8f  TF1;
233 sbit at 0x8f  EWPD;
234
235
236
237 /* defining bits in SFR P1 */
238 sbit at 0x90  P1_0;
239 sbit at 0x90  INT3;
240 sbit at 0x91  P1_1;
241 sbit at 0x91  INT4;
242 sbit at 0x92  P1_2;
243 sbit at 0x92  INT5;
244 sbit at 0x93  P1_3;
245 sbit at 0x93  INT6;
246 sbit at 0x94  P1_4;
247 sbit at 0x94  INT2;
248 sbit at 0x95  P1_5;
249 sbit at 0x95  T2EX;
250 sbit at 0x96  P1_6;
251 sbit at 0x96  CLKOUT;
252 sbit at 0x97  P1_7;
253 sbit at 0x97  T2;
254
255
256
257 /* defining bits in SFR SCON */
258 sbit at 0x98  RI;
259 sbit at 0x99  TI;
260 sbit at 0x9a  RB8;
261 sbit at 0x9b  TB8;
262 sbit at 0x9c  REN;
263 sbit at 0x9d  SM2;
264 sbit at 0x9e  SM1;
265 sbit at 0x9f  SM0;
266
267
268
269 /* defining bits in SFR P2 */
270 sbit at 0xa0  P2_0;
271 sbit at 0xa1  P2_1;
272 sbit at 0xa2  P2_2;
273 sbit at 0xa3  P2_3;
274 sbit at 0xa4  P2_4;
275 sbit at 0xa5  P2_5;
276 sbit at 0xa6  P2_6;
277 sbit at 0xa7  P2_7;
278
279
280
281 /* defining bits in SFR IEN0 */
282 sbit at 0xa8  EX0;
283 sbit at 0xa9  ET0;
284 sbit at 0xaa  EX1;
285 sbit at 0xab  ET1;
286 sbit at 0xac  ES;
287 sbit at 0xad  ET2;
288 sbit at 0xae  WDT;
289 sbit at 0xaf  EA;
290
291
292
293 /* defining bits in SFR P3 */
294 sbit at 0xb0  P3_0;
295 sbit at 0xb0  RXD;
296 sbit at 0xb1  P3_1;
297 sbit at 0xb1  TXD;
298 sbit at 0xb2  P3_2;
299 sbit at 0xb2  INT0;
300 sbit at 0xb3  P3_3;
301 sbit at 0xb3  INT1;
302 sbit at 0xb4  P3_4;
303 sbit at 0xb4  T0;
304 sbit at 0xb5  P3_5;
305 sbit at 0xb5  T1;
306 sbit at 0xb6  P3_6;
307 sbit at 0xb6  WR;
308 sbit at 0xb7  P3_7;
309 sbit at 0xb7  RD;
310
311
312
313 /* defining bits in SFR IEN1 */
314 sbit at 0xb8  EADC;
315 sbit at 0xb9  EX2;
316 sbit at 0xba  EX3;
317 sbit at 0xbb  EX4;
318 sbit at 0xbc  EX5;
319 sbit at 0xbd  EX6;
320 sbit at 0xbe  SWDT;
321 sbit at 0xbf  EXEN2;
322
323
324
325 /* defining bits in SFR IRCON */
326 sbit at 0xc0  IADC;
327 sbit at 0xc1  IEX2;
328 sbit at 0xc2  IEX3;
329 sbit at 0xc3  IEX4;
330 sbit at 0xc4  IEX5;
331 sbit at 0xc5  IEX6;
332 sbit at 0xc6  TF2;
333 sbit at 0xc7  EXF2;
334
335
336
337 /* defining bits in SFR T2CON */
338 sbit at 0xc8  T2I0;
339 sbit at 0xc9  T2I1;
340 sbit at 0xca  T2CM;
341 sbit at 0xcb  T2R0;
342 sbit at 0xcc  T2R1;
343 sbit at 0xcd  I2FR;
344 sbit at 0xce  I3FR;
345 sbit at 0xcf  T2PS;
346
347
348
349 /* defining bits in SFR PSW */
350 sbit at 0xd0  P;
351 sbit at 0xd1  F1;
352 sbit at 0xd2  OV;
353 sbit at 0xd3  RS0;
354 sbit at 0xd4  RS1;
355 sbit at 0xd5  F0;
356 sbit at 0xd6  AC;
357 sbit at 0xd7  CY;
358
359
360
361 /* defining bits in SFR ADCON0 */
362 sbit at 0xd8  MX0;
363 sbit at 0xd9  MX1;
364 sbit at 0xda  MX2;
365 sbit at 0xdb  ADM;
366 sbit at 0xdc  BSY;
367 sbit at 0xdd  ADEX;
368 sbit at 0xde  CLK;
369 sbit at 0xdf  BD;
370
371
372
373 /* defining bits in SFR ACC */
374 sbit at 0xe0  ACC_0;
375 sbit at 0xe1  ACC_1;
376 sbit at 0xe2  ACC_2;
377 sbit at 0xe3  ACC_3;
378 sbit at 0xe4  ACC_4;
379 sbit at 0xe5  ACC_5;
380 sbit at 0xe6  ACC_6;
381 sbit at 0xe7  ACC_7;
382
383
384
385 /* defining bits in SFR P4 */
386 sbit at 0xe8  P4_0;
387 sbit at 0xe8  ADST;
388 sbit at 0xe9  P4_1;
389 sbit at 0xe9  SCLK;
390 sbit at 0xea  P4_2;
391 sbit at 0xea  SRI;
392 sbit at 0xeb  P4_3;
393 sbit at 0xeb  STO;
394 sbit at 0xec  P4_4;
395 sbit at 0xec  SLS;
396 sbit at 0xed  P4_5;
397 sbit at 0xed  INT8;
398 sbit at 0xee  P4_6;
399 sbit at 0xee  TXDC;
400 sbit at 0xef  P4_7;
401 sbit at 0xef  RXDC;
402
403
404
405 /* defining bits in SFR B */
406 sbit at 0xf0  B_0;
407 sbit at 0xf1  B_1;
408 sbit at 0xf2  B_2;
409 sbit at 0xf3  B_3;
410 sbit at 0xf4  B_4;
411 sbit at 0xf5  B_5;
412 sbit at 0xf6  B_6;
413 sbit at 0xf7  B_7;
414
415
416
417 /* defining bits in SFR DIR5 */
418 sbit at 0xf8  P5_0;
419 sbit at 0xf9  P5_1;
420 sbit at 0xfa  P5_2;
421 sbit at 0xfb  P5_3;
422 sbit at 0xfc  P5_4;
423 sbit at 0xfd  P5_5;
424 sbit at 0xfe  P5_6;
425 sbit at 0xff  P5_7;
426 sbit at 0xf8  DIR5_0;
427 sbit at 0xf9  DIR5_1;
428 sbit at 0xfa  DIR5_2;
429 sbit at 0xfb  DIR5_3;
430 sbit at 0xfc  DIR5_4;
431 sbit at 0xfd  DIR5_5;
432 sbit at 0xfe  DIR5_6;
433 sbit at 0xff  DIR5_7;
434
435 #endif /* _REGC515C_H */
436
437