* device/include/Makefile.in: add support for hc08 subdirectory
[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