2.1 Device Description

This guide describes the MPLAB XC8 C Compiler's support for all 8-bit Microchip PIC devices with baseline, enhanced baseline, mid-range, enhanced mid-range and PIC18 cores. Check the ARCH field in the device's INI file to confirm the core architecture used by the compiler when building code. The information contained within the INI files typically comes from your selected Device Family Pack (DFP), but the compiler maintains a default set of INI files in the MPLAB XC8 pic/dat/ini directory. The following descriptions indicate the distinctions within those device cores.

The baseline core uses a 12-bit-wide instruction set and is available in PIC10, PIC12 and PIC16 part numbers (ARCH value of PIC12).

The enhanced baseline core also uses a 12-bit instruction set, but this set includes additional instructions. Some of the enhanced baseline chips support interrupts and the additional instructions used by interrupts. These devices are available in PIC12 and PIC16 part numbers (ARCH value of PIC12E, or PIC12IE for those with interrupt support).

The mid-range core uses a 14-bit-wide instruction set that includes more instructions than the baseline core. It has larger data memory banks and program memory pages, as well. It is available in PIC12, PIC14 and PIC16 part numbers (ARCH value of PIC14).

The Enhanced mid-range core also uses a 14-bit-wide instruction set but incorporates additional instructions and features. There are both PIC12 and PIC16 part numbers that are based on the Enhanced mid-range core (ARCH value of PIC14E or PIC14EX).

The PIC18 core instruction set is 16 bits wide and features additional instructions and an expanded register set. PIC18 core devices have part numbers that begin with PIC18. Some PIC18 devices implement extended data memory and a vectored interrupt controller module with support for one or more interrupt vector tables, rather than fixed-location, dual priority vectors (ARCH value of PIC18, or PIC18XV for those with the extended data memory and the vectored interrupt controller module).

The compiler takes advantage of the target device’s instruction set, addressing modes, memory, and registers whenever possible.

See 4.6.2.8 Print-devices for information on finding the full list of devices that are supported by the compiler. Support for a new device might be possible after downloading an updated Device Family Pack.