Ich verwende den HI-TECH C-Compiler für den PIC16-Mikrocontroller und möchte verschiedene Codeabschnitte bedingt kompilieren, je nachdem, welcher spezifische Mikrocontroller ausgewählt wurde.
Ich weiß, dass Sie Code bedingt kompilieren können mit etwas wie:
#if defined(MACRO1)
... compile this code ...
#elif defined(MACRO2)
... compile this code ...
#endif
Was ich wissen muss, ist, welche vordefinierten Makros im HI-TECH C-Compiler verfügbar sind, mit denen ich den spezifischen Mikrocontroller auswählen kann?
Seite 98 des HITEC C Handbuchs listet alle vordefinierten Makros auf.
Einer der Einträge lautet:
_CHIPNAME Zur Angabe des spezifischen ausgewählten Chiptyps, z. B. _16F877
Sie haben also als andere Beispiele:
usw.
Wenn Sie nach bedingtem Kompilieren von Code für verschiedene PICs unter Verwendung des definierten Namens fragen, können Sie das vordefinierte _CHIPNAME-Makro verwenden, das auf Seite 106 des 9.81-Handbuchs erwähnt wird.
Oder Sie können die Familie verwenden (z. B. _PIC12, _PIC14, _PIC14E wie in derselben Tabelle erwähnt) oder einfach Ihre eigene definieren.
Es scheint, als ob Sie je nach Zielchip eine bedingte Assemblierung (oder Kompilierung) wünschen, obwohl Ihr Beispiel etwas unklar ist. Ich glaube nicht, dass Sie DEFINE wie in Ihrem ersten Fall in das Ziel eines #IF setzen können, und Sie scheinen in beiden Fällen auf dasselbe zu testen.
In jedem Fall ist ein Symbol für die spezifische PIC-Modellnummer definiert, wie in der MPASMWIN-Befehlszeile oder mit der LIST-Direktive angegeben. Die modellspezifischen Include-Dateien enthalten eine Überprüfung, um sicherzustellen, dass das richtige Modell ausgewählt wird, das der Include-Datei entspricht. Sie können also schreiben:
#ifdef __18f2520 ; Der Code hier ist nur enthalten, wenn das Ziel PIC 18F2520 ist #endif
Majenko
ausschlaggebend