Syntaxe:
#ifdef Constante | Valeur Constante | Variable(NomVariable)
…
#endif
Explication :
La directive #ifdef est utilisée pour choisir sélectivement des parties de code. Il y a trois manière dans lesquels on peut l'utiliser.
L'avantage d'utiliser #ifdef est préférable à une série équivalente de IF par la quantité de code qui est chargé dans la puce du PIC. #ifdef contrôle que le code est compilé et chargé. IF contrôle le fonctionnement, une fois dans la puce du PIC. #ifdef devrait être utilisé quand une fois la valeur d'une constante doit être testé.
(Note: Le code dans les sections suivantes ne se compilera pas, parce que on n'a pas mis les directives de la puce PIC et les commandes DIR. Comprenez qu'ils sont seulement donnés comme exemple)
Permettre le code si une constante est définie
#define Blink1 #ifdef Blink1 PulseOut PORTB.0, 1 sec Wait 1 sec #endif #ifdef Blink2 PulseOut PORTB.1, 1 sec Wait 1 sec #endif
Ce code enverra une impulsion sur PORTB.0, mais pas sur PORTB.1. Ceci est dû à ce que Blink1 a été défini, mais pas Blink2. Si la ligne :
#define Blink2
était ajouté au commencement du programme, alors les deux broches pourraient envoyer des impulsion. La valeur d'une constante définie n'est pas importante et peut être laissé loin de la ligne du #define.
Permettre l'exécution du code si une constante est définie et a une valeur donnée
#define PinsToFlash 2 #ifdef PinsToFlash 1,2,3 PulseOut PORTB.0, 1 sec #endif #ifdef PinsToFlash 2,3 PulseOut PORTB.1, 1 sec #endif #ifdef PinsToFlash 3 PulseOut PORTB.2, 1 sec #endif
Ce programme utilise une constante appelée PinsToFlash qui contrôle combien de lumières clignotent. PORTB.0 clignote quand PinToFlash est égale à 1, 2 ou 3, PORTB.1 cignote quand PinToFlash égale 2 ou 3, et PORTB.2 clignote quand PinsToFlash égale 3.
Permettre le code si un système de variables est défini
#ifdef NoVar(ANSEL) SET ADCON1.PCFG3 OFF SET ADCON1.PCFG2 ON SET ADCON1.PCFG1 ON SET ADCON1.PCFG0 OFF #endif #ifdef Var(ANSEL) ANSEL = 0 #endif
La section de code au dessus a été copiée directement de a-d.h. Il est utilisé pour ne pas permettre la fonction A/D sur les broches, de façon qu'on puisse les utilisés comme ports d'entrée ou de sortie digitale. Si ANSEL n'est pas déclaré comme un système de variables pour une puce en particulier, alors le programme utilise ADCON1 pour contrôler les modes des ports. Si ANSEL est défini, alors la puce est nouvelle et ses ports peuvent être fixés en digital en mettant ANSEL à zéro.
Permettre le code si un système de bits est défini
Similaire à au dessus, excepté avec Bit et NoBit au lieu de Var et NoVar respectivement.
Voir aussi :
definitions
#define