Comprendre et manipuler les bits pour contrôler chaque broche
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.
Le préfixe 0b suivi de 8 chiffres (0 ou 1) représente une valeur binaire.
Exemple : 0b00000001
0b00000001 = Seul RA0 est à 1 (actif)
| Code binaire | Hex | Description |
|---|---|---|
| 0b00000000 | 0x00 | Toutes les broches en SORTIE |
| 0b11111111 | 0xFF | Toutes les broches en ENTRÉE |
| 0b00000001 | 0x01 | Bit 0 en entrée, autres en sortie |
| 0b11111110 | 0xFE | Bit 0 en sortie, autres en entrée |
| 0b00001111 | 0x0F | 4 bits bas en entrée, 4 bits hauts en sortie |
// 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
PORTA = 0b00000001; // RA0 = 1 (LED allumée) // ou PORTAbits.RA0 = 1; // Modification d'un seul bit
PORTA = 0b00000000; // RA0 = 0 (LED éteinte) // ou PORTAbits.RA0 = 0; // Modification d'un seul bit
Les opérations bit à bit permettent de modifier une seule broche sans affecter les autres. C'est essentiel dans les projets réels.
// 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
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).
| Binaire | Hex | Décimal | Broches actives |
|---|---|---|---|
| 0b00000000 | 0x00 | 0 | Aucune |
| 0b00000001 | 0x01 | 1 | RA0 |
| 0b00000010 | 0x02 | 2 | RA1 |
| 0b00000100 | 0x04 | 4 | RA2 |
| 0b00001000 | 0x08 | 8 | RA3 |
| 0b11111111 | 0xFF | 255 | Toutes (RA0-RA7) |