Директиви за условно компилиране

Директиви за условно компилиране

Много микроконтролери се различават само по някои параметри, които­щифтове, размер на паметта и разпределение на регистъра. Това ви позволява да създадете програмен код в C за цялата гама от модели. За това обаче е необходимо по някакъв начин да се заменят онези параметри, които се различават при различните модели. За такива цели се използват директивите на условната компилация.

Синтаксис за директива # ifdef:

# ifdef макрос_име statement_sequence_1

Ако е дефинирано име на макрос в програмата, след това първата след­последователност от оператори, в противен случай - втората последователност (клонът # else може да отсъства).

Пример за използване (за CCS компилатор - PICC):

Синтаксис за директива # ifndef:

# ifndef макрос_име statement_sequence_1

В този случай, за разлика от директивата # ifdef, първата последователност от изрази се изпълнява if, ако името на макроса не е дефиниран­Лено в програма.

За условно компилиране можете също да използвате директивите # ако , # elif .

# if израз1 statement_sequence_1

# elif expression2 statement_sequence_2

Тази конструкция работи по подобен начин на условния оператор if - else. Компи­Генераторът оценява изразите след # if и # elif, докато един от тях не даде TRUE в резултат, след което съответният­следващата последователност от оператори. Ако и двата израза дават false, тогава последователност от оператори се заменя след директивата # else (ако е налице).

Да кажем за предаване и получаване на данни чрез UART в абстрактно микро­SomeMicl 6 използва щифтове 12 и 13, SomeMic 8 използва щифтове 6 и 14, а SomeMic 4 използва щифтове 1 и 2. Тогава можем да създадем­даде заглавен файл SomeMic. h и включва следните директиви.

#if SomeMicX == 16

#elif SomeMicX == 8

#elif SomeMicX == 4

#error "Пиновете TXD и RXD за SomeMicX не са дефинирани"