7.4 Using SFRS From C Code
The Special Function Registers (SFRs) are registers that control aspects of the MCU, or that of peripheral modules, on the device. These registers are memory-mapped, which means that they appear at specific addresses in the device memory map. With some registers, the bits within the register control independent features.
The SFRs may be read or modified using a C language interface. The SFR
         interface definitions are accessible by including the <xc.h> header
         file in your source code (see Device Header Files).
The names used in the C interface for SFRs and SFR fields/bits are based
         on the names specified in the device data sheet. Each peripheral component's registers are
         accessed through a fixed-base address defined as, for example,
            WDT_BASE_ADDRESS, which is the address of a structure containing all
         memory-mapped registers for the component, for example WDT_CR.
Multiple ways are provided to work with fields or bits of each SFR. The register field in the component structure can reference the complete register value, or individual bits or fields of the register by name. Macro definitions are also provided to allow accessing individual fields using bit operations. SFR Register Definitions provides more information on the SFR interface.
The <xc.h> header will include a device-specific
         header file for the device you are using. These device-specific headers can be found in
         architecture-specific directories under the pic32c/include/proc directory
         of your compiler distribution; however they should not be explicitly included into your
         code, as this will reduce portability.
To check the interface(s) for SFRs for the device you are using, inspect
         the headers in the component subdirectory of the device-specific header
         directory. These headers are automatically included by the device-specific header file and
         named based on the component names in the device data sheet, e.g., wdt.h.
         Remember that no device-specific headers need to be included directly into your source code
         – including the <xc.h> header will ensure all required headers are
         included.
In additional to peripheral modules, SFRs controlling aspects of the MCU
         are also accessible through the same interface. Core SFRs are defined in header files
         automatically included by all device-specific header files, so including
            <xc.h> is sufficient to allow access to all core SFRs.
         Core-specific header files are located in the pic32c/include
         directory.
