Pourquoi 12 MHz est devenu l'horloge classique du microcontrôleur 8051
L'héritage 12 MHz : histoire, architecture et réalité moderne
La famille de microcontrôleurs 8051 (Intel MCS-51, 1980) est indissociable d'un quartz 12 MHz. Bien que les variantes modernes tournent à 24, 33, 40, 50, voire 100+ MHz, 12 MHz reste le « modèle mental par défaut » pour la temporisation 8051, le code hérité et l'interfaçage périphérique. Voici pourquoi.
1. Architecture originale : le cycle machine à 12 horloges
Le cœur 8051 classique exécute les instructions en cycles machine de 12 périodes d'oscillateur (Tcy = 12 / fosc). À 12 MHz :
- 1 cycle machine = 1 μs (exactement).
- La plupart instructions 1 octet/2 cycles = 2 μs.
- Incrémentation timer/compteur = 1 μs par tic (mode timer).
- Génération baud rate UART : débordement Timer 1 à 12 MHz avec TH1 = 0xFD (–3) donne 9600 bauds (Mode 2, SMOD=0) avec 0,16 % d'erreur — quasi parfait.
2. Contraintes technologiques des années 1980
- Géométrie de gravure : 3–5 μm NMOS/HMOS. 12 MHz était une fréquence sûre, à haut rendement.
- Vitesse mémoire : Les EPROM externes (2764, 27128) et RAM avaient des temps d'accès de 200–450 ns. Les temporisations de bus externe du 8051 (ALE, PSEN, RD/WR) à 12 MHz offraient des fenêtres d'accès de ~300–400 ns — confortables pour les mémoires disponibles.
- Consommation : Courant dynamique
I ∝ f × V². 12 MHz à 5 V maintenait puissance/chauffe gérables pour boîtiers DIP sans radiateur.
3. Verrouillage de l'écosystème
- Quartz standards : 11,0592 MHz (baud rates exacts) et 12,0000 MHz sont devenus des articles de base, stockés par tous les distributeurs.
- Bibliothèques de code : Boucles de tempo, routines série, algorithmes RTC, drivers LCD étaient tous calibrés pour 12 MHz (ou 11,0592 MHz). Le portage imposait de recalculer chaque constante de temporisation.
- Périphériques : ADC0804, contrôleurs LCD (HD44780), RTC (DS1302), EEPROM étaient caractérisés à ces fréquences.
4. L'alternative 11,0592 MHz
Pour les communications série, 11,0592 MHz (214 × 675) est techniquement supérieur car il donne zéro erreur de baud rate pour tous les débits standards (300–115200) en utilisant Timer 1 ou Timer 2 sur 8052/DS89C4x0. Beaucoup de conceptions « 12 MHz » utilisaient en fait 11,0592 MHz pour cette raison.
5. Variantes 8051 modernes : franchir la barrière des 12 cycles
| Famille / Cœur | Cycles/Instruction | Fréq. max | Perf. @ 12 MHz quartz ext. |
|---|---|---|---|
| 8051 Intel original / 8051 standard | 12 | 12–16 MHz | 1 MIPS (1 μs/cycle) |
| Dallas DS89C4x0 / Silicon Labs C8051Fxxx (cœur 1 cycle) | 1 | 25–100 MHz | 12–100 MIPS (avec PLL) |
| NXP 80C51MX / Infineon XC800 | 2–6 (pipeline) | 24–48 MHz | 6–24 MIPS |
| STC 8051 (1T/6T sélectionnable) | 1 ou 6 | 35 MHz | 12–35 MIPS (mode 1T) |
Crucial : Les cœurs « 1T » (1 cycle) modernes exécutent le même jeu d'instructions mais 12× plus vite à la même fréquence quartz. Les boucles de tempo héritées tourneront 12× plus vite (cassant la temporisation). Le comportement des timers diffère (prédiviseurs ajoutés). Toujours vérifier la datasheet pour la définition du « cycle machine ».
Choisir une fréquence aujourd'hui
- Portage code hérité / baud rates exacts : Utiliser 11,0592 MHz (ou 22,1184 MHz avec cœur 1T).
- Performance maximale : Utiliser la fréquence max supportée avec PLL (ex. quartz 12 MHz → cœur 48/100 MHz).
- Basse consommation / batterie : Fonctionner à la plus basse fréquence satisfaisant le débit (ex. quartz montre 32,768 kHz + PLL, ou oscillateur RC interne 1–4 MHz).
- CEM / EMI : Fréquence plus basse = moins d'émissions rayonnées. PLL à spectre étalé aide.
- Coût : Les quartz 12 MHz restent les moins chers ; 11,0592 MHz légèrement plus. Les oscillateurs RC internes (usine ±1–2 %) éliminent le coût du quartz pour les applis sans UART/temporisation de précision.
