Qu'est-ce qu'un PORT ?

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.

📊 Registres principaux (PIC16F877A)

Sur le PIC16F877A, plusieurs registres sont essentiels pour piloter les broches :

RegistreFonctionDescription 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.

🎯 Les ports du PIC16F877A

Le PIC16F877A possède plusieurs groupes de broches d’entrées/sorties :

PortBrochesNotes
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.

⚠️ Attention à PORTA et PORTE

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.

⚙️ Étapes pour configurer un PORT

La configuration d'un port suit toujours la même procédure :

  1. Configurer le mode analogique/numérique — Régler ADCON1 pour que les broches voulues soient en mode numérique. Sinon une LED branchée sur PORTA peut ne pas fonctionner.
  2. Configurer la direction — Utiliser TRISx pour définir chaque broche en entrée (1) ou sortie (0). Exemple : TRISB = 0b00000001; met RB0 en entrée et le reste de PORTB en sortie.
  3. Initialiser l'état — Mettre PORTx = 0 pour démarrer les sorties à l'état bas (0V).
  4. Écrire ou Lire — Utiliser PORTx pour lire une entrée ou piloter une sortie.

💡 Point important

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.

🧪 Exemple simple : LED sur RB0

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

⚠️ Erreurs fréquentes