Comprendre la notation binaire

En programmation de microcontrôleurs, chaque bit d'un registre correspond à une broche physique. Un registre 8 bits contrôle donc jusqu'à 8 broches. La notation binaire permet de visualiser directement l'état de chaque broche.

💡 Notation binaire en C

Le préfixe 0b suivi de 8 chiffres (0 ou 1) représente une valeur binaire.

Exemple : 0b00000001

  • Chaque position représente un bit, de droite à gauche : bit 0, bit 1, bit 2... bit 7
  • 1 = HIGH (5V) pour PORT / Entrée pour TRIS
  • 0 = LOW (0V) pour PORT / Sortie pour TRIS

📌 Visualisation : Configuration de PORTA

0
RA7
0
RA6
0
RA5
0
RA4
0
RA3
0
RA2
0
RA1
1
RA0

0b00000001 = Seul RA0 est à 1 (actif)

🎓 Configurations courantes pour TRIS

Code binaireHexDescription
0b000000000x00Toutes les broches en SORTIE
0b111111110xFFToutes les broches en ENTRÉE
0b000000010x01Bit 0 en entrée, autres en sortie
0b111111100xFEBit 0 en sortie, autres en entrée
0b000011110x0F4 bits bas en entrée, 4 bits hauts en sortie

💡 Allumer/Éteindre une LED

Configuration initiale (LED sur RA0)

Configuration C
// 1. Désactiver mode analogique
ANSEL = 0b00000000;  // Toutes en mode numérique

// 2. Configurer direction (TRIS)
TRISA = 0b11111110; // RA0 en sortie (0), autres en entrée (1)

// 3. Initialiser état bas
PORTA = 0b00000000; // Toutes les sorties à 0

Allumer la LED

Mettre RA0 à HIGH
PORTA = 0b00000001;  // RA0 = 1 (LED allumée)
// ou
PORTAbits.RA0 = 1;    // Modification d'un seul bit

Éteindre la LED

Mettre RA0 à LOW
PORTA = 0b00000000;  // RA0 = 0 (LED éteinte)
// ou
PORTAbits.RA0 = 0;    // Modification d'un seul bit

🎯 Opérations bit à bit avancées

Les opérations bit à bit permettent de modifier une seule broche sans affecter les autres. C'est essentiel dans les projets réels.

Manipulation précise des bits
// Allumer RA0 sans toucher aux autres bits
PORTA |= 0b00000001;   // OR : met le bit 0 à 1

// Éteindre RA0 sans toucher aux autres bits
PORTA &= 0b11111110;   // AND : met le bit 0 à 0

// Inverser l'état de RA0 (toggle)
PORTA ^= 0b00000001;   // XOR : bascule le bit 0

// Allumer plusieurs LEDs (RA0, RA1, RA2)
PORTA = 0b00000111;    // Les 3 premiers bits à 1

⚠️ Attention

Quand vous écrivez sur tout le registre PORTA, vous modifiez toutes les broches en même temps. Pour modifier une seule broche, utilisez PORTAbits.RAx ou les opérations bit à bit (OR, AND, XOR).

📊 Tableau de correspondance binaire

BinaireHexDécimalBroches actives
0b000000000x000Aucune
0b000000010x011RA0
0b000000100x022RA1
0b000001000x044RA2
0b000010000x088RA3
0b111111110xFF255Toutes (RA0-RA7)