Heute habe ich begonnen, meine PICs mit MPLAB X zu programmieren, und eine Codevorlage mit mehreren Dateien und Stellen zum Ausfüllen von Code gefunden. Bevor ich eine einzelne Datei mit meinem Code darin hatte. In dieser Vorlage, in der ich meine Konfigurationsbits ablegen soll, befindet sich folgender Text:
/* 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
Ich verstehe nicht wirklich, was das "Entfernen von #if 0, um Konfigurationswörter einzubetten" ist. bedeutet ... Das ist wahrscheinlich etwas wirklich Einfaches. Ich habe versucht zu googeln und das Compiler-Handbuch zu durchsuchen, aber keine guten Ergebnisse erzielt. Soweit ich verstehen kann, wird der Code zwischen #if 0 und #endif nie kompiliert. Was bedeutet diese Einbettung? Hat es etwas mit dem Setzen der Konfigurationsbits im Code im Vergleich zu danach zu tun?
quelle
/* */
wird nicht verschachtelt. Wenn Sie also einen großen Codeblock umgeben/* */
, in dem bereits ein/* */
Kommentar enthalten ist, wird das Ganze nicht korrekt auskommentiert. Ein sauberer Ansatz für diese Bibliothek wäre jedoch gewesen,#if defined EMBED_CONFIG_WORDS
anstelle von#if 0
und dann (möglicherweise in einer separaten Konfigurationsdatei oder so etwas) eine Zeile wie//#define EMBED_CONFIG_WORDS
mit einem Kommentar zu verwenden, der besagt: "Ja.
Konfigurationsbits sind ein speziell programmiertes Register im PIC, das den Betrieb des Oszillators, die Brown-Out-Erkennung und andere Dinge bestimmt. Aus einem der Referenzhandbücher : (Das Makro __CONFIG in C wird der entsprechenden Direktive in Assembly zugeordnet.)
quelle
Ihr genau richtig, der Code zwischen dem #if 0 / # endif wird nie kompiliert. Es ist eine andere Möglichkeit, einen Codeblock zu kommentieren.
Das Entfernen des Endifs #if 0 / # enthält die Makros __CONFIG, mit denen diese Bits in den Konfigurationsbits des PIC aktiviert werden.
quelle