Les microcontrôleurs
de la
famille MCS-51
-1-
ISTIA – Année 2007-2008 Bertrand Cottenceau
Sommaire
1 Introduction du cours....................................................................................................................................4
1.1 Introduction............................................................................................................................................4
1.2 Rappels de notions élémentaires de micro-informatique...............................................................5
1.3 Qu’est-ce qu’un microcontrôleur ? .....................................................................................................6
1.3.1 Avantages des systèmes à base de microcontleurs...............................................................6
1.3.2 Inconvénients des systèmes à base de microcontleurs .......................................................6
2 La famille MCS-51 ..........................................................................................................................................7
2.1 Introduction............................................................................................................................................7
2.2 Caractéristiques du noyau MCS51 .....................................................................................................7
2.3 Espacesmoires des microcontrôleurs MCS51 ............................................................................8
2.4 Microcontrôleurs de la famille MCS51 avec mémoire de programme interne..........................9
2.5 Mémoire vive interne (mémoire de données interne), SFR .........................................................10
2.6 Modes d’adressage et jeu d’instructions...........................................................................................12
2.6.1 Registres ........................................................................................................................................12
2.6.2 Adressage Imdiat....................................................................................................................12
2.6.3 Adressage direct ...........................................................................................................................12
2.7 Adressage indirect par registre ...........................................................................................................12
2.8 Lien entre registres R0 à R7 et la RAM interne .............................................................................13
2.9 Différence entre les registres SFR et la partie haute de la RAM interne ...................................13
2.10 La pile pour la famille MCS51 .....................................................................................................13
2.11 Espace dadressage bit .....................................................................................................................14
2.12 Jeu d’instructions de la famille MCS51 ......................................................................................15
2.13 Directives dassemblage ..................................................................................................................19
3 Programmer les microcontrôleurs MCS51 en langage C ......................................................................22
3.1 Le cross compilateur SDCC (Small Device C Compiler).............................................................22
3.2 Variables : types et tailles ....................................................................................................................22
3.2.1 Types standard.............................................................................................................................22
3.2.2 Types liés au noyau 51 (extensions du C) ..............................................................................23
3.3 Les fonctions : paramètres et variables locales................................................................................25
3.4 Assembleur inline.................................................................................................................................25
3.5 Les routines d'interruption ................................................................................................................25
3.6 Le mot clé volatile et les fonctions "naked"....................................................................................26
3.7 Plusieurs fichiers source......................................................................................................................27
3.8 Simulation et génération du fichier .hex (pour programmation des mémoires).....................28
4 Les ports E/S des microcontrôleurs MCS51............................................................................................30
4.1 Structure du Port P1............................................................................................................................30
-2-
4.2 Structure du port P0............................................................................................................................31
5 Les Timers de la famille MCS51 ................................................................................................................32
5.1 Les fonctions des timers MCS51.......................................................................................................32
5.2 Modes de fonctionnement .................................................................................................................32
5.3 Utilisation des timers 0 et 1...............................................................................................................34
5.4 Le timer 2...............................................................................................................................................35
6 Le gestionnaire d’interruptions de la famille MCS51 ............................................................................36
6.1 Mécanisme de gestion des interruptions .........................................................................................36
6.2 Implantation logicielle en cas de gestion d’interruptions pour la famille MCS51.................37
6.3 Autorisation et priorité des interruptions.......................................................................................38
6.4 Sources dinterruption externes.........................................................................................................40
6.5 Sources d’interruption timer..............................................................................................................40
6.6 Programme complet exploitant des interruptions (Famille MCS-51)........................................40
7 Mise en œuvre des microcontrôleurs MCS51..........................................................................................43
7.1 L’oscillateur ...........................................................................................................................................43
7.2 Entrée RST (reset).................................................................................................................................44
7.3 Les entrées-sorties parallèles................................................................................................................44
7.4 Les mémoires externes.........................................................................................................................46
7.4.1 Bus adresses/données dans la famille MCS51.......................................................................47
7.4.2 Mémoire de programme externe..............................................................................................48
7.4.3 Mémoire de données externe....................................................................................................51
7.4.4 Mémoire de programme externe et mémoire de données externe.....................................52
7.5 Périphériques externes.........................................................................................................................53
7.5.1 Périphérique d’entes/sorties programmable : PIO 8255 ..................................................53
8 Annexe A : Familles technologiques..........................................................................................................57
9 Annexe B : Les mémoires et leur représentation .....................................................................................58
10 Annexe C....................................................................................................................................................63
10.1 Bascule D ..........................................................................................................................................63
10.2 Décodeurs..........................................................................................................................................63
-3-
1 Introduction du cours
1.1 Introduction
Les microcontrôleurs sont des circuits ingrés regroupant dans un même boîtier un microprocesseur
(CPU), des périphériques (entrées/sorties TOR, port série, temporisateurs, entrées/sorties analogiques,
I²C, CAN), de la mémoire vive et le plus souvent de la mémoire morte de programme, en d’autres
termes, tous les composants habituellement cessaires à un système programmable.
Ces circuits sont particulièrement bien adaptés à la réalisation de systèmes de commande lorsque
peu d’entrées/sorties sont en jeu et que l’élaboration de la commande ne nécessite pas une grande
puissance de calcul. Dans certains cas, lutilisation d’un système à base de microcontleur offre une
alternative à l’utilisation d’un automate industriel. A titre d’exemple, une entreprise de la région
choletaise conçoit et vend un système complet de commande/supervision de serres à l’usage des
horticulteurs. Le système proposé est modulaire ; chaque module possède un microcontrôleur qui doit
gérer des entrées/sorties (température, hygrométrie, commande des ouvrants, chauffage) et communiquer
avec les autres modules en réseau ModBus.
Le marché du semi-conducteur offre un choix très large de produits. Chaque fabricant ne propose
pas un seul microcontrôleur, mais des familles de microcontrôleurs. On peut citer à titre d’exemple : la
famille MCS51 (8x31,8x51) étudiée dans ce cours, la famille 68HCxxx Motorola (68HC11, 68HC811), la
famille PIC 16Cxx (16C84, 16F84) Microchip. Au sein d’une même famille, les microcontleurs
posdent le même processeur et donc le même langage, seuls les périphériques changent. Ainsi, la
connaissance de la structure matérielle et logicielle d’un produit d’une famille permet une adaptation
rapide à tout microcontrôleur de la me famille.
Les microcontrôleurs du marché se distinguent principalement par la structure de leurs processeurs
(4,8,16 ou 32 bits, CISC1 ou RISC), la taille des espaces mémoires, la nature et la quantité de
péripriques. Certains microcontleurs seront spécialisés dans la gestion d’entrées/sorties TOR,
d’autres auront la possibili de gérer des grandeurs analogiques ou posséderont des ports I²C ou CAN.
Sur le plan logiciel, outre le fait que le jeu d’instructions des microcontrôleurs 8 bits est
généralement restreint (d’autant plus s’il est à structure RISC), on dispose pour certains processeurs
d’environnements de développement ingrés contenant un assembleur, un cross compilateur C et
même parfois un simulateur. Il existe également, notamment pour la famille MCS51, des noyaux temps
el permettant de compenser le manque de puissance de calcul par une meilleure répartition des tâches.
En résumé, lorsqu’on décide developper un nouveau produit à base de microcontrôleur, puisque
l’offre est très vaste, plusieurs paramètres vont orienter notre choix vers un produit plutôt qu’un autre :
- le prix : il y a de très grands écarts de prix entre les produits, liés par exemple à la taille et au
type de mémoire, ainsi qu’à la nature et la quantité de périphériques.
- les périphériques : on peut se demander si toutes les fonctions décrites dans le cahier des
charge seront réalisées par le microcontrôleur ou s’il faudra ajouter des périphériques
externes.
- taille des espaces mémoire : lespace mémoire programme sera-t-il suffisant pour
l’application ?
- consommation : déterminant pour des produits destinés à fonctionner sur batterie
- outils developpement : peut-onvelopper en langage évol? Existe-t-il un
environnement de développement intégré (éditeur, assembleur, compilateur, simulateur
/debugger) ?
- expérience/savoir faire
1 Complex Instruction Set Computer (CISC) en opposition à Reduced Instruction Set Computer (RISC)
-4-
L’objectif de ce cours est de donner un aperçu des fonctionnalités des microcontrôleurs que l’on peut
rencontrer sur le marché en s’intéressant plus particulièrement à la famille MCS51 Intel pour laquelle
nous détaillerons la structure matérielle et logicielle, ainsi que l’exploitation de certains périphériques.
D’autre part, on présentera et expliquera des montages « standards » à base de 8xC31 permettant
d’exploiter des entrées/sorties telles que des boutons poussoirs, des LEDS ou des afficheurs. Enfin, les
principes généraux de dialogue entre un microcontleur et un circuit périphérique seront expliqués et
illustrés au travers de certains montages.
Bien qu’étudiées en particulier pour la famille MCS51, beaucoup de techniques utilisées dans ce
cours sont également réutilisables pour d’autres microcontrôleurs du marché.
1.2 Rappels de notions élémentaires de micro-informatique
Structure d’un système programmable :
L’unité centrale de traitement (CPU) dialogue avec les circuits mémoire pour y lire des instructions,
dialogue avec les circuits mémoire pour y lire ou écrire des données au fil du programme, dialogue avec
les circuits périphériques d’entrée/sortie (e.g. clavier, écran) pour échanger des informations avec un
utilisateur du système.
Un programme est une suite d’instructions (décrites par des mots binaires) stockées en mémoire du
système et exécutables par le processeur. Le processeur lit et exécute séquentiellement les instructions
d’un programme. Parmi les instructions acceptées par un processeur (jeu d’instructions du processeur),
certaines instructions permettent des sauts inconditionnels ou conditionnés par l’état du processeur.
La façon la plus claire de représenter un programme est d’utiliser un organigramme où apparaissent
les opérations élémentaires du processeur ainsi que les sauts conditionnels ou inconditionnels.
On appelle langage machine le code binaire stocké dans la mémoire du système et langage
d’assemblage (parfois abusivement appe « assembleur ») le langage littéral qui utilise des mnémoniques
pour décrire les opérations élémentaires du processeur.
CPU
Processeur
Circuits
Mémoires
Circuits
Interfaces E/S
Début
A ppv 2
A ppv A+3
A<9
Fin
Les ovaleslimitent le début et la fin.
Les rectangles contiennent des actions, ici
l'affectation de 2 à A et l'incment de A..
Le saut conditionnel est décrit par un losange.
oui
non
-5-
1 / 65 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !