Aujourd'hui, j'ai commencé à utiliser MPLAB X pour programmer mes PIC et j'ai trouvé un modèle de code, avec plusieurs fichiers et emplacements pour remplir le code. Avant, j'avais un seul fichier avec mon code dedans. Dans ce modèle, où je suis censé mettre mes bits de configuration, il y a le texte suivant:
/* 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
Je ne comprends pas vraiment ce que "Supprimer # si 0 pour incorporer des mots de configuration". signifie ... C'est probablement quelque chose de vraiment simple. J'ai essayé de googler et de rechercher le manuel du compilateur, mais je n'ai pas obtenu de bons résultats. D'après ce que je peux comprendre, le code entre #if 0 et #endif n'est jamais compilé. Que signifie cette intégration? At-il quelque chose à voir avec la définition des bits de configuration dans le code par rapport à la suite?
la source
/* */
ne s'imbrique pas, donc si vous entourez un gros bloc de code avec/* */
déjà un/* */
commentaire à l'intérieur, le tout ne sera pas correctement commenté. Une approche plus propre cependant, pour cette bibliothèque, aurait été d'utiliser à la#if defined EMBED_CONFIG_WORDS
place de#if 0
(puis dans un fichier de configuration séparé ou quelque chose comme ça) une ligne comme//#define EMBED_CONFIG_WORDS
avec un commentaire disant "décommentez cette ligne pour permettre l'incorporation de mots de configuration".Oui.
Les bits de configuration sont un registre programmé spécial dans le PIC qui détermine le fonctionnement de l'oscillateur, la détection de brunissement, etc. Depuis l' un des manuels de référence : (la macro __CONFIG en C est mappée à la directive correspondante dans l'assembly)
la source
Vous avez parfaitement raison, le code entre #if 0 / # endif n'est jamais compilé. C'est une autre façon de commenter un bloc de code.
La suppression de #if 0 / # endif inclura les macros __CONFIG qui activeront ces bits dans les bits de configuration du PIC.
la source