6.1.9.7 Config Directive
The directive allows the configuration bits (or fuses)
and ID-location registers to be specified in the assembly source file. Configuration
bits, or fuses, are used to set up fundamental device operation, such as the oscillator
mode, watchdog timer, programming mode and code protection. These bits must be correctly
set to ensure your program executes correctly.CONFIG
The directive has the following forms:
CONFIG setting = value
CONFIG register = literal_value
setting is a configuration setting descriptor (e.g.,
WDT) and value can be either a textual
description of the desired state (e.g., OFF) or a numerical value.
Either the setting or value tokens or
the setting = value expression can be surrounded by either
double or single quotes to protect them from any macro substitution performed by the
preprocessor, for
example:CONFIG "WDT = ON" ;turn on watchdog timer
CONFIG "FEXTOSC" = "ECH" ;external clock oscillator mode, high power PFM
CONFIG WDTPS = 0x1A ;specify the timer postscale valuevalue tokens that appear to be purely numerical are in fact a
textual description of the value, for example in the
following:config WDTPS = 32the 32 token is a
textual description for some devices that indicates a watchdog timer post-scale of 1:32,
not the number 32. In such a case, it might not be the number 32 that is programmed into
the relevant bits of the configuration register. The assembler will first check if
value represents a predefined string and, only if that
is not the case, assume it represents a numerical constant, which will then be subject
to the same constraints as other numerical constant operands.You should never assume that the OFF and
ON tokens used in configuration macros equate to 0 and 1,
respectively, as that is often not the case.
register field is the name of a configuration or ID-location
register, and this must always be used with a value that is a
numerical constant, for
example:CONFIG CONFIG1L = 0x8FThe available setting, register and
value fields are documented in the chipinfo file
relevant to your device (i.e. pic_chipinfo.html and
pic18_chipinfo.html) and that are located in the
docs directory of your compiler installation. Click the link to
your target device and the page will show you the settings and values that are
appropriate with this pragma. Review your device data sheet for more information.
One CONFIG directive can be used to set each configuration setting;
alternatively, several comma-separated configuration settings can be specified by the
same directive. The directive can be used as many times as required to fully configure
the device.
; PIC18F67K22
; VREG Sleep Enable bit : Enabled
; LF-INTOSC Low-power Enable bit : LF-INTOSC in High-power mode during Sleep
; SOSC Power Selection and mode Configuration bits : High Power SOSC circuit selected
; Extended Instruction Set : Enabled
CONFIG RETEN = ON, INTOSCSEL = HIGH, SOSCSEL = HIGH, XINST = ON
; Alternatively
CONFIG CONFIG1L = 0x5D
; IDLOC @ 0x200000
CONFIG IDLOC0 = 0x15All the bits in the Configuration Words should be programmed to prevent erratic program behavior. Do not leave them in their default/unprogrammed state. Not all Configuration bits have a default state of logic high; some have a logic low default state. Consult your device data sheet for more information.
If you are using MPLAB X IDE, take advantage of its built-in tools to generate the required pragmas, so that you can copy and paste them into your source code. See the MPLAB® X IDE User’s Guide for a description and use of the Configuration Bits window.
