Votre premier programme PIC : faire clignoter une LED sur RA0
Faire clignoter une LED connectée sur la broche RA0 du PIC16F683 :
C'est le « Hello World » de la programmation embarquée. Ce projet simple vous permet de vérifier que votre chaîne d'outils fonctionne correctement et de comprendre les bases de la configuration du PIC.
Composants nécessaires :
Connexions :
/* * Projet : LED Clignotante sur PIC16F683 * Auteur : JLQDeveloppement * Microcontrôleur : PIC16F683 * Compilateur : XC8 */ // Configuration des fuses #pragma config FOSC = INTOSCIO // Oscillateur interne #pragma config WDTE = OFF // Watchdog désactivé #pragma config PWRTE = ON // Power-up Timer activé #pragma config MCLRE = ON // MCLR activé #pragma config CP = OFF // Protection code OFF #pragma config CPD = OFF // Protection données OFF #pragma config BOREN = ON // Brown-out Reset ON #pragma config IESO = ON // Switchover activé #pragma config FCMEN = ON // Fail-Safe Clock ON #include <xc.h> #include <stdint.h> #define _XTAL_FREQ 4000000 // 4 MHz void main(void) { // ÉTAPE 1 : Oscillateur interne 4 MHz OSCCON = 0b01100000; // ÉTAPE 2 : Toutes les broches en numérique ANSEL = 0b00000000; // ÉTAPE 3 : RA0 en sortie, autres en entrée TRISA = 0b11111110; TRISC = 0b11111111; // ÉTAPE 4 : Tout à 0 PORTA = 0b00000000; PORTC = 0b00000000; // Boucle infinie while(1) { PORTA = 0b00000001; // LED ON __delay_ms(1000); PORTA = 0b00000000; // LED OFF __delay_ms(1000); } return; }
while(1) { PORTAbits.RA0 = 1; // Allumer LED __delay_ms(1000); PORTAbits.RA0 = 0; // Éteindre LED __delay_ms(1000); }
while(1) { PORTA |= 0b00000001; // ON avec OR __delay_ms(1000); PORTA &= 0b11111110; // OFF avec AND __delay_ms(1000); }
while(1) { PORTA ^= 0b00000001; // Bascule RA0 __delay_ms(1000); }
TRISA = 0b11110000; // RA0-RA3 en sortie while(1) { PORTA = 0b00000001; __delay_ms(200); PORTA = 0b00000010; __delay_ms(200); PORTA = 0b00000100; __delay_ms(200); PORTA = 0b00001000; __delay_ms(200); }