Maîtrisez la configuration des entrées et sorties du PIC
Un PORT est un ensemble de broches (pins) du microcontrôleur qui peuvent être utilisées pour communiquer avec le monde extérieur. Chaque PORT peut être configuré en entrée (INPUT) pour lire un capteur ou un bouton, ou en sortie (OUTPUT) pour contrôler une LED, un relais ou un afficheur.
Sur le PIC16F877A, les broches d’entrées/sorties sont réparties dans plusieurs ports : PORTA, PORTB, PORTC, PORTD et PORTE. La direction des broches se règle avec TRISA, TRISB, TRISC, TRISD, TRISE, et le mode analogique/numérique se configure notamment avec ADCON1.
Sur le PIC16F877A, plusieurs registres sont essentiels pour piloter les broches :
| Registre | Fonction | Description détaillée |
|---|---|---|
| TRISx | Direction | Configure chaque broche en entrée (1) ou sortie (0). Exemple : TRISB pilote la direction de PORTB. |
| PORTx | Lecture / Écriture | Lit l’état des broches et permet d’écrire sur les sorties. Sur PIC16F877A, on écrit directement dans PORTA à PORTE. |
| ADCON1 | Analogique / Numérique |
Configure quelles broches fonctionnent en analogique ou en numérique.
Par défaut, plusieurs broches de PORTA / PORTE sont analogiques :
il faut souvent configurer ADCON1 pour utiliser ces broches comme E/S numériques.
|
Le PIC16F877A possède plusieurs groupes de broches d’entrées/sorties :
| Port | Broches | Notes |
|---|---|---|
| PORTA | RA0 à RA5 | Plusieurs broches sont analogiques par défaut. Très utilisé avec l’ADC. |
| PORTB | RB0 à RB7 | Port très pratique pour boutons, interruptions et E/S numériques. |
| PORTC | RC0 à RC7 | Souvent utilisé pour UART, SPI, I2C, CCP selon le projet. |
| PORTD | RD0 à RD7 | Très pratique pour piloter un afficheur LCD ou plusieurs sorties. |
| PORTE | RE0 à RE2 | Petit port, souvent lié à l’ADC ou à certaines fonctions spéciales. |
Les broches de PORTA et PORTE peuvent être configurées en mode analogique. Si tu veux les utiliser comme sorties numériques (par exemple pour une LED), il faut d’abord régler correctement ADCON1.
La configuration d'un port suit toujours la même procédure :
ADCON1 pour que les broches voulues soient en mode numérique.
Sinon une LED branchée sur PORTA peut ne pas fonctionner.
TRISB = 0b00000001; met RB0 en entrée et le reste de PORTB en sortie.
PORTx = 0 pour démarrer les sorties à l'état bas (0V).
PORTx pour lire une entrée ou piloter une sortie.
Sur le PIC16F877A, les broches analogiques par défaut peuvent bloquer un usage “simple” en numérique.
Pour de nombreux montages de base, on commence souvent par une configuration du type :
ADCON1 = 0x06;
afin de rendre les broches utilisables en numérique.
Voici un exemple classique pour configurer RB0 en sortie et allumer une LED :
Exemple de configuration :
ADCON1 = 0x06; → configuration numérique
TRISB = 0b11111110; → RB0 en sortie, le reste en entrée
PORTB = 0b00000001; → RB0 à 1, LED allumée