Hoje comecei a usar o MPLAB X para programar meus PICs e encontrei um modelo de código, com vários arquivos e pontos para preencher o código. Antes eu tinha um único arquivo com o meu código. Neste modelo, onde devo colocar meus bits de configuração, há o seguinte texto:
/* TODO Fill in your config bits here. Remove #if 0 to embed config words. */
#if 0
/* General syntax for configuration word 1 - Check your device .h file
for an up to date listing of available macros.*/
__CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & BOREN_OFF);
/* If the device has multiple configuration words, the second macro defines
the second configuration word. Again check your device .h file
for an up to date listing of available macros. */
__CONFIG(WRT_OFF & PLLEN_OFF & STVREN_OFF & BORV_19 & LVP_OFF);
#endif
Eu realmente não entendo o que o "Remover #if 0 para incorporar palavras de configuração". significa ... Isso é provavelmente algo realmente simples. Tentei pesquisar no Google e pesquisar no manual dos compiladores, mas não obtive bons resultados. Pelo que entendi, o código entre #if 0 e #endif nunca é compilado. O que essa incorporação significa? Isso tem algo a ver com definir os bits de configuração no código vs. depois?
fonte
/* */
não aninha, portanto, se você envolver um grande bloco de código com/* */
um/* */
comentário, a coisa toda não será comentada corretamente. Uma abordagem mais limpa, porém, para esta biblioteca, seria usar em#if defined EMBED_CONFIG_WORDS
vez de#if 0
e, em seguida (possivelmente em um arquivo de configuração separado ou algo assim), ter uma linha como//#define EMBED_CONFIG_WORDS
com um comentário dizendo "descomente esta linha para permitir a incorporação de palavras de configuração".Sim.
Os bits de configuração são um registro programado especial no PIC que determina a operação do oscilador, detecção de queda de energia, + outras coisas. Em um dos manuais de referência : (a macro __CONFIG em C é mapeada para a diretiva correspondente na montagem)
fonte
Você está exatamente certo, o código entre o #if 0 / # endif nunca é compilado. É outra maneira de comentar um bloco de código.
A remoção do #if 0 / # endif incluirá as macros __CONFIG, que permitirão esses bits nos bits de configuração do PIC.
fonte