Tutoriel XC8 (MPLAB X) : câblage DIP-40 + fuses + code PORTB/TRISB
Faire clignoter une LED connectée sur la broche RB0 du PIC16F877A :
C’est le « Hello World » des microcontrôleurs PIC : idéal pour valider ton programmateur, ta config MPLAB X/XC8
et comprendre la direction des broches (TRISB) et l’écriture sur le port (PORTB).
Composants nécessaires :
Connexions :
💡 Astuce : pour un vrai montage stable, pense aussi à ajouter un condensateur de découplage de 100 nF entre VDD et VSS.
/* * Projet : LED Clignotante sur PIC16F877A (DIP-40) * Auteur : JLQDeveloppement * Microcontrôleur : PIC16F877A * Compilateur : XC8 * Sortie LED : RB0 */ // Configuration des fuses (PIC16F877A) #pragma config FOSC = HS // Oscillateur externe haute vitesse #pragma config WDTE = OFF // Watchdog désactivé #pragma config PWRTE = ON // Power-up Timer activé #pragma config BOREN = ON // Brown-out Reset ON #pragma config LVP = OFF // Low Voltage Programming OFF #pragma config CPD = OFF // Protection EEPROM OFF #pragma config WRT = OFF // Write protection OFF #pragma config CP = OFF // Protection code OFF #include <xc.h> #include <stdint.h> #define _XTAL_FREQ 4000000 // 4 MHz void main(void) { // ÉTAPE 1 : Configurer les broches analogiques en numérique ADCON1 = 0b00000110; // ÉTAPE 2 : RB0 en sortie (0), le reste en entrée (1) TRISB = 0b11111110; // ÉTAPE 3 : État initial du port PORTB = 0b00000000; // Boucle infinie while(1) { PORTBbits.RB0 = 1; // LED ON __delay_ms(1000); PORTBbits.RB0 = 0; // LED OFF __delay_ms(1000); } }
while(1) { PORTBbits.RB0 = !PORTBbits.RB0; __delay_ms(1000); }
// Masque RB0 = 0b00000001 while(1) { PORTB |= 0b00000001; // RB0 = 1 __delay_ms(1000); PORTB &= 0b11111110; // RB0 = 0 __delay_ms(1000); }
while(1) { PORTB ^= 0b00000001; // Toggle RB0 __delay_ms(500); }
FOSC = HS : le PIC ne démarre pas sans oscillateur externe.__delay_ms sera faux.OFF.