1 /*-------------------------------------------------------------------------
2 device.inc - pic16 device descriptions for inclusion into device.c
4 Written By - Scott Dattalo scott@dattalo.com
5 Ported to PIC16 By - Martin Dubuc m.dubuc@rogers.com
6 Moved from device.c - Raphael Neider <rneider AT web.de>
8 This program is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 2, or (at your option) any
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 -------------------------------------------------------------------------*/
25 /* This file is included into device.c in order to populate the
26 * Pics16 array with the various device's descriptions.
27 * For a reference of the structure to be filled in here see
28 * PIC16_device in device.h.
30 * The list is scanned top-down, the first device entry matching the
31 * desired processor name will be used. Temporary overrides of faulty
32 * device descriptions can be specified be placing them near the top
37 // {"p18f242", "18f242", "pic18f242", "f242", "18F242"}, // aliases
41 // { 0xf80, 0xfff }, /* PIC18F242 range of SFR's */
43 // /* PIC18F242 configuration words */
46 // { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
47 // { -1, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
48 // { -1, 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
49 // { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
50 // { 0x40, 0, 0xff } /* d */ }
55 {"p18f242", "18f242", "pic18f242", "f242"},
60 { 0xf80, 0xfff }, /* PIC18F242 range of SFR's */
62 /* PIC18F242 configuration words */
65 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
66 { -1, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
67 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
68 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
69 { 0x40, 0, 0xff } /* d */ }
72 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
73 { 0, 0 }, { 0, 0 }, { 0, 0 } }
77 {"p18f248", "18f248", "pic18f248", "f248"},
82 { 0xf00, 0xfff }, /* PIC18F248 range of SFR's */
84 /* PIC18F248 configuration words */
87 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
88 { -1, 0, 0xff } /* 4 */ , { -1, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
89 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
90 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
91 { 0x40, 0, 0xff } /* d */ }
94 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
95 { 0, 0 }, { 0, 0 }, { 0, 0 } }
99 {"p18f252", "18f252", "pic18f252", "f252"},
104 { 0xf80, 0xfff }, /* PIC18F252 range of SFR's */
106 /* PIC18F252 configuration words */
109 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
110 { -1, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
111 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
112 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
113 { 0x40, 0, 0xff } /* d */ }
115 { 0x200000, 0x200007,
116 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
117 { 0, 0 }, { 0, 0 }, { 0, 0 } }
121 {"p18f258", "18f258", "pic18f258", "f258"},
126 { 0xf00, 0xfff }, /* PIC18F258 range of SFR's */
128 /* PIC18F258 configuration words */
131 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
132 { -1, 0, 0xff } /* 4 */ , { -1, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
133 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
134 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
135 { 0x40, 0, 0xff } /* d */ }
137 { 0x200000, 0x200007,
138 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
139 { 0, 0 }, { 0, 0 }, { 0, 0 } }
143 {"p18f442", "18f442", "pic18f442", "f442"},
148 { 0xf80, 0xfff }, /* PIC18F442 range of SFR's */
150 /* PIC18F442 configuration words */
153 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
154 { -1, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
155 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
156 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
157 { 0x40, 0, 0xff } /* d */ }
159 { 0x200000, 0x200007,
160 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
161 { 0, 0 }, { 0, 0 }, { 0, 0 } }
165 {"p18f448", "18f448", "pic18f448", "f448"},
170 { 0xf00, 0xfff }, /* PIC18F448 range of SFR's */
172 /* PIC18F448 configuration words */
175 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
176 { -1, 0, 0xff } /* 4 */ , { -1, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
177 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
178 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
179 { 0x40, 0, 0xff } /* d */ }
181 { 0x200000, 0x200007,
182 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
183 { 0, 0 }, { 0, 0 }, { 0, 0 } }
187 {"p18f452", "18f452", "pic18f452", "f452"},
192 { 0xf80, 0xfff }, /* PIC18F452 range of SFR's */
194 /* PIC18F452 configuration words */
197 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
198 { -1, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
199 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
200 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
201 { 0x40, 0, 0xff } /* d */ }
203 { 0x200000, 0x200007,
204 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
205 { 0, 0 }, { 0, 0 }, { 0, 0 } }
209 {"p18f458", "18f458", "pic18f458", "f458"},
214 { 0xf00, 0xfff }, /* PIC18F458 range of SFR's */
216 /* PIC18F458 configuration words */
219 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
220 { -1, 0, 0xff } /* 4 */ , { -1, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
221 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
222 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
223 { 0x40, 0, 0xff } /* d */ }
225 { 0x200000, 0x200007,
226 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
227 { 0, 0 }, { 0, 0 }, { 0, 0 } }
231 {"p18f1220", "18f1220", "pic18f1220", "f1220"},
236 { 0xf80, 0xfff }, /* PIC18F1220 range of SFR's */
238 /* PIC18F1220 configuration words */
241 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
242 { -1, 0, 0xff } /* 4 */ , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
243 { -1, 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
244 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
245 { 0x40, 0, 0xff } /* d */ }
247 { 0x200000, 0x200007,
248 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
249 { 0, 0 }, { 0, 0 }, { 0, 0 } }
253 {"p18f1320", "18f1320", "pic18f1320", "f1320"},
258 { 0xf80, 0xfff }, /* PIC18F1320 range of SFR's */
260 /* PIC18F1320 configuration words */
263 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
264 { -1, 0, 0xff } /* 4 */ , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
265 { -1, 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
266 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
267 { 0x40, 0, 0xff } /* d */ }
269 { 0x200000, 0x200007,
270 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
271 { 0, 0 }, { 0, 0 }, { 0, 0 } }
275 {"p18f2220", "18f2220", "pic18f2220", "f2220"},
280 { 0xf80, 0xfff }, /* PIC18F2220 range of SFR's */
282 /* PIC18F2220 configuration words */
285 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
286 { -1, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
287 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
288 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
289 { 0x40, 0, 0xff } /* d */ }
291 { 0x200000, 0x200007,
292 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
293 { 0, 0 }, { 0, 0 }, { 0, 0 } }
297 {"p18f2221", "18f2221", "pic18f2221", "f2221"}, // also: 2321, 4221, 4321
299 0x200, /* RAM in bytes */
300 0x80, /* access bank split */
302 { 0xf80, 0xfff }, /* range of SFR's */
304 /* configuration words */
305 0x300001, /* first address */
306 0x30000d, /* last address */
307 { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
308 { -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
309 { -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
310 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
311 { 0x40, 0, 0xff } /* d */ }
313 /* IDLOCs --- always 0 */
314 { 0x200000, 0x200007,
315 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
316 { 0, 0 }, { 0, 0 }, { 0, 0 } }
320 {"p18f2320", "18f2320", "pic18f2320", "f2320"},
325 { 0xf80, 0xfff }, /* PIC18F2320 range of SFR's */
327 /* PIC18F2320 configuration words */
330 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
331 { -1, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
332 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
333 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
334 { 0x40, 0, 0xff } /* d */ }
336 { 0x200000, 0x200007,
337 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
338 { 0, 0 }, { 0, 0 }, { 0, 0 } }
342 {"p18f2321", "18f2321", "pic18f2321", "f2321"}, // also: 2221, 4221, 4321
344 0x200, /* RAM in bytes */
345 0x80, /* access bank split */
347 { 0xf80, 0xfff }, /* range of SFR's */
349 /* configuration words */
350 0x300001, /* first address */
351 0x30000d, /* last address */
352 { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
353 { -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
354 { -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
355 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
356 { 0x40, 0, 0xff } /* d */ }
358 /* IDLOCs --- always 0 */
359 { 0x200000, 0x200007,
360 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
361 { 0, 0 }, { 0, 0 }, { 0, 0 } }
365 {"p18f2455", "18f2455", "pic18f2455", "f2455"},
370 { 0xf62, 0xfff }, /* PIC18F2455 range of SFR's */
372 /* PIC18F2455 configuration words */
375 { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ ,
376 { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ ,
377 { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
378 { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,
379 { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */ }
381 { 0x200000, 0x200007,
382 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
383 { 0, 0 }, { 0, 0 }, { 0, 0 } }
387 {"p18f2525", "18f2525", "pic18f2525", "f2525"},
392 { 0xf80, 0xfff }, /* PIC18F4525,2525 range of SFR's */
394 /* PIC18F4525,2525 configuration words */
397 { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
398 { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ ,
399 { -1, 0, 0xff } /* 7 */ , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
400 { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ ,
401 { 0x40, 0, 0xff } /* d */ }
403 { 0x200000, 0x200007,
404 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
405 { 0, 0 }, { 0, 0 }, { 0, 0 } }
409 {"p18f2550", "18f2550", "pic18f2550", "f2550"},
414 { 0xf62, 0xfff }, /* PIC18F2550 range of SFR's */
416 /* PIC18F2550 configuration words */
419 { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ ,
420 { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ ,
421 { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
422 { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,
423 { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */ }
425 { 0x200000, 0x200007,
426 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
427 { 0, 0 }, { 0, 0 }, { 0, 0 } }
431 {"p18f2620", "18f2620", "pic18f2620", "f2620"},
436 { 0xf80, 0xfff }, /* PIC18F4620,2620 range of SFR's */
438 /* PIC18F4620,2620 configuration words */
441 { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
442 { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ ,
443 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
444 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
445 { 0x40, 0, 0xff } /* d */ }
447 { 0x200000, 0x200007,
448 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
449 { 0, 0 }, { 0, 0 }, { 0, 0 } }
453 {"p18f4220", "18f4220", "pic18f4220", "f4220"},
458 { 0xf80, 0xfff }, /* PIC18F4220 range of SFR's */
460 /* PIC18F4220 configuration words */
463 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
464 { -1, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
465 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
466 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
467 { 0x40, 0, 0xff } /* d */ }
469 { 0x200000, 0x200007,
470 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
471 { 0, 0 }, { 0, 0 }, { 0, 0 } }
475 {"p18f4221", "18f4221", "pic18f4221", "f4221"}, // also: 2221, 2321, 4321
477 0x200, /* RAM in bytes */
478 0x80, /* access bank split */
480 { 0xf80, 0xfff }, /* range of SFR's */
482 /* configuration words */
483 0x300001, /* first address */
484 0x30000d, /* last address */
485 { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
486 { -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
487 { -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
488 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
489 { 0x40, 0, 0xff } /* d */ }
491 /* IDLOCs --- always 0 */
492 { 0x200000, 0x200007,
493 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
494 { 0, 0 }, { 0, 0 }, { 0, 0 } }
498 {"p18f4320", "18f4320", "pic18f4320", "f4320"},
503 { 0xf80, 0xfff }, /* PIC18F4320 range of SFR's */
505 /* PIC18F4320 configuration words */
508 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
509 { -1, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
510 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
511 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
512 { 0x40, 0, 0xff } /* d */ }
514 { 0x200000, 0x200007,
515 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
516 { 0, 0 }, { 0, 0 }, { 0, 0 } }
520 {"p18f4321", "18f4321", "pic18f4321", "f4321"}, // also: 2221, 2321, 4221
522 0x200, /* RAM in bytes */
523 0x80, /* access bank split */
525 { 0xf80, 0xfff }, /* range of SFR's */
527 /* configuration words */
528 0x300001, /* first address */
529 0x30000d, /* last address */
530 { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
531 { -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
532 { -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
533 { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ ,
534 { 0x40, 0, 0xff } /* d */ }
536 /* IDLOCs --- always 0 */
537 { 0x200000, 0x200007,
538 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
539 { 0, 0 }, { 0, 0 }, { 0, 0 } }
543 {"p18f4331", "18f4331", "pic18f4331", "f4331"},
548 { 0xf60, 0xfff }, /* PIC18F4331 range of SFR's */
550 /* PIC18F4331 configuration words */
553 { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x3f, 0, 0xff } /* 3 */ ,
554 { 0x3c, 0, 0xff } /* 4 */ , { 0x9d, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
555 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
556 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
557 { 0x40, 0, 0xff } /* d */ }
559 { 0x200000, 0x200007,
560 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
561 { 0, 0 }, { 0, 0 }, { 0, 0 } }
565 {"p18f4455", "18f4455", "pic18f4455", "f4455"},
570 { 0xf62, 0xfff }, /* PIC18F4455 range of SFR's */
572 /* PIC18F4455 configuration words */
575 { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ ,
576 { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ ,
577 { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
578 { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,
579 { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */ }
581 { 0x200000, 0x200007,
582 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
583 { 0, 0 }, { 0, 0 }, { 0, 0 } }
587 {"p18f4520", "18f4520", "pic18f4520", "f4520"},
592 { 0xf80, 0xfff }, /* PIC18F4520 range of SFR's */
594 /* PIC18F4520 configuration words */
597 { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ ,
598 { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ ,
599 { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
600 { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,
601 { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */ }
603 { 0x200000, 0x200007,
604 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
605 { 0, 0 }, { 0, 0 }, { 0, 0 } }
609 {"p18f4525", "18f4525", "pic18f4525", "f4525"},
614 { 0xf80, 0xfff }, /* PIC18F4525,2525 range of SFR's */
616 /* PIC18F4525,2525 configuration words */
619 { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
620 { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ ,
621 { -1, 0, 0xff } /* 7 */ , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
622 { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ ,
623 { 0x40, 0, 0xff } /* d */ }
625 { 0x200000, 0x200007,
626 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
627 { 0, 0 }, { 0, 0 }, { 0, 0 } }
631 {"p18f4550", "18f4550", "pic18f4550", "f4550"},
636 { 0xf62, 0xfff }, /* PIC18F4550 range of SFR's */
638 /* PIC18F4550 configuration words */
641 { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ ,
642 { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ ,
643 { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
644 { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,
645 { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */ }
647 { 0x200000, 0x200007,
648 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
649 { 0, 0 }, { 0, 0 }, { 0, 0 } }
653 {"p18f4620", "18f4620", "pic18f4620", "f4620"},
658 { 0xf80, 0xfff }, /* PIC18F4620,2620 range of SFR's */
660 /* PIC18F4620,2620 configuration words */
663 { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
664 { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ ,
665 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
666 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
667 { 0x40, 0, 0xff } /* d */ }
669 { 0x200000, 0x200007,
670 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
671 { 0, 0 }, { 0, 0 }, { 0, 0 } }
675 {"p18f6520", "18f6520", "pic18f6520", "f6520"},
680 { 0xf6b, 0xfff }, /* PIC18F6520 range of SFR's */
682 /* PIC18F6520 configuration words */
685 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
686 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
687 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
688 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
689 { 0x40, 0, 0xff } /* d */ }
691 { 0x200000, 0x200007,
692 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
693 { 0, 0 }, { 0, 0 }, { 0, 0 } }
697 {"p18f6620", "18f6620", "pic18f6620", "f6620"},
702 { 0xf6b, 0xfff }, /* PIC18F6620 range of SFR's */
704 /* PIC18F6620 configuration words */
707 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
708 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
709 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
710 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
711 { 0x40, 0, 0xff } /* d */ }
713 { 0x200000, 0x200007,
714 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
715 { 0, 0 }, { 0, 0 }, { 0, 0 } }
719 {"p18f6680", "18f6680", "pic18f6680", "f6680"},
724 { 0xd60, 0xfff }, /* PIC18F6680 range of SFR's */
726 /* PIC18F6680 configuration words */
729 { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
730 { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
731 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
732 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
733 { 0x40, 0, 0xff } /* d */ }
735 { 0x200000, 0x200007,
736 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
737 { 0, 0 }, { 0, 0 }, { 0, 0 } }
741 {"p18f6720", "18f6720", "pic18f6720", "f6720"},
746 { 0xf6b, 0xfff }, /* PIC18F6720 range of SFR's */
748 /* PIC18F6720 configuration words */
751 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
752 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
753 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
754 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
755 { 0x40, 0, 0xff } /* d */ }
757 { 0x200000, 0x200007,
758 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
759 { 0, 0 }, { 0, 0 }, { 0, 0 } }
763 {"p18f8520", "18f8520", "pic18f8520", "f8520"},
768 { 0xf6b, 0xfff }, /* PIC18F8520 range of SFR's */
770 /* PIC18F8520 configuration words */
773 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
774 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
775 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
776 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
777 { 0x40, 0, 0xff } /* d */ }
779 { 0x200000, 0x200007,
780 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
781 { 0, 0 }, { 0, 0 }, { 0, 0 } }
785 {"p18f8620", "18f8620", "pic18f8620", "f8620"},
790 { 0xf6b, 0xfff }, /* PIC18F8620 range of SFR's */
792 /* PIC18F8620 configuration words */
795 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
796 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
797 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
798 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
799 { 0x40, 0, 0xff } /* d */ }
801 { 0x200000, 0x200007,
802 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
803 { 0, 0 }, { 0, 0 }, { 0, 0 } }
807 {"p18f8680", "18f8680", "pic18f8680", "f8680"},
812 { 0xd60, 0xfff }, /* PIC18F8680 range of SFR's */
814 /* PIC18F8680 configuration words */
817 { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
818 { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
819 { -1, 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
820 { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
821 { 0x40, 0, 0xff } /* d */ }
823 { 0x200000, 0x200007,
824 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
825 { 0, 0 }, { 0, 0 }, { 0, 0 } }
829 {"p18f8720", "18f8720", "pic18f8720", "f8720"},
834 { 0xf6b, 0xfff }, /* PIC18F8720 range of SFR's */
836 /* PIC18F8720 configuration words */
839 { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ ,
840 { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
841 { -1, 0, 0xff } /* 7 */ , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
842 { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ ,
843 { 0x40, 0, 0xff } /* d */ }
845 { 0x200000, 0x200007,
846 { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
847 { 0, 0 }, { 0, 0 }, { 0, 0 } }