🎯 Objectifs
Concevoir un programme simple en C pour un microcontrôleur Microchip PIC.
Analyser algorithmes, diagrammes, programmation structurée, jeux
d’instructions et modes d’adressage.
Mettre en œuvre le kit de développement Microchip MPLAB + PICDEM2+.
🖥️ Microprocesseurs vs Microcontrôleurs
Microprocesseur Microcontrôleur
Exemples Pentium, AMD, 68000 8051, 68HC11, PIC18, AVR,
ST6
Intégration Processeur seul, nécessite CPU + RAM, ROM,
RAM/ROM externes périphériques sur le même
puce
Coût Plus élevé (composants Faible coût
séparés)
Consommation Plus importante Faible consommation
Application Ordinateurs, serveurs Petits automatismes,
systèmes embarqués
📊 Avantages des microcontrôleurs
« Microcontrôleurs – Avantages »
Faible coût
Reconfigurables (modification du programme)
Fiabilité : processeur, mémoires et périphériques sur la même puce
Faible consommation
Cette illustration montre la densité fonctionnelle d’un microcontrôleur, soulignant pourquoi
il regroupe tant de fonctions sur une petite surface.
📡 Domaines d’emploi
Petits automatismes : systèmes de contrôle simples (ex. BEE).
Traitement numérique du signal (DSP) : audio, télécommunications.
Le schéma illustre les étapes clés où un microcontrôleur ou un DSP intervient dans la
chaîne de traitement audio.
🧮 Numération binaire et logique
Bit : valeur 0 ou 1.
Logique positive : 0 → 0 V, 1 → 5 V.
Logique négative : 1 → 0 V, 0 → 5 V.
Conversion décimale → binaire (exemple)
[ 182_{10}=10110110_{2} ]
Bit 7 6 5 4 3 2 1 0
Valeur 128 64 32 16 8 4 2 1
poids 1 0 1 1 0 1 1 0
Codage ASCII (extrait)
Hex Caractère Déc
0x41 A 65
0x30 0 48
0x20 espace 32
🏛️ Historique des composants
1. 1906 – Tube à vide triode (Lee De Forest).
2. 1940 – Ordinateurs électromécaniques (Z3, Colossus).
3. 1946 – ENIAC (30 t, 5 000 additions / s).
4. 1947 – Invention du transistor (Bardeen, Brattain, Shockley).
5. 1958 – Premier circuit intégré (TI, inverseur à 2 transistors).
6. 1961 – Explosion technologique (inverseur MOS).
7. 1971 – Intel 4004, premier micro‑processeur (4 bits).
Le transistor a permis la miniaturisation qui a conduit aux microcontrôleurs modernes.
📈 Évolution technologique (Loi de Moore)
Loi de Moore : le nombre de transistors sur une puce double tous les 24 mois.
Année Process (nm) Transistors (M)
1999 180 24
2001 130 48
2004 90 135
2008 60 539
Le diagramme met en évidence la progression exponentielle du comptage de transistors.
📚 Mémoire : SRAM, DRAM, SDRAM
Chaque type a des caractéristiques de vitesse, de consommation et de complexité
différentes.
SRAM : rapide, volatile, utilisée pour les caches.
DRAM : plus dense, nécessite rafraîchissement, utilisée comme RAM principale.
SDRAM : synchronisée avec le bus, améliore la bande passante.
🏗️ Architecture von Neumann
Von Neumann : modèle d’ordinateur où mémoire programme & données partagent le
même espace, reliées par un bus et contrôlées par une unité arithmétique‑logique
(UAL).
Le diagramme visualise les flux de données entre les blocs fonctionnels.
📍 Famille PIC18F – Spécifications
Caractéristique PIC18F2XX/4XXX
Fréquence 0 – 40 MHz
Flash 64 KB
RAM 3 KB
EEPROM 1 KB
Interruptions 17 / 18
Ports A, B, C (, D, E)
Timers 4
Communications SPI, UART, CAN, etc.
Boîtier 28‑pin DIP ou 40‑pin DIP
Ces schémas sont indispensables pour le câblage des projets.
🛠️ Registres clés
Registre STATUS (0xFD8)
Bit Nom Signification
7 N Résultat négatif
6 OV Overflow (complément à 2)
2 Z Résultat nul
0 C Retenue (carry)
Registres d’interruption
RCON – bit IPEN (Interrupt Priority ENable).
INTCON – GEIH (global high‑priority), GEIL (global low‑priority).
Priorité : les interruptions hautes sont traitées avant les basses, même si elles
surviennent plus tard.
Ce schéma aide à comprendre le routage des signaux d’interruption.
⏱️ Timers & Modules CCP/PWM
Timer 1 (16 bits)
Champ Fonction
T1CON Contrôle du préscaler (T1CKPS1:0),
source d’horloge, activation (TMR1ON).
TMR1H/L Registres de comptage.
TMR1IF Flag d’overflow (interrupt).
Timer 2 (8 bits)
Champ Fonction
T2CON T2CKPS (prescaler), T2OUTPS
(post‑scaler), activation (TMR2ON).
PR2 Valeur de période (détermine le duty
cycle).
TMR2IF Flag d’overflow.
Capture/Compare/PWM (CCP)
Le bloc CCP génère des signaux PWM en comparant le compteur à la valeur de CCPR1.
Exemple de configuration PWM (C)
#include <p18f452.h>
void init_pwm(void) {
// Configure le timer2 pour une fréquence de 1 kHz
T2CON = 0b00000101; // Prescaler 1:4, post‑scaler 1:1
PR2 = 199; // (Fosc/(4*Presc*Freq))-1
// Configurer le module CCP1 en mode PWM
CCP1CON = 0b00001100; // PWM mode
// Démarrer le timer2
TMR2ON = 1;
}
🔌 Interfaces périphériques
Interface Type Exemple d’usage
UART/USART Série asynchrone Communication
PC‑microcontrôleur
SPI Série synchrone Flash externe, capteurs
I²C Série à 2 fils EEPROM, horloge temps
réel
CAN Bus véhicule Automobiles, systèmes
industriels
ADC Convertisseur A/D Lecture de capteurs
analogiques
PWM Génération de signaux Contrôle moteur, LEDs
modulés
🧩 Chaîne de compilation (C → Hex)
1. Préprocesseur – #include, #define.
2. Compilateur – Convertit le C en code‑objet (.o).
3. Linker – Lie les objets, résout les adresses, produit le .hex.
4. Programmeur – Charge le fichier .hex dans la mémoire flash du PIC.
# Exemple de ligne de commande MPLAB X
xc8-gcc -mcpu=18F452 -O2 -o main.o main.c
xc8-ld -m [Link] -o [Link] main.o
📊 Gestion des interruptions
Principes
1. Détection : le périphérique met son flag d’interruption.
2. Priorité : le contrôleur vérifie GEIH/GEIL.
3. Vecteur : le PC saute à 0x0008 (haute) ou 0x0018 (basse).
4. Service : routine d’interruption (ISR) exécute le traitement, puis clrwdt ou
return.
Ce diagramme résume le traitement d’un événement d’interruption.
Exemple d’ISR (C)
void __interrupt(high_priority) HighISR(void) {
if (TMR1IF) { // Timer1 overflow
TMR1IF = 0; // Clear flag
// ... code de service ...
}
}
📚 Concepts supplémentaires
Binaire codé décimal (BCD) : chaque groupe de 4 bits représente un chiffre
décimal (ex. 0010 0011 = 23).
Complément à 2 : pour obtenir le négatif, on inverse les bits et on ajoute 1.
Masquage : PORT & 0x0F garde les 4 bits de poids faible.
Forçage : PORT |= 0x80 met le bit 7 à 1.
📋 Questions de révision rapides
1. Avantages des microcontrôleurs ? (coût, reconfigurabilité, fiabilité,
consommation).
2. Différence entre SRAM et DRAM ?
3. Comment calcule‑t‑on le duty cycle d’un PWM ?
4. Quel registre active le Timer 2 ? (TMR2ON).
5. Quel vecteur d’interruption est utilisé pour les interruptions haute priorité ?
(0x0008).