Я использую компилятор HI-TECH C для микроконтроллера PIC16, и я хотел бы условно скомпилировать разные фрагменты кода в зависимости от того, какой конкретный микроконтроллер был выбран.
Я знаю, что вы можете условно скомпилировать код примерно так:
#if defined(MACRO1)
... compile this code ...
#elif defined(MACRO2)
... compile this code ...
#endif
Что мне нужно знать, так это то, какие предопределенные макросы доступны в компиляторе HI-TECH C, которые позволят мне выбрать конкретный микроконтроллер?
На странице 98 руководства HITEC C перечислены все предварительно определенные макросы.
Одна из записей:
_CHIPNAME Для указания выбранного типа микросхемы, например, _16F877.
так что у вас есть, как другие примеры:
и т. д.
Если вы спрашиваете об условной компиляции кода для разных PIC с использованием определенного имени, вы можете использовать предопределенный макрос _CHIPNAME, упомянутый на странице 106 руководства 9.81.
Или вы можете использовать семейство (например, _PIC12, _PIC14, _PIC14E, как указано в той же таблице) или просто определить свое собственное.
Похоже, вам нужна условная сборка (или компиляция) в зависимости от целевого чипа, хотя ваш пример несколько неясен. Я не думаю, что вы можете поместить DEFINE в цель #IF, как в вашем первом случае, и вы, похоже, тестируете одно и то же в обоих случаях.
В любом случае для конкретного номера модели PIC определен символ, указанный в командной строке MPASMWIN или в директиве LIST. Включаемые файлы для конкретных моделей имеют проверку, чтобы убедиться, что выбрана правильная модель, соответствующая включаемому файлу. Поэтому вы можете написать:
#ифдеф __18f2520 ;код здесь включается только в том случае, если целью является PIC 18F2520 #endif
Маженко
Рашид