Confusión sobre #pragma en XC8

Actualmente estoy programando un pic16f18323. Estoy usando MPLAB X. Y XC8 como compilador. Solo quiero preguntar si las configuraciones de pragma se pueden mostrar como ('110' es la representación binaria de la configuración RSTOSC de 3 bits en el registro de configuración del oscilador. Página 50 en la hoja de datos 'PIC16 (L) F18313/18323'):

#pragma config RSTOSC = 0b110

en lugar de

#pragma config RSTOSC = HFINT1

Intenté usar la primera expresión en lugar de la normal (segunda). No me dio ningún error de compilación, pero tampoco funcionó correctamente. Cuando programo la imagen con un código de parpadeo simple, con la configuración 'HFINT1' funciona bien. Pero cuando uso el número binario, la frecuencia del parpadeo aumenta en gran medida.

Me hace pensar que probablemente se trate de la sintaxis, pero aún no estoy completamente seguro. No afecta mi trabajo directamente, me encontré con este problema por coincidencia y me dio curiosidad. Si alguien sabe de esto me alegraría.

¡Hola! Gracias por tus comentarios. ¡Parece que estoy equivocado! Voy a eliminar mi respuesta antes de que difunda información errónea :)

Respuestas (1)

#pragmaes una directiva que envía información de texto al compilador, que luego la interpreta de acuerdo con las reglas del pragma particular. Este texto no es código C y no tiene que ser compatible con él.

Las definiciones relevantes para HFINT1 (que se encuentran en el archivo '16f18323.cfgdata') son: -

CWORD:8007:2977:FFFF:CONFIG1
CSETTING:70:RSTOSC:Power-up default value for COSC bits
CVALUE:60:HFINT1:HFINTOSC (1MHz) 

Esto le dice al pragma de configuración que RSTOSC = HFINT1significa 'establecer la memoria en la dirección 0x8007 a 0x60 a través de una máscara de 0x70', lo que coloca 0b110 en los bits 6-4 del registro de configuración 1.

Debe utilizar únicamente los nombres de configuración definidos . Sustituir los números binarios del orzuelo C simplemente confundirá el pragma.

Gracias, creo que esta es una respuesta adecuada. Para los curiosos, la sintaxis binaria #pragma config RSTOSC = 110sin '0b' al principio funcionó para mí.
110 se interpreta como un número decimal, igual a 1101110 en binario. En este caso, los 3 bits superiores requeridos son correctos, pero solo por pura suerte. Los números hexadecimales (0x...) también se interpretarán correctamente, ¡pero no deberías poner números 'mágicos' en tu código!
Oh, eso fue una gran coincidencia entonces, lo entendí absolutamente ahora.