Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula
As diretivas de compilação são simples comandos de orientação ao compilador. Esses comandos são, na realidade, utilizados para especificar determinados parâmetros internos utilizados pelo compilador no momento de compilar o código-fonte. Todas as diretivas de compilação são iniciadas pelo caractere # e somente caracteres de espaço em branco podem aparecer antes delas em uma linha.
Os compiladores CCS e C18 possuem uma grande quantidade de diretivas, que podem ser utilizadas para incluir arquivos, definir macros e controlar diversos parâmetros. Porém, esse material não visa esgotar todo o assunto pertinente a essas diretivas de compilação, assim, veremos apenas as mais comuns aos compiladores abordados. Caso necessite, acesse o help ou seus respectivos guias de usuário. (Para o CCS, acesse http://www.ccsinfo.com/downloads/ccs_c_manual.pdf e para o C18 acesse http://ww1.microchip.com/downloads/en/devicedoc/51288f.pdf).
São utilizadas para inserir código em assembly diretamente no programa em C. Os mnemônicos são inseridos entre a diretiva #asm e a diretiva #endasm. Para o C18, essas diretivas são definidas com os símbolos _asm e _endasm.
Sintaxe
Exemplo
A diretiva #include diz ao compilador para incluir, no momento da compilação, o arquivo externo especificado.
Sintaxe
Exemplos
Obs.: A diferença entre se usar " " e <> é somente a ordem de procura do diretório do arquivo especificado. Se usado as aspas, o arquivo encontra-se no diretório corrente.
A diretiva #define informa ao compilador que substitua todas as ocorrências de um nome usado no programa, pela sequência de caracteres ou comandos fornecida. Já a diretiva #undef elimina a macro que a segue, apagando-a da tabela interna que guarda a macro.
Sintaxe
Exemplo
Essa diretiva força o compilador a gerar um código de erro (mensagem) no local onde se encontra sua designação.
Sintaxe
Exemplo
A diretiva #if é um comando de pré-processador muito parecido com o comando if, pois ambos têm a função de conferir a validade de uma determinada expressão e realizar uma ação. Entretanto, a expressão contida em #if só é verificada durante a compilação, denotando que as expressões presentes nessas diretivas não suportam variáveis da linguagem C, somente constante, operadores-padrão e identificadores criados pela diretiva #define.
As diretivas #elif e #else são sempre opcionais e a diretiva #endif finaliza um bloco #if.
Sintaxe
A diretiva #ifdef é uma forma abreviada da diretiva #ifdefined (nome). Ela é utilizada para evitar a redefinição de operadores, constantes e identificadores, que podem, eventualmente, estar presentes nos arquivos inseridos no programa. Já a diretiva #ifndef é a forma negativa de #ifdef.
Sintaxe
Ou
Exemplo
Após execução do código acima exemplificado, tem-se a mensagem impressa como sendo:
Utilizaremos a diretiva #pragma com o compilador C18. Sua função será instruir o compilador a executar uma ação específica durante o processo de compilação. Existem várias ações que podem ser tratadas com a diretiva #pragma. As mais comuns são:
Exemplificando este último caso, se desejar definir o oscilador como sendo a cristal e desabilitar o power-up timer e o watchdog, teremos o comando:
#pragma config OSC = XT, PWRT = OFF, WDTEN = OFF
Versão 5.3 - Todos os Direitos reservados