* src/pic16/devices.inc,
[fw/sdcc] / src / pic16 / devices.inc
index c125da6a29f5a5b9064fc35afe00e5c6439765ff..13f0b2c518f587c1a7254aad2560655a648c0ad7 100644 (file)
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f2221", "18f2221", "pic18f2221", "f2221"}, // also: 2321, 4221, 4321
+    0,                 /* always 0 */
+    0x200,             /* RAM in bytes */
+    0x80,              /* access bank split */
+    0,                 /* always 0 */
+    { 0xf80, 0xfff },  /* range of SFR's */
+    {
+    /* configuration words */
+      0x300001,                /* first address */
+      0x30000d,                /* last address */
+      { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+        {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
+       {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
+       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
+       { 0x40, 0, 0xff } /* d */ }
+    },
+    /* IDLOCs --- always 0 */
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f2320", "18f2320", "pic18f2320", "f2320"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f2321", "18f2321", "pic18f2321", "f2321"}, // also: 2221, 4221, 4321
+    0,                 /* always 0 */
+    0x200,             /* RAM in bytes */
+    0x80,              /* access bank split */
+    0,                 /* always 0 */
+    { 0xf80, 0xfff },  /* range of SFR's */
+    {
+    /* configuration words */
+      0x300001,                /* first address */
+      0x30000d,                /* last address */
+      { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+        {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
+       {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
+       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
+       { 0x40, 0, 0xff } /* d */ }
+    },
+    /* IDLOCs --- always 0 */
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f2455", "18f2455", "pic18f2455", "f2455"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f2525", "18f2525", "pic18f2525", "f2525"},
+    0,
+    0x1000,  /* 4096 */
+    0x80,
+    0,
+    { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
+    {
+    /* PIC18F4525,2525 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    },
+    { 0x200000, 0x200007,
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f2550", "18f2550", "pic18f2550", "f2550"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f2620", "18f2620", "pic18f2620", "f2620"},
+    0,
+    0x1000,  /* 4096 */
+    0x80,
+    0,
+    { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
+    {
+    /* PIC18F4620,2620 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    },
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f4220", "18f4220", "pic18f4220", "f4220"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f4221", "18f4221", "pic18f4221", "f4221"}, // also: 2221, 2321, 4321
+    0,                 /* always 0 */
+    0x200,             /* RAM in bytes */
+    0x80,              /* access bank split */
+    0,                 /* always 0 */
+    { 0xf80, 0xfff },  /* range of SFR's */
+    {
+    /* configuration words */
+      0x300001,                /* first address */
+      0x30000d,                /* last address */
+      { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+        {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
+       {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
+       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
+       { 0x40, 0, 0xff } /* d */ }
+    },
+    /* IDLOCs --- always 0 */
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f4320", "18f4320", "pic18f4320", "f4320"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f4321", "18f4321", "pic18f4321", "f4321"}, // also: 2221, 2321, 4221
+    0,                 /* always 0 */
+    0x200,             /* RAM in bytes */
+    0x80,              /* access bank split */
+    0,                 /* always 0 */
+    { 0xf80, 0xfff },  /* range of SFR's */
+    {
+    /* configuration words */
+      0x300001,                /* first address */
+      0x30000d,                /* last address */
+      { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+        {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
+       {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
+       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
+       { 0x40, 0, 0xff } /* d */ }
+    },
+    /* IDLOCs --- always 0 */
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f4331", "18f4331", "pic18f4331", "f4331"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f4525", "18f4525", "pic18f4525", "f4525"},
+    0,
+    0x1000,  /* 4096 */
+    0x80,
+    0,
+    { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
+    {
+    /* PIC18F4525,2525 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    },
+    { 0x200000, 0x200007,
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f4550", "18f4550", "pic18f4550", "f4550"},
     0,
         { 0, 0 }, { 0, 0 }, { 0, 0 } }
     }
   },
+  {
+    {"p18f4620", "18f4620", "pic18f4620", "f4620"},
+    0,
+    0x1000,  /* 4096 */
+    0x80,
+    0,
+    { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
+    {
+    /* PIC18F4620,2620 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    },
+    { 0x200000, 0x200007, 
+      { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
+        { 0, 0 }, { 0, 0 }, { 0, 0 } }
+    }
+  },
   {
     {"p18f6520", "18f6520", "pic18f6520", "f6520"},
     0,