Vous êtes sur la page 1sur 15

Ecole Mohammadia d’Ingénieurs Département Génie Electrique

2ème année GE

Cours de Microprocesseurs et Microcontrôleurs

Mme EL KOUHEN
PLAN :
1èrepartie : Microprocesseurs
Chapitre 1 : Architecture d’un système à microprocesseur

Chapitre 2 : Unité centrale de traitement

Chapitre 3 : Représentation interne des informations

Chapitre 4 : Le microprocesseur 8086 de INTEL

Chapitre 5 : L’interface parallèle programmable 8255 de INTEL

Chapitre 6 : L’interface série programmable 8251 de INTEL

Chapitre 7 : Le contrôleur d’interruptions 8259 de INTEL

2èmepartie : Microcontrôleurs
Chapitre 1 : Introduction

Chapitre 2 : Architecture fonctionnelle du 8051

Chapitre 3 : Brochages du 8051

Chapitre 4 : Oscillateur, horloge et cycle machine

Chapitre 5 : Organisation de la mémoire du 8051

Chapitre 6 : Registres internes du 8051

Chapitre 7 : Modes d’adressage et instructions

Chapitre 8: Ports E/S

Chapitre 9 : Timers

Chapitre 10 : Interface de communication série

Chapitre 11 : Interruptions

Chapitre 12 : Microcontrôleur DS-80C390


1èrepartie : Microprocesseurs

Chapitre 1

Architecture d’un système à microprocesseur

1) Introduction :
Lorsqu’un système logique est conçu à partir d’un microprocesseur, il est appelé système à
microprocesseur. La conception et la réalisation d’un tel système comprennent 2 parties bien
distinctes :

1.1 L’étude du matériel (voir figure 1.1 )


- Le microprocesseur (P) proprement dit.
- La mémoire RAM qui contiendra les données et les résultats définitifs ou provisoires ainsi
que le programme à mettre au point.
- La mémoire ROM(ou EEPROM ou Flash) qui contiendra le moniteur (programme
permettant à l’utilisateur de dialoguer avec le système à P par l’intermédiaire d’une
console de visualisation par exemple); le programme utilisateur mis au point pendant la
phase d’exploitation.
- Les circuits d’interface permettant de communiquer avec l’extérieur (périphériques)
 Interface parallèle programmable : C.I permettant de connecter le P aux circuits
électroniques à commander et faisant partie du système logique (échange de données
de type //).

 Interface série programmable : C.I permettant un échange de données entre un P et


un terminal à travers une ligne téléphonique, donc à grandes distances.

- Contrôleurs d’accès direct à la mémoire.


- Composants gestionnaires d’interruptions.

1.2 L’étude du logiciel

Ensemble des programmes nécessaires au bon fonctionnement du système à P.

Remarque : Alors qu’un ordinateur est surtout destiné à commander des périphériques
informatiques, un système à P est destiné à commander des circuits électroniques qui sont la
partie industrielle du système à P. Nous citerons parmi ces circuits électroniques : roue
codeuse, afficheur 7 segments, voyant, bouton poussoir, relais, électrovanne, C.A.N, C.N.A,
clavier, etc…
2) Types d’architecture des systèmes à P :

2.1 Architecture standard :

C’est celle de la figure 1.1. Elle est souple aux extensions du système industriel et utilise des
P d’usage universel.

2.2 Architecture du type microsystème :

Elle convient aux applications industrielles simples et de grandes séries (téléphone portable,
télévision, appareils électroménagers, appareil photo, airbag, appareil de mesure
électronique...).

2.3 Architecture du type E/S réparties :


Chapitre 2

UNITE CENTRALE de TRAITEMENT (CPU)

Rôle: Interprète et exécute les instructions de programme


Composition: Unité de commande et Unité de traitement ou d’exécution

1) Unité de commande

Rôle:
Elle gère le déroulement du programme et fait le séquencement des opérations: elle amène les
instructions à partir de la mémoire centrale, analyse chaque instruction, charge les données
nécessaires à son exécution dans les registres et envoie à l’UAL les signaux correspondant à
l’opération désirée.

Composition:
- Compteur ordinal (CO):registre contenant l’adresse de la prochaine instruction à exécuter
- Registre d’instruction (RI):reçoit le code machine de l’instruction en cours d’exécution
-Décodeur: détermine le type d’opération
-Séquenceur: automate cablé ou microprogrammé générant les signaux de commandes
nécessaires pour actionner et contrôler les unités participant à l’exécution d’une
instruction donnée
- Horloge: émet des impulsions synchronisant les actions du CPU

2) Unité de traitement

Composition:

- UAL: Unité Arithmétique et Logique


- FPU (Floating Point Unit): unité de traitement des réels
- Unité multimédia: traitement image et son
- Registres du CPU :

 Registres généraux: sauvegarde des résultats intermédiaires ou définitifs


→ accélère l’exécution d’un programme
 Registres d’index: pointeurs de table de données
→ souplesse de la programmation
 Registre d’état: contient des indicateurs (zéro,carry, overflow…)
 Pointeur de pile: pointe une zone mémoire vive appelée pile

La Pile(type LIFO) sert à la sauvegarde : - du compteur ordinal lors des appels de sous-
programmes et interruptions
- de registres internes par instruction
3) Niveaux de programmation

- Langages évolués (C)


- Assembleur
- Instuctions machine
- Micro-instructions
- Commandes électroniques

L’assembleur

La programmation en assembleur est utilisée par des spécialistes, généralement dans trois
buts :

- efficacité du programme résultant : code beaucoup plus compact et s’exécutant beaucoup


plus vite que du code en langage de haut niveau. Or la rapidité est un facteur critique
pour un grand nombre d’applications telles que, pilotes de périphériques, cartes à puces,
téléphones portables, routines BIOS ou les boucles les plus internes d’une application
- optimisation : pour tirer parti de l’architecture de la machine (accès à toutes les ressources
de la machine)
- diagnostic d’erreurs (software et hardware) : on est obligé, pour certaines erreurs subtiles,
d’examiner le contenu de la mémoire et donc de reconstruire pas à pas l’évolution du
programme et ses effets sur le contenu des différents registres.

L’assembleur présente d’autres avantages, parmi lesquels nous citerons :

- possibilité d’assigner des noms à des positions mémoire ou à des dispositifs d’E/S
- indiquer au programme chargeur où loger en mémoire le programme et les données
- réservation de zones en mémoire (pile)
- la plupart des applications des P impliquent des échanges d’informations, données et
commandes avec des dispositifs périphériques, en entrée et en sortie. Souvent, les
informations de commande et d’états se traduiront par quelques digits binaires dont la
signification est étroitement liée au matériel.

Toutefois, l’assembleur présente deux inconvénients qui sont :

- la connaissance détaillée des particularités du P que l’on emploie


- langage non portable : chaque P possède son propre assembleur qui reflète son
architecture

Ainsi, généralement, les applications pour langage assembleur auront comme


caractéristiques :

- petits à moyens programmes


- commande en temps réel
- beaucoup d’E/S et peu de calcul
- traitement limité de données
4) Structure des instructions niveau machine
Une instruction niveau machine contient:
- un code opération qui spécifie le type d’opération
- et éventuellement un (ou plus) champ supplémentaire: adresse d’une opérande ou
opérande

5) Phases de déroulement d’une instruction


• L’exécution d’une instruction peut nécessiter un ou plusieurs cycles machine
• Un cycle machine est composé d’une phase recherche et d’une phase exécution
• Phase recherche:
lecture du CO et incrémentation du CO
décodage instruction
• Phase exécution: exécution instruction
• Chaque phase dure un certain nb de périodes d’horloge

6) Jeu d’instruction
• Ensemble d’instructions spécifique à un processeur donné
• Types d’instructions:
arithmétiques
logiques
transfert de données
décalage et rotation
branchements et appel sous-programme ……
Chapitre 3

Représentation interne des informations

Les informations traitées par un ordinateur sont de différentes natures (nombres, caractères
alphanumériques, instructions, images, sons) mais elles sont toujours représentées, à la base,
sous forme binaire. On classe ces informations en 2 types : les instructions et les données
(numériques et non numériques).

1) Numération

Pour définir une numération, on choisit une base B et on représente un nombre A par
l’assemblage d’un certain nombre (n) de caractères : xn-1 , xn-2 , …, x0 pris parmi les nombres
entiers compris entre 0 et B-1
(A)B = xn-1 xn-2 … x0

La valeur numérique de A dans le système décimal est :


A = (A)10 = xn-1 Bn-1 + xn-2 Bn-2 +…+x1 B1 + x0

Remarques :
- La base B, dans son propre système, s’écrit toujours 10.
- Dans la base B, avec n caractères, on peut représenter Bn nombres différents, autrement
dit, on peut compter de 0 à Bn-1.

Pour écrire un nombre décimal A dans un système de base B donnée, on procède comme suit :
on divise le nombre décimal par B puis le quotient obtenu par B jusqu’à ce que le quotient
devienne nul. Les restes successifs, lus de bas en haut, représentent le nombre A dans la base
B.

2) Représentation des données numériques

2.1 Nombres entiers positifs

2.1.1 Code binaire naturel

- B=2 alors 2 caractères (digits) : 0 et 1


- Elément le plus simple à mettre en œuvre car tout élément physique à 2 états stables
(diode passante ou bloquée, transistor saturé ou bloqué) pourra être utilisé pour
représenter une information binaire.
- Meilleur rapport prix/quantité d’informations sur une réalisation donnée.
- Simplicité des tables d’addition et de multiplication
x y Produit Somme Retenue

0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 1 0 1
- Conversions :
Binaire  Décimal :
exemple: (1011)2 = 1.23 + 0.22 + 1.21 + 1.20 = 8+0+2+1= 11

Décimal  Binaire : on divise le nombre décimal par 2 puis le quotient obtenu par 2 jusqu’à
ce que le quotient devienne nul. Les restes successifs, lus de bas en haut, représentent le
nombre dans la base 2.

Exemple : 14 2
0 7 2 (14 )10 = (1110)2
1 3 2
1 1 2
1 0

Pour les nombres élevés, la notation binaire naturel est lourde et l’on préfère utiliser le code
octal ou hexadécimal.

2.1.2 Code octal

B=8 = 23 donc 8 caractères : 0,1,2,3,4,…,7

- Conversions :
Binaire  Octal : on groupe les chiffres binaires par 3 et on convertit séparément
exemple: (10 / 010 / 000 / 011 / 001)2 =
(2 2 0 3 1)8

Octal  Binaire : chaque caractère octal est converti en binaire sur 3 bits
exemple: (5 2 4)8 =
(101/ 010/ 100)2

2.1.3 Code hexadécimal

B=16= 24 donc 16 caractères : 0,1,2,3,4,…,9,A,B,C,D,E,F

- Conversions :
Binaire  Hexadécimal : on groupe les chiffres binaires par 4 et on convertit séparément
exemple: (010 / 010 0/ 1101)2 =
(2 4 D)16

Hexadécimal  Binaire : chaque caractère hexadécimal est converti en binaire sur 4 bits

exemple: (1 F C)16 =
(1 / 1111/ 1100)2

2.2 Nombres algébriques

2.2.1 Représentation par valeur absolue et signe


Un nombre algébrique peut être représenté par sa valeur absolue codée en binaire naturel à
laquelle on ajoute un bit pour représenter le signe. Par convention, le bit de signe (bit de plus
fort poids) vaut 0 pour un nombre positif et 1 pour un nombre négatif.
Exemple : (3)10 = (0 011)2 et (-3)10 = (1 011)2
L’inconvénient de cette représentation est la double représentation du 0 : (0000)2 et (1000)2.

2.2.2 Représentation par le complément à 1


Pour les nombres positifs, la représentation est identique à la précédente. Pour les nombres
négatifs, on prend le codage correspondant au même nombre positif et on complémente tous
les bits.
Remarque : La convention du bit de signe est toujours valable.
Exemple : (-3)10 = (1100)2
L’inconvénient de la double représentation du 0 est encore présent :
0 s’écrit : (0000)2 et (1111)2

2.2.3 Représentation par le complément à 2 (complément vrai)


C’est la représentation utilisée dans la majorité des calculateurs. Pour les nombres positifs, la
représentation est identique à la précédente. Pour les nombres négatifs, on prend le codage
correspondant au même nombre positif, on complémente tous les bits et on ajoute 1. Ainsi, on
a une représentation unique du 0 qui est (0000) 2.
Exemple sur 3 bits
Décimal Binaire
0 000
1 001
2 010
3 011
-4 100
-3 101
-2 110
-1 111

De manière générale, avec n bits on peut représenter des nombres positifs de 0 à (2 n-1-1) et des
nombres négatifs de –1 à –2n-1.

–2n-1   (2n-1-1)
1 0000…00000 01111 …….111
1

Par exemple, sur 16 bits, on peut représenter les nombres compris entre –32768 et 32767.

2.3 Nombres fractionnaires


Les nombres fractionnaires comportent une partie inférieure à 1. Les changements de base se
font de manière suivante :
Binaire  Décimal : exemple (0,001)2 = 0. 2-1 + 0. 2-2 + 1. 2-3 = (0,125)10

Décimal  Binaire : on fait des multiplications successives par 2 de la partie inférieure


à 1. On s’arrête lorsque la partie fractionnaire devient nulle.
Exemple : (0,125)10
0,125 x 2 = 0,25 = 0 + 0,25
0,25 x 2 = 0,5 = 0 + 0,5  (0,125)10 = (0,001)2
0,5 x 2 = 1 = 1 + 0,0
Le nombre binaire cherché s’obtient en lisant les parties entières, de la 1 ère vers la dernière
obtenue.
2.3.1 Représentation en virgule fixe
Les ordinateurs n’ont pas de virgule au niveau de la machine. La virgule est donc virtuelle et
elle est gérée par le programmeur qui peut supposer la virgule placée à un endroit quelconque
du mot.
Exemple sur 7 bits : 0 1 1 0 , 0 1 0 soit (+6,25)10
23 22 21 20 2-1 2-2 2-3

Le programmeur doit faire face à deux problèmes :


- conserver le maximum de chiffres significatifs après un traitement
- effectuer des tests de débordement de capacité.

2.3.2 Représentation en virgule flottante


Le principe consiste à séparer, en 2 termes différents, l’ordre de grandeur et les chiffres
significatifs d’un nombre N : représentation par mantisse et exposant
N= M . 2E (dans le système binaire) avec,
M : la mantisse est un nombre purement fractionnaire, de la forme signe et valeur absolue.
Elle est normalisée afin d’avoir une seule représentation pour un même nombre (chiffre 0
avant la virgule et chiffre 1 après la virgule) d’où 0,5 < |M| < 1

E : L’exposant est sans signe mais décalé (biaisé).


Exposant décalé = Exposant réel + Décalage.
Si p chiffres sont alloués à l’exposant, le décalage vaut 2 p-1. Notons que la représentation
décalée est identique à celle en complément à 2, seul le bit de signe est différent.

Remarque : L’exposant détermine l’intervalle des nombres représentables dans la machine et


la taille de la mantisse donne la précision de ces nombres.

Exemple : On dispose d’une machine où les valeurs numériques réelles sont représentées sur
16 bits, avec:
- un bit (SM) pour le signe de la mantisse
- un exposant (E) biaisé sur 7 bits SM E M
- une mantisse (M) sur 8 bits

La représentation sur cette machine du nombre décimal 13,875 est : 0 1000100 11011110

En effet, (13)10 = (1101)2 et (0,875)10 = (0,111)2 d’où (13,875)10 = (1101,111)2 dont la


représentation par mantisse et exposant est (0,1101111)2 . 24 d’où
M = 0,1101111 et Exposant réel = 4 comme le décalage vaut 2 7-1 = 64 alors
Exposant décalé = 4 +64 = 68 = (1000100)2
SM = 0 car la mantisse est positive.

Format Standard IEEE 754 :


Simple précision sur 32 bits (SM :1 bit ; E :8 bits ; M :23 bits)
Double précision sur 64 bits (SM :1 bit ; E :11bits ; M :52 bits)
Précision étendue sur 80 bits (SM :1 bit ; E :15bits ; M :64 bits)
Opérations arithmétiques :
Multiplication : addition des exposants puis produit des mantisses puis normalisation
Division : soustraction des exposants puis division des mantisses puis normalisation
Addition : ramener les exposants à la même valeur (celle du plus grand) puis addition
des mantisses puis normalisation
2.4 Nombres décimaux
Dans les ordinateurs à applications commerciales, on évite la conversion binaire et on fait les
opérations directement sur les représentations décimales des nombres.

2.4.1 Code BCD (Binary Coded Decimal)


Chaque chiffre décimal est codé par son équivalent binaire sur 4 bits.
Exemple : 942 est codé 1001 0100 0010

L’intérêt de ce code est de faciliter les opérations d’entrées/sorties puisque chaque entité BCD
est associée à un caractère. Ce code est donc très utilisé dans les ordinateurs orientés gestion
(peu de calcul et beaucoup d’entrées/sorties) et dans les appareils de mesures numériques pour
lesquels il facilite l’affichage du résultat sur des afficheurs à un chiffre comme les 7 segments
par exemple. Par contre, ce code complique les opérations arithmétiques. Dans le cas de
l’addition, par exemple, on doit ajouter 6 si le résultat est supérieur à 9, afin d’obtenir un
résultat correct.

Exemple 1 : 2+5 =7 en BCD 0010


0101
0111

Exemple 2 : 4+7 =11 en BCD 0100


0111
1011 résultat faux
0110
1 0001 résultat correct

2.4.2 Code Excess 3


C’est un code non pondéré qui est utilisé par certaines machines. Chaque chiffre décimal est
codé par son équivalent binaire sur 4 bits augmenté de 3.

0 est codé 0011


1 est codé 0100 Ce codage symétrise les circuits d’addition :
on retranche 3 s’il n’y a pas de retenue sinon on ajoute 3.
9 est codé 1100

2.4.3 Code 2 parmi 5

Décimal Code 2 parmi 5

01236 Code dit 01236, il existe également le code 01247


0 01100 et le code 01248
1 11000
2 10100
3 10010
4 01010
5 00110
6 10001
7 01001
8 00101
9 00011
Ce code est également non pondéré et utilise 5 bits pour coder chaque chiffre décimal. Parmi
ces 5 bits, 2 sont mis à ‘’1’’. Ce code est intéressant dans les transmissions car il permet une
vérification facile de la validité de l’information. Son inconvénient est d’augmenter le nombre
de circuits puisque les mots sont plus longs.

3) Représentation des données non numériques


Les données non numériques correspondent aux caractères alphanumériques (A, B,….Z, a,
b,….z, 1, 2,…9) et aux caractères spéciaux (+, -, x, /, ?, $,…).
Les codes utilisés sont assez nombreux. Ils associent tous des lettres, des chiffres et des
symboles. Le codage est réalisé par une table de correspondance propre à chaque code utilisé.
Parmi les codes les plus connus, on citera :

3.1 Code ASCII (American Standard Code for Information Interchange)


C’est l’un des codes les plus utilisés en informatique.
- Le code ASCII Standard permet la mise en œuvre de 128 caractères, chaque caractère est
codé sur 7 bits (code de A : 41 hexa)
- Le code ASCII étendu utilise 8 bits par caractère permettant ainsi d’ajouter certains
caractères (graphiques, lettres arabes …).

3.2 Code ANSI (American National Standard Institute) (8 bits)


Les logiciels sous Windows de Microsoft utilisent la norme ANSI qui reprend en grande
partie le code ASCII et propose des extensions différentes selon le code de page retenu. Ce
dernier est choisi lors de la configuration du système et permet de définir le jeu de caractères
(anglais USA, slave, norvégien …).

3.3 Code EBCDIC (Extended Binary Coded Decimal Interchange Code) (8 bits)
Ce code est utilisé essentiellement par IBM (code de A : C1 hexa).

3.4 Code Unicode (Universal Code) (16 bits)


Ce code universel est basé sur les pages ASCII en ce qui concerne les premiers caractères. La
version Unicode 3.0 recence 49194 symboles et caractères différents, couvrant la majeure
partie des principaux langages écrits.

Code ASCII standard


Code ANSI ( 2 Pages de codes )

Code Unicode (une partie)

Vous aimerez peut-être aussi