Vous êtes sur la page 1sur 134

Tþþþþþþyb`K˜ TþþþyV rqm§d˜ Tþþþ§rþþþ¶ z˜ Tþþ§Cwþþhm˜

République Algérienne Démocratique et Populaire


UBBA

¨mþþþþþþþþþl`˜ þþþþþþþþb˜ ¤ ¨˜Aþþþþþþþ`þ˜ œyþþþþþþl`t˜ ­C E¤


Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

§r§rˆw r - ¨my¡ r³ ryKb˜ dm› T`›A


Université Mohamed El-Bachir El-Ibrahimi - Bordj Bou Arreridj

Ayw˜wnkt˜ ¤ wl`˜ Tyl•


Faculté des Sciences et de la Technologie

–yž¤rtk˜³ œs’
Département d’Électronique

Matière:1/UEF 3.1.1/L3-ÉLECTRONIQUE

COURS DE SYSTÈMES À MICROPROCESSEURS

Dr. Abdelhakim LATOUI

E-mail : a.latoui@univ-bba.dz
2019
UBBA-2019
COURS DE SYSTÈMES À MICROPROCESSEURS
UEF 3.1.1/Matière : 1/L3-Électronique

Dr. Abdelhakim LATOUI

◆©UBBA◆2019◆
AVANT-PROPOS

L’objectif de ce cours est de présenter les notions de base nécessaires à la compréhen-


sion des systèmes utilisant des microprocesseurs 8 bits ainsi qu’à leur programmation en
langage Assembleur. Il peut servir de support de cours de Systèmes à Microproces-
seurs, pour les étudiants de la 3eme année Licence Electronique, et de préambule au
cours Conception des systèmes à Microprocesseurs du Master 1, pour le parcours
Systèmes Embarqués.
Ce document est structuré en cinq chapitres qui couvrent le programme officiel de la
matière Systèmes à Microprocesseurs. Le premier chapitre rappelle les concepts
de base des registres à décalage et leurs intérêts dans la fonction de mémorisation de
données et ensuite expose des principaux concepts des mémoires à semi-conducteurs.
Le deuxième chapitre, quant à lui, donne un bref aperçu sur l’évolution des ordinateurs.
Le troisième chapitre est consacré à une étude détaillée d’un microprocesseur 8 bits, à
savoir le 8085 de Intel. Les interfaces d’entrées/sorties font l’objet du quatrième chapitre
de ce document. Enfin, le dernier chapitre est réservé à la présentation des notions de
base des interruptions et leur intérêt dans les systèmes à microprocesseurs.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


TABLE DES MATIÈRES

AVANT-PROPOS II

1 LES MÉMOIRES À SEMI-CONDUCTEURS 1


1.1 Rappels sur les registres à décalalge . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Registre à décalage de type entrée série/sortie série (SISO) . . . 2
1.1.2 Registre à décalage de type entrée série/sorties parallèles (SIPO) 3
1.1.3 Registre à décalage de type entrées parallèles/sortie série (PISO) 5
1.1.4 Registre à décalage de type entrées parallèles/sorties parallèles
(PIPO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5 Registre à décalage bidirectionnel . . . . . . . . . . . . . . . . . 8
1.1.6 Registre à décalage bidirectionnel universel de quatre Bits 74HC194 9
1.1.7 Applications des registres à décalage . . . . . . . . . . . . . . . 10
1.1.7.1 Compteur à registres à décalage . . . . . . . . . . . . . 10
1.1.7.2 Compteur en anneau . . . . . . . . . . . . . . . . . . 11
1.1.7.3 Retard numérique . . . . . . . . . . . . . . . . . . . . 11
1.1.7.4 Émetteur-récepteur asynchrone universel (UART) . . 11
1.2 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Unité de données binaires . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Capacité mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Types d’accès aux mémoires . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Adresse mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7 Opérations de base dans une mémoire . . . . . . . . . . . . . . . . . . . 15

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


VI TABLE DES MATIÈRES

1.7.1 Opération d’écriture . . . . . . . . . . . . . . . . . . . . . . . . 15


1.7.2 Opération de lecture . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8 Différentes technologies des mémoires . . . . . . . . . . . . . . . . . . 17
1.9 Différents types de mémoires à semi-conducteurs . . . . . . . . . . . . . 17
1.9.1 Mémoires vives (RAM) . . . . . . . . . . . . . . . . . . . . . . . 18
1.9.2 Mémoires mortes (ROM) . . . . . . . . . . . . . . . . . . . . . . 19
1.10 Caractéristiques d’une mémoire . . . . . . . . . . . . . . . . . . . . . . 19
1.11 Organisation interne de la mémoire . . . . . . . . . . . . . . . . . . . . 20
1.11.1 Point mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.11.2 Multiplexage d’adresses (Mémoire DRAM) . . . . . . . . . . . 24
1.11.3 Cycles de lecture et d’écriture (Mémoire DDRAM) . . . . . . . 25
1.11.4 Temps d’accès (Mémoire ROM) . . . . . . . . . . . . . . . . . . 25
1.12 Extension de mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.12.1 Extension de la longueur de mot . . . . . . . . . . . . . . . . . . 25
1.12.2 Extension de capacité de mots . . . . . . . . . . . . . . . . . . . 27

2 HISTORIQUE ET ÉVOLUTION DES ORDINATEURS 29


2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3 Structure générale d’un ordinateur . . . . . . . . . . . . . . . . . . . . 30
2.3.1 L’unité centrale de traitement . . . . . . . . . . . . . . . . . . . 32
2.3.1.1 L’unité arithmétique et logique (UAL) . . . . . . . . . 32
2.3.1.2 Les registres . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.1.3 L’unité de commande . . . . . . . . . . . . . . . . . . 33
2.3.2 La Mémoire centrale . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.3 Le bus de communication . . . . . . . . . . . . . . . . . . . . . 36
2.3.4 L’unité d’échange . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.5 Les périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4 Un Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.5 Une Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6 Le langage machine et le langage d’assemblage . . . . . . . . . . . . . . 38
2.6.1 Le langage d’assemblage . . . . . . . . . . . . . . . . . . . . . . 38
2.6.2 Format d’une instruction en langage d’assemblage . . . . . . . 39
2.6.3 Cycle d’exécution d’une instruction . . . . . . . . . . . . . . . . 40

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


TABLE DES MATIÈRES VII

3 ÉTUDE D’UN MICROPROCESSEUR 8 BITS 41


3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2 Étude détaillé du microprocesseur INTEL 8085 . . . . . . . . . . . . . 42
3.2.1 Brochage et signaux . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2.2 Architecture interne . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.3 Les registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.3.1 Les registres généraux . . . . . . . . . . . . . . . . . . 49
3.2.3.2 L’Accumulateur (ACC ou encore Registre A) . . . . . 50
3.2.3.3 Compteur de programme (PC) . . . . . . . . . . . . . 50
3.2.3.4 Pointeur de pile (SP) . . . . . . . . . . . . . . . . . . 50
3.2.3.5 Registre d’instruction (IR) . . . . . . . . . . . . . . . . 51
3.2.3.6 L’incrémenteur/décrémenteur de verrou d’adresses . . 52
3.2.3.7 Registres tampons adresses/données . . . . . . . . . . 52
3.2.3.8 Registre d’état (Flags) . . . . . . . . . . . . . . . . . . 52
3.2.4 L’unité de commande . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.5 L’unité arithmétique et logique (UAL) . . . . . . . . . . . . . . 53
3.2.6 L’unité d’interruption . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.7 Unité d’Entrée/Sorite . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.8 Format d’une instruction . . . . . . . . . . . . . . . . . . . . . . 55
3.2.9 Taille des instructions . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.9.1 Codage d’instruction sur un octet . . . . . . . . . . . 55
3.2.9.2 Codage d’instruction sur deux octets . . . . . . . . . . 55
3.2.9.3 Codage d’instruction sur trois octets . . . . . . . . . . 56
3.2.10 Mode d’adressage . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.10.1 Adressage direct . . . . . . . . . . . . . . . . . . . . . 57
3.2.10.2 Adressage registre . . . . . . . . . . . . . . . . . . . . 57
3.2.10.3 Adressage indirect à registre . . . . . . . . . . . . . . . 57
3.2.10.4 Adressage immédiat . . . . . . . . . . . . . . . . . . . 58
3.2.10.5 Adressage implicite . . . . . . . . . . . . . . . . . . . . 58
3.3 Jeu d’instruction du 8085 . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3.1 Instructions de transfert des données . . . . . . . . . . . . . . . 59
3.3.2 Instructions arithmétiques . . . . . . . . . . . . . . . . . . . . . 62
3.3.3 Instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.4 Instructions de branchements . . . . . . . . . . . . . . . . . . . 69
3.3.4.1 Branchement inconditionnel . . . . . . . . . . . . . . . 69

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


VIII TABLE DES MATIÈRES

3.3.4.2 Branchement conditionnel : . . . . . . . . . . . . . . . 71


3.3.5 Instructions de gestion de la pile et des entrées/sorties . . . . . 73
3.3.5.1 Instructions de gestion de la pile . . . . . . . . . . . . 73
3.3.5.2 Instructions de gestion des entrées/sorties . . . . . . . 74
3.3.6 Exemple de programmation en assembleur 8085 . . . . . . . . . 78
3.3.7 Annexe : Jeu d’instruction 8085 . . . . . . . . . . . . . . . . . . 80

4 LES INTERFACES D’ENTRÉES/SORTIES 85


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2 Adressage des ports d’E/S . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.3 L’Interface parallèle programmable 8255A . . . . . . . . . . . . . . . . 86
4.3.1 Modes de fonctionnement du PPI 8255A . . . . . . . . . . . . . 89
4.3.1.1 Fonctionnement en Mode 0 : . . . . . . . . . . . . . . 90
4.3.1.2 Fonctionnement en Mode 1 . . . . . . . . . . . . . . . 92
4.3.1.3 Fonctionnement en Mode 2 : . . . . . . . . . . . . . . 97
4.3.2 Registre d’état du 8255A . . . . . . . . . . . . . . . . . . . . . 98
4.3.3 Exemple de programmation du 8255A . . . . . . . . . . . . . . 99
4.4 Interface série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.5 L’interface série 8251A . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.5.1 Sélection des registres du 8251A . . . . . . . . . . . . . . . . . . 101
4.5.2 Registres de configuration . . . . . . . . . . . . . . . . . . . . . 102
4.5.2.1 Registre de mode . . . . . . . . . . . . . . . . . . . . . 102
4.5.2.2 Registre de contrôle . . . . . . . . . . . . . . . . . . . 102
4.5.3 Registre d’état (Status) . . . . . . . . . . . . . . . . . . . . . . 104
4.5.4 Exemple de programmation du 8251A . . . . . . . . . . . . . . 105
4.6 Le Timer d’intervalle programmable 8253/8254 . . . . . . . . . . . . . 107
4.6.1 Programmation du 8253 . . . . . . . . . . . . . . . . . . . . . . 108
4.6.2 Modes de fonctionnement du PIT 8253/54 . . . . . . . . . . . . 109
4.6.3 Exemple de programmation du 8253 . . . . . . . . . . . . . . . 109
4.7 Contrôleur programmable d’interruptions 8259 . . . . . . . . . . . . . 110

5 LES INTERRUPTIONS 113


5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.2 Modes d’échanges de données . . . . . . . . . . . . . . . . . . . . . . . 113
5.2.1 Le mode d’échange par Scrutation . . . . . . . . . . . . . . . . . 114

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


TABLE DES MATIÈRES IX

5.2.2 Mode d’échange par Accès direct à la mémoire . . . . . . . . . 114


5.2.3 Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.2.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.2.3.2 Types d’interruptions . . . . . . . . . . . . . . . . . . 116
5.2.3.3 Masquage et démasquage des interruptions . . . . . . . 116
5.2.3.4 Reconnaissance des interruptions . . . . . . . . . . . . 117
5.3 Processus de traitement d’une interruption . . . . . . . . . . . . . . . 118
5.4 Exemple de programmation de sous-programme d’interruption . . . . . 119

BIBLIOGRAPHIE 121

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


CHAPITRE 1

LES MÉMOIRES À
SEMI-CONDUCTEURS

1.1 R APPELS SUR LES REGISTRES À DÉCALALGE

Un registre est un circuit numérique à deux fonctions : il peut stocker des données
et les déplacer. L’habilité d’un registre à stocker des données explique pourquoi ce
composant est vu comme un type important d’élément de mémoire. La figure 1.1 illustre
le concept du stockage d’un 1 ou d’un 0 dans une bascule D. Le 1 est appliqué à l’entrée
des données tel qu’illustré et l’application simultanée d’une impulsion d’horloge permet
de stocker le 1 en effectuant la mise à l’état SET de la bascule. Lorsque le 1 est retiré à
l’entrée, la bascule demeure à l’état SET et le 1 est donc stocké. Un procédé similaire
s’applique pour le stockage d’un 0 en effectuant la mise à l’état RESET de la bascule
comme illustré à la figure 1.1.

Figure 1.1 – Bascule utilisée comme élément de stockage.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


2 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.2 – Déplacement des données dans les registres à décalage (l’illustration
montre quatre bits).

La capacité de stockage d’un registre indique le nombre total de bits (1 ou 0) de


données numériques qu’il peut emmagasiner. Chaque étage (ou bascule) d’un registre
à décalage représente une capacité de stockage d’un bit. Par conséquent, le nombre
d’étages d’un registre détermine sa capacité de stockage.
La propriété de décalage d’un registre permet le déplacement des données d’un
étage à l’autre du registre, de même qu’à l’intérieur ou hors du registre en appliquant
des impulsions de signal d’horloge. La figure 1.2 illustre les types de mouvements des
données dans les registres à décalage. Le bloc représente tout type de registre de quatre
bits et les flèches indiquent la direction du déplacement des données.
Remarque : Un registre contient au moins une bascule pour stocker et décaler des
données.

1.1.1 Registre à décalage de type entrée série/sortie série (SISO)

Le registre à décalage de type entrée série/sortie série (Figure 1.3) accepte des don-
nées sous une forme série, c’est-à-dire un bit à la fois et sur une seule ligne. L’information
stockée est également transmise à sa sortie sous une forme série.
Le symbole logique traditionnel d’un registre à décalage à entrée série/sortie série de
huit bits est montré à la figure 1.4. La désignation SRG 8 indique un registre à décalage
d’une capacité de huit bits

Exemple 1.1. Illustrez les états du registre de cinq bits de la Figure 1.5.a en réponse
aux formes d’ondes des données d’entrée et de signal d’horloge. Le registre est initiale-

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.1. RAPPELS SUR LES REGISTRES À DÉCALALGE 3

Figure 1.3 – Registre à décalage de type entrée série/sortie série.

Figure 1.4 – Symbole logique d’un registre à décalage à entrée série/sortie série de
huit bits.

ment à l’état 0.

Solution. Le premier bit de données (1) est entré dans le registre lors de la première
impulsion du signal d’horloge et ensuite décalé de gauche à droite, à mesure que les
autres bits sont entrés et décalés. Après cinq impulsions de signal d’horloge, le registre
contient Q4 Q3 Q2 Q1 Q0 = 11010, comme illustré à la Figure 1.5.b.

1.1.2 Registre à décalage de type entrée série/sorties parallèles (SIPO)

Dans ce type de registre, les données sont entrées en série de manière similaire à ce
que nous avons discuté à la section précédente, soit en commençant avec le bit de droite.
Ce type de registre diffère toutefois, puisque les bits sont retirés en même temps à ses
sorties parallèles, chacune étant la sortie de chaque étage. Une fois les données stockées,
chaque bit apparaît à sa sortie respective et tous ces bits sont disponibles simultanément,
et non l’un après l’autre comme avec une sortie série. La figure 1.6 illustre un registre
à entrée série/sorties parallèles de quatre bits et son symbole logique.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


4 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.5 – Exemple de registre à décalage de type entrée série/sortie série cinq bits.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.1. RAPPELS SUR LES REGISTRES À DÉCALALGE 5

Figure 1.6 – Registre à décalage de type entrée série/sorties parallèles.

Exemple 1.2. Illustrez les états d’un registre de quatre bits (SRG 4) en réponse aux
formes d’ondes des données d’entrée et de signal d’horloge montrées à la figure 1.7a.
Initialement le registre ne contient que des 1.

Solution. Après quatre impulsions d’horloge, le registre contient 0110, comme l’illustre
la figure 1.7.b.

Figure 1.7 – Solution de l’Exemple 1.2.

1.1.3 Registre à décalage de type entrées parallèles/sortie série (PISO)

Dans un registre à entrées de données parallèles, les bits sont placés simultanément
dans leurs étages respectifs à partir de lignes parallèles et non l’un après l’autre sur une
seule ligne comme avec une entrée série. Une fois stockées, ces données peuvent être
retirées en série de manière identique à ce que nous avons étudié dans la section 2.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


6 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.8 – Registre à décalage de type entrées parallèles/sortie série.

La figure 1.8 illustre un registre à décalage à entrées parallèles/sortie série de quatre


bits et son symbole logique. Notez que ce circuit comporte quatre entrées de données
parallèles, D0 , D1 , D2 et D3 ainsi qu’une entrée DECAL/CHARG qui permet le char-
gement de quatre bits de données dans le registre. Lorsque DECAL/CHARG est au
niveau BAS, les G1 , G2 , G3 et G4 sont validées, permettant l’application de chaque bit
de donnée à l’entrée D de sa bascule correspondante. Lorsqu’une impulsion de signal
d’horloge est appliquée, les bascules dont l’entrée D = 1 sont mises à l’état SET et
celles dont l’entrée D = 0 sont mises à l’état RESET , ce qui permet de stocker les
quatre bits simultanément.

Lorsque l’entrée DECAL/CHARG est au niveau HAUT, les portes G1 , G2 , G3 et


G4 sont bloquées et les portes, G5 , G6 et G7 sont validées, pour permettre le déclage des
bits de données vers la droite, d’un étage donné à l’étage suivant. Les portes OU déter-
minent si le registre procède au décalage normal ou chargement des données des entrées
parallèles, selon les portes ET validées par le niveau à l’entrée DECAL/CHARG .

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.1. RAPPELS SUR LES REGISTRES À DÉCALALGE 7

Exemple 1.3. Illustrez la forme d’onde de sortie d’un registre de quatre bits en ré-
ponses aux formes d’ondes des entrées de données parallèles, du signal d’horloge et de
DECAL/CHARG illustrés à la figure 1.9a. référez-vous à la figure 1.8 pour le dia-
gramme logique.

Solution. À l’impulsion 1 du signal d’horloge, les données parallèles D0 D1 D2 D3 = 1010


sont chargées dans le registre et Q3 devient un 0. À l’impulsion 2, le 1 de Q2 est décalé
vers Q3 ; à l’instant 3, le 0 est transféré dans Q3 . À l’instant 4, le dernier bit de données
(1) est décalé vers Q3 . À l’impulsion 5, tous les bits ont été décalés vers la sortie et il
ne reste que des 1 dans le registre, en supposant que l’entrée D demeure à 1, comme le
montre la figure 1.9b.

Figure 1.9 – Solution de l’Exemple 1.3.

1.1.4 Registre à décalage de type entrées parallèles/sorties parallèles (PIPO)

L’emploi d’entrées de données parallèles a été discuté à la section 4, de même que


l’utilisation des sorties parallèles à la section 3. Le registre à décalage à entrées parallè-
les/sorties parallèles combine ces deux méthodes. Aussitôt que tous les bits de données
sont entrés simultanément, ils apparaissent aux sorties parallèles. La figure 1.10 illustre
un registre à entrées parallèles/sorties parallèles.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


8 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.10 – Registre à décalage de type entrées parallèles/sorties parallèles.

1.1.5 Registre à décalage bidirectionnel

Un registre à décalage bidirectionnel peut décaler les données vers la gauche ou


vers la droite. Il peut être conçu avec des portes logiques et permettre le transfert
d’un bit de donnée d’un étage à un autre et vers la gauche ou vers la droite, selon
le niveau appliqué sur la ligne de commande. Un registre à décalage bidirectionnel de
quatre bits est illustré à la figure 1.11. Un niveau logique HAUT appliqué à l’entrée
de commande DROIT E/GAU CHE permet le décalage vers la droite des données
contenues dans le registre, alors qu’un niveau logique BAS valide leur décalage vers la
gauche. En effet, lorsque l’entrée de commande DROIT E/GAU CHE est au niveau
HAUT, les portesG1 à G4 sont validées et l’état de la sortie Q de chaque bascule
traverse à l’entrée D de la bascule suivante. Lorsqu’une impulsion de signal d’horloge se
présente, les bits de données sont décalés vers la droite. Lorsque l’entrée de commande
DROIT E/GAU CHE est niveau BAS, les portes G5 à G8 sont validées et l’état de
la sortie Q de chaque bascule traverse jusqu’à l’entrée D de la bascule précédente.
Lorsqu’une impulsion de signal d’horloge est produite, les bits de données sont décalés
vers la gauche.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.1. RAPPELS SUR LES REGISTRES À DÉCALALGE 9

Figure 1.11 – Registre à décalage bidirectionnel de quatre bits.

1.1.6 Registre à décalage bidirectionnel universel de quatre Bits 74HC194

Le composant 74HC194 est un exemple de circuit intégré à décalage bidirectionnel


universel. Un registre à décalage universel comporte à la fois des entrées et des sorties
série et parallèles. La figure 1.12 illustre son symbole logique.

Figure 1.12 – Symbole logique d’un circuit 74HC194.

Les quatre modes de fonctionnement du CI 74HC194 sont résumés dans le tableau


suivant.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


10 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Mode S0 S1
Mode 0 : Aucune action (Hold) 0 0
Mode 1 : Décalage à droite (Shift Right) 1 0
Mode 2 : Décalage à gauche (Shift Left) 0 1
Mode 3 : Chargement parallèle (Parallel Load) 1 1

Le CI 74LS194 est un autre exemple de registre à décalage universel de 4 bits. Il


sera abordé en détail dans la première série de TD.

1.1.7 Applications des registres à décalage

1.1.7.1 Compteur à registres à décalage

Fondamentalement, un compteur à registre à décalage est un registre dont la sortie


série est réacheminée à son entrée pour produire des séquences spéciales. Ces compo-
sants sont souvent qualifiés de compteurs, puisqu’ils produisent des séquences d’états
spécifiques. Le compteur de Johnson est un exemple de ce type de compteurs. Dans ce
compteur, le complément de la sortie de la dernière bascule est réinjecté à l’entrée D
de la première bascule (Figure 1.13).

Figure 1.13 – Compteur Johnson de quatre bits.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.1. RAPPELS SUR LES REGISTRES À DÉCALALGE 11

1.1.7.2 Compteur en anneau

Un compteur en anneau utilise une bascule pour chaque état de sa séquence. Il est
avantagé du fait qu’il ne nécessite aucune porte de décodage. Un compteur en anneau
de 10 bits comporte donc une sortie distincte pour chaque chiffre décimal (Figure 1.14).

Figure 1.14 – Compteur en anneau de dix bits.

1.1.7.3 Retard numérique

Le registre à décalage à entrée série/sortie série peut être utilisé pour créer un retard
entre l’entrée et la sortie. Ce retard numérique est déterminé par le nombre d’étages
(n) du registre et la fréquence du signal d’horloge (Exemple : Figure 1.15).

1.1.7.4 Émetteur-récepteur asynchrone universel (UART)

Une interface UART comprend un convertisseur de données série-parallèle et conver-


tisseur parallèle-série, comme l’illustre la figure 1.16. Fondamentalement, le bus de don-
nées est formé d’une série de conducteurs parallèles transportant les données entre l’in-

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


12 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

terface UART et le système à microprocesseur. Des circuits tampons servent d’interface


entre les registres de données et le bus de données.

Figure 1.15 – Registre à décalage utilisé comme circuit de retard.

Figure 1.16 – Diagramme d’ensemble d’une interface UART.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.2. DÉFINITION 13

1.2 D ÉFINITION

La mémoire est la portion d’un système qui stocke de grandes quantités de don-
nées binaires. Les mémoires à semi-conducteurs contiennent des tableaux d’éléments de
stockage, en général des verrous ou des condensateurs.

1.3 U NITÉ DE DONNÉES BINAIRES

En règle générale, les mémoires stockent des données par unités formées d’un à huit
bits. La plus petite unité de données binaires est le bit. Dans de nombreuses appli-
cations, les données sont traitées par multiples de huit bits ou avec l’unité de huit bit
appelée octet (Byte). L’octet peut se séparer en deux groupes ou unités de quatre bits,
appelés demi-octets ou quartets (Nibble). Une unité complète d’information s’appelle
un mot et contient généralement un ou plusieurs octets. Certaines mémoires stockent
les données par groupes de neufs bits, soit un octet et un bit de parité.

1.4 C APACITÉ MÉMOIRE

La capacité d’une mémoire est le nombre total d’unités de données qu’elle peut
stocker. En général cette capacité peut s’exprimer en bits, en octets, plus rarement en
mots. Le tableau 1.1 résume les principales expressions de la capacité mémoire.

Table 1.1 – Expressions de la capacité mémoire.

1.5 T YPES D ’ ACCÈS AUX MÉMOIRES

On peut donner une première classification de la mémoire en considérant l’ordre


dans lequel le processeur accède aux données.

◆ Mémoire à accès aléatoire

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


14 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

La plupart des mémoires centrales offrent un accès aléatoire. Les données peuvent être
lues ou écrites à n’importe quel emplacement. Le temps d’accès à une valeur est prati-
quement indépendant de l’emplacement dans lequel elle est stockée.

◆ Mémoire à accès séquentiel

Les bandes magnétiques sont d’excellents exemples de dispositifs à accès séquentiel.


Pour accéder à une donnée située en fin de bande, il faut d’abord parcourir la tota-
lité de la bande et des données qui précèdent. Le temps d’accès est proportionnel à
l’éloignement de l’information sur la bande.

1.6 A DRESSE MÉMOIRE

Chaque élément de stockage d’une mémoire pouvant contenir un 1 ou un 0 s’appelle


une cellule. Les mémoires sont formées de tableaux de cellules. Chaque bloc d’un tableau
de mémoire représente une cellule de stockage et son emplacement est déterminé en
spécifiant une rangée et colonne.

Figure 1.17 – Tableau de mémoire de 64 cellules organisé de trois façons différentes.

On peut organiser un tableau de 64 cellules de différentes façons, selon les unités de


données. La figure 1.17a illustre un tableau de 8 " 8, qui peut être considéré comme une
mémoire de 64 bits ou une mémoire de huit octets. La figure 1.17b montre un tableau
de 16 " 4, soit une mémoire de 16 demi-octets et la figure 1.17c illustre un tableau de
64 " 1, c.-à-d. une mémoire de 64 bits. Une mémoire est définie par le nombre de mots

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.7. OPÉRATIONS DE BASE DANS UNE MÉMOIRE 15

qu’elle peut stocker multiplié par la taille du mot. Par exemple, une mémoire de 16K "8
peut stocker 16384 mots de huit bits chacun (16 " 1024 = 16384).

Figure 1.18 – Exemple d’adresse dans une mémoire.

L’emplacement d’une unité de données dans un tableau de mémoire est appelé une
adresse. La figure 1.18a montre que l’adresse d’un bit dans un tableau est spécifiée
par une rangée et une colonne, tandis que la figure 1.18b illustre l’adresse d’un octet
uniquement spécifiée par la rangée. Il est donc clair que l’adresse dépend de l’archi-
tecture de la mémoire en unités de données. Les mémoires des ordinateurs personnels
(PC) sont organisées en octets impliquant que le plus petit nombre de bits adressable
vaut huit.

1.7 O PÉRATIONS DE BASE DANS UNE MÉMOIRE

1.7.1 Opération d’écriture

La figure 1.19 illustre une opération d’écriture simplifiée. Pour stocker un octet de
données en mémoire, un code conservé dans le registre d’adresse est placé sur le bus
d’adresse. Une fois que le code d’adresse est sur le bus, le décodeur d’adresse détermine
l’adresse et sélectionne l’emplacement spécifique en mémoire. La mémoire reçoit ensuite
une commande d’écriture. L’octet de données conservé dans le registre de données est
placé sur le bus de données et stocké dans l’espace d’adresse mémoire correspondant,
complétant l’opération d’écriture. Lorsqu’un nouvel octet de données est écrit dans un
espace d’adresse mémoire, l’octet de données déjà en place est détruit et remplacé.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


16 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.19 – Opération d’écriture.

1.7.2 Opération de lecture

L’opération de lecture (Figure 1.20) est très semblable à l’opération d’écriture sauf
que lorsque l’octet de données d’un espace d’adresse mémoire est lu, il demeure à cet
emplacement et n’est pas détruit.

Remarque : Un code d’adresse de N bits peut rejoindre 2N emplacements de mémoire.


Par exemple, dans PC, un bus d’adresse de 32 bits peut rejoindre 232 (4294967296)
emplacements de mémoire, soit 4G.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.8. DIFFÉRENTES TECHNOLOGIES DES MÉMOIRES 17

Figure 1.20 – Opération de lecture.

1.8 D IFFÉRENTES TECHNOLOGIES DES MÉMOIRES

Les mémoires peuvent être classées en trois catégories selon la technologie utilisée :
◆ Mémoire à semi-conducteur (mémoire centrale, ROM, PROM,. . ...)
◆ Mémoire magnétique (disque dur, disquette,. . .)
◆ Mémoire optique (DVD, CD-ROM,..).

NB. On s’intéresse dans ce cours uniquement aux mémoires à semi-conducteurs.

1.9 D IFFÉRENTS TYPES DE MÉMOIRES À SEMI - CONDUCTEURS

Les deux catégories principales de mémoires à semi-conducteurs sont la mémoire


vive et la mémoire morte. Dans une mémoire vive (ou RAM pour Random-Access
Memory), on peut accéder à toutes les adresses en un intervalle de temps identique et
sélectionner les emplacements dans n’importe quel ordre pour une opération d’écriture
ou de lecture. Toutes les mémoires vives permettent les opérations de lecture et d’écri-
ture. Les mémoires vives sont des mémoires volatiles, en ce sens qu’elles perdent leurs

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


18 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

données lorsqu’elles ne sont pas alimentées.


Dans une mémoire morte (ou ROM pour Read-Only Memory), les données sont
stockées de façon permanente ou semi-permanente. Les mémoires ROM et RAM sont
des mémoires à accès aléatoire, car elles peuvent traiter des données dans n’importe
quel ordre. Toutes les mémoires mortes permettent les opérations de lecture mais ne
permettent aucune opération d’écriture, contrairement à la mémoire vive. Les mémoires
ROM sont des mémoires permanentes, car elles conservent leurs données même lors-
qu’elles ne sont pas alimentées.

1.9.1 Mémoires vives (RAM)

Les deux catégories de mémoire vive sont la mémoire vive statique (SRAM) et la
mémoire vive dynamique (DRAM).

◆ Les mémoires SRAM (Static RAM) sont construites à partir de bascules de tran-
sistors qui permettent, si l’alimentation est maintenue, de conserver l’information
très longtemps. Ce sont des mémoires très rapides mais chères et qui induisent des
difficultés d’intégration. Elles sont de faibles capacités et sont plutôt réservées aux
mémoires caches.

◆ Les mémoires DRAM (Dynamic RAM) sont la base des mémoires centrales. Le bit
est associé à un seul transistor (contrairement aux SRAM) ce qui offre donc une très
grande économie de place et favorise une grande densité d’intégration. Le transistor
est associé à la charge d’un condensateur qui diminue avec le temps. La DRAM
est donc volatile et nécessite un rafraîchissement régulier. Ces mémoires sont en très
forte évolution tant au plan des coûts que des performances. Les mémoires EDO sont
de type DRAM traditionnelle mais leur temps de latence est beaucoup plus faible et
permet donc des temps d’accès plus petits. La mémoire SDRAM permet des échanges
synchronisés avec le processeur. On peut ainsi éviter les temps d’attente (Wait State).
Une évolution des SDRAM est la DDR SDRAM (ou SDRAM II) qui double le taux
de transfert actuel des SDRAM. La RDRAM, produit de la société Rambus, est de
conception très nouvelle et originale. Elle permet des taux de transfert 10 fois plus
élevés que ceux des DRAM traditionnelles, mais nécessite des contrôleurs spécifiques
ce qui en limite l’usage. Intel s’oriente vers le développement de DRDRAM qui
permettrait d’atteindre des débits de 1,6 Go/s.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.10. CARACTÉRISTIQUES D’UNE MÉMOIRE 19

1.9.2 Mémoires mortes (ROM)

Les mémoires vives sont accessibles en lecture et écriture mais sont volatiles. Bien des
applications (programme et données) impliquent d’être stockées de manière permanente,
même en l’absence d’alimentation électrique, comme par exemple le programme de “
Boot “ d’un ordinateur. Ces mémoires, accessibles uniquement en lecture, sont connues
sous le nom de ROM (Read Only Memory).
Les différentes évolutions technologiques de ce type de mémoire sont résumées dans
ce qui suit :
◆ ROM : Read Only Memory : Permet un stockage permanent même en l’absence
d’alimentation électrique. L’information stockée dans ces mémoires l’est de manière
définitive.
◆ PROM : Programmable ROM : Permet une écriture unique mais faite par l’uti-
lisateur au moyen d’une machine spéciale. Ces mémoires comprennent un ensemble
de fusibles qui sont détruits lors de la programmation de la mémoire.
◆ EPROM : Erasable PROM (PROM effaçable) : Elles peuvent être effacées
une fois écrites au moyen d’un faisceau ultraviolet qui force tous les bits à une même
valeur. Elles ont la même organisation que des SRAM.
◆ EEPROM : Electrically EPROM : Elles sont effaçables électriquement sans
intervention d’un rayonnement ultraviolet. Elles ne sont pas volatiles, facilement
réutilisables mais leur prix de revient et leur capacité (inférieur à 2 Mo) ne les
rendent pas très courantes.
◆ Flash : C’est une mémoire de type EEPROM qui se reprogramme électriquement
par bloc de 64 Ko (comme pour les blocs des disques magnétiques et de manière assez
rapide (Flash). Son cycle de vie est limité (100 000 écriture). Elle peut remplacer des
disques durs portables.

1.10 C ARACTÉRISTIQUES D ’ UNE MÉMOIRE

Plusieurs critères importants caractérisent les mémoires :

✓ La capacité de la mémoire indique la quantité d’information qu’une mémoire peut


stocker.
✓ Le temps d’accès de la mémoire caractérise le temps nécessaire pour obtenir une
information en mémoire. Pour une mémoire électronique qui est une mémoire très

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


20 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

rapide (RAM, ROM, registre. . .) ce temps se mesure en nanosecondes. Cette vitesse


peut également s’exprimer comme une fréquence d’horloge caractéristique de la mé-
moire, égale à l’inverse du temps d’accès et mesurée en hertz (Hz).
✓ La bande passante de la mémoire. Ce critère s’exprime sous la forme du produit
de la largeur du bus de données et de la fréquence de la mémoire. Par exemple pour
une mémoire de 64 bits de largeur sur un bus à 100M Hz la bande passante est de
800M o/s. Ce critère est très utilisé et tend à remplacer le critère de temps d’accès,
il permet, en effet, de mieux évaluer les différents débits à synchroniser entre les
modules de l’ordinateur ;
✓ Le temps de cycle représente l’intervalle minimum qui doit séparer deux demandes
successives de lecture ou d’écriture.
✓ La volatilité représente le temps pendant lequel une information est disponible en
mémoire. Les mémoires magnétiques sont non volatiles : l’information est conser-
vée même après l’arrêt de l’alimentation électrique. Les mémoires électroniques sont
généralement volatiles et perdent l’information dès que l’alimentation électrique est
coupée : c’est le cas des mémoires vives telles que les mémoires RAM ;
✓ Le coût est un critère très important dans les développements de l’informatique.
Les mémoires électroniques ont un coût de stockage relativement élevé et donc leurs
capacités sont d’autant plus faibles. Les mémoires magnétiques sont beaucoup moins
onéreuses et présentent donc de beaucoup plus grandes capacités de stockage.

1.11 O RGANISATION INTERNE DE LA MÉMOIRE

L’ensemble des mémoires à semi-conducteur utilisent un élément de base appelé


point mémoire ou bit. Ces points mémoire sont réalisés de différentes façons suivant le
type de mémoire (SRAM, DRAM, ROM, EPROM, EEPROM...). La réalisation d’un
point mémoire entraîne une surface plus ou moins grande suivant le type de mémoire
et conditionne les capacités maximales réalisables dans chaque type de mémoire.
Les points mémoire sont organisés en tableau (matrice) de n ligne et m colonnes
pour obtenir une capacité mémoire importante (n " m bits).
La gestion de ces lignes et colonnes nécessite différentes fonctions ou blocs internes
à savoir :
✓ La matrice de point ;
✓ Le décodeur ligne "démultiplexeur" ;

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.11. ORGANISATION INTERNE DE LA MÉMOIRE 21

✓ Le multiplexeur colonne ;
✓ Les circuits d’entrée sortie des données (formés d’amplificateurs trois états) ;
✓ La logique de contrôle permettant le fonctionnement de l’ensemble, à partir des
signaux de sélection (CE Chip Enable ou CS Chip Select), OE Output Enable,
R/W Read/Write, et éventuellement (RAS) et (CAS) pour les RAM Dynamiques).

Figure 1.21 – Organisation interne de la mémoire à semi-conducteur.

1.11.1 Point mémoire

Dans les PROMs le point mémoire est réalisé soit par fusibles métalliques (Ni-Cr
ou Ti), soit par fusibles silicium, soit par jonctions court-circuitées. Pour les jonctions
court-circuitées, à la livraison chaque liaison est formée de 2 jonctions en sens inverse
en série (équivalent à un circuit ouvert). La mise en avalanche d’une jonction la court-
circuite.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


22 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.22 – Point mémoire d’une PROM.

Les points mémoires sont organisés en matrice. Chaque point est à l’intersection
d’une ligne et d’une colonne, afin d’obtenir un nombre de point mémoire très important
(nombre de point = produit des lignes et des colonnes).
Chaque point permet d’établir un état logique 0 sur la colonne qui lui correspond
lorsque la ligne qui le commande est sélectionnée, et que la liaison par le fusible ou
la jonction sont présent. Lorsque le fusible a été programmé (détruit), la sélection de
la ligne ne permet pas au transistor d’imposer l’état bas. La résistance de tirage de la
colonne maintient alors l’état haut.
Remarque : Ces mémoires existent aussi en MOS. Le principe reste le même mais le
transistor bipolaire est remplacé par un transistor MOS. La résistance est également
remplacée par un MOS en générateur de courant.
Pour les mémoires SRAMs le point mémoire est équivalent à une bascule D (à 4
ou 6 transistors). Le point mémoire est alors réinscriptible en positionnant la bascule
à l’état désiré en sélectionnant sa ligne, un circuit de lecture écriture vient soit lire
l’état de la colonne n (ou n) ou impose les états des colonnes n et n. La bascule adopte
alors cet état logique, et le conserve même lorsque la ligne est désélectionnée. Le point
mémoire est donc RW, et de plus statique, mais les dimensions d’un tel point mémoire
empêchent d’obtenir des capacités importantes dans un espace réduit.
Dans le cas des mémoires dynamique (DRAM) le point mémoire se limite à un
transistor MOS et un condensateur de très faible valeur.
Le principe de fonctionnement de la cellule mémoire est assez simple : l’écriture
respectivement d’un 1 ou d’un 0 consiste à charger ou à décharger le condensateur en
rendant le transistor MOS conducteur.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.11. ORGANISATION INTERNE DE LA MÉMOIRE 23

Une logique (amplificateur détecteur) permet de lire ou d’écrire l’état logique de ce


condensateur.
Il est possible d’obtenir une grande intégration car le point mémoire est de dimension
très faible, et il est facile de multiplier ce motif. L’inconvénient est la perte progressive
de la charge des condensateurs de mémorisation, donc perte de l’état logique mémo-
risé. Il est donc nécessaire de procéder régulièrement à un rafraîchissement des points
mémoires.

Figure 1.23 – Point mémoire d’une SRAM.

Figure 1.24 – Point mémoire d’une DRAM.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


24 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

1.11.2 Multiplexage d’adresses (Mémoire DRAM)

Les mémoires DRAM utilisent la technique de multiplexage d’adresse pour réduire


le nombre de lignes d’adresses. Le schéma suivant (figure 1.25) illustre le principe d’une
mémoire DRAM de 1M O.
Les 10 lignes d’adresses sont multiplexées au début d’un cycle de mémoire par les
signaux de validation stroboscopique d’adresse de rangé (ligne) (RAS) (Row Address
Strobe) et d’adresse de colonne (CAS) (Column Address Strobe) en deux champs dis-
tincts de 10 bits. L’adresse de rangé de 10 bits d’abord placée dans le verrou d’adresse
de rangé. Ensuite, l’adresse de colonne de 10 bits est chargée dans le verrou d’adresse
de colonne. Ces deux adresses sont décodées pour sélectionner l’une des 220 adresses du
tableau de mémoire. Le chronogramme de base illustrant l’opération du multiplexage
d’adresse est montré à la figure 1.26.

Figure 1.25 – Schéma simplifiée d’une mémoire DRAM de 1Mo (256K " 32).

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.12. EXTENSION DE MÉMOIRE 25

Figure 1.26 – Chronogramme de base de multiplexage d’adresses.

1.11.3 Cycles de lecture et d’écriture (Mémoire DDRAM)

Au début de chaque cycle de lecture ou d’écriture, (RAS) et (CAS) passent à un


niveau valide BAS pour multiplexer les adresses de rangée et de colonne dans les verrous
et les décodeurs. Pour un cycle de lecture, l’entrée L/E (R/W ) est au niveau HAUT
et pour un cycle d’écriture, l’entrée L/E est au niveau BAS, comme le montre la figure
1.27.

1.11.4 Temps d’accès (Mémoire ROM)

La figure 1.28 illustre un chronogramme type de temps d’accès d’une mémoire ROM.
Le temps d’accès ta, d’une mémoire ROM désigne l’intervalle écoulé entre l’application
d’un code d’adresse valide sur les lignes d’entrée et l’apparition de données valides aux
sorties.

1.12 E XTENSION DE MÉMOIRE


1.12.1 Extension de la longueur de mot

Pour augmenter la longueur de mot d’une mémoire, il faut augmenter le nombre


de bits du bus de données. Par exemple, on peut obtenir une longueur de mot de huit
bits en utilisant deux mémoires contenant chacune des mots de quatre bits (Figure
1.29a). La figure 1.29b montre qu’il faut que le bus d’adresse de 16 bits soit connecté
aux deux mémoires pour que la combinaison de celles-ci conserve le même nombre
d’adresse (216 ) de chaque mémoire individuelle. Le bus de données de quatre bits des
deux mémoires sont combinés pour former un bus de données de huit bits. De cette
façon, chaque adresse sélectionnée produit huit bits sur le bus de données, soit quatre
bits par mémoire.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


26 CHAPITRE 1: LES MÉMOIRES À SEMI-CONDUCTEURS

Figure 1.27 – Chronogramme de cycles normaux de lecture et d’écriture.

Figure 1.28 – Temps d’accès d’une ROM mesuré entre un changement d’adresse et
l’apparition de données aux sorties lorsque le circuit est déjà validé.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


1.12. EXTENSION DE MÉMOIRE 27

1.12.2 Extension de capacité de mots

Pour augmenter la capacité de mots d’une mémoire, il faut accroître le nombre


d’adresses en augmentant le nombre de bits d’adresse. La figure 1.30 illustre l’extension
de deux mémoires RAM de 1M " 8 pour créer une mémoire RAM de 2M " 8.
Chaque mémoire individuelle possède 20 bits d’adresse pour sélectionner l’une ou
l’autre des 220 (1048576) adresses, comme l’illustre figure 1.30a. la mémoire résultante
comprend 2M (221 = 2097152) adresses et requiert 21 bits d’adresses (figure 1.30b). Le
21e bit d’adresse sert à valider le circuit de mémoire approprié. Le bus de données de
la mémoire résultante est toujours d’une longueur de huit bits.

Figure 1.29 – Extension de longueur de mot avec deux ROM deux mémoires ROM
de 64K " 4 (65536 " 4) formant une mémoire ROM de 64K " 8.

Figure 1.30 – Extension de capacité mémoire.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


Cette page a été laissée intentionnellement vide
CHAPITRE 2

HISTORIQUE ET ÉVOLUTION DES


ORDINATEURS

2.1 D ÉFINITION

Un ordinateur est une machine dotée d’une unité de traitement lui permettant
d’exécuter des programmes enregistres. C’est un ensemble de circuits électroniques per-
mettant de manipuler des données sous forme binaire. Cette machine permet de traiter
automatiquement les données, ou informations, selon des séquences d’instructions pré-
définies appelées aussi programmes.

2.2 H ISTORIQUE

Les premiers ordinateurs sont apparus à la fin de la seconde guerre mondiale. Les
historiens de l’informatique s’accordent pour reconnaître la machine ENIAC, construite
à l’université de Pennsylvannie(Moore School) pendant la guerre par J. P. Eckert et J.
Mauchly, comme le premier ordinateur. Cette machine, commandée par l’armée amé-
ricaine pour le calcul des tables de tir pour l’artillerie, était la première machine pro-
grammable. D’une taille énorme, 30 m de long, 2,8 m de haut et plusieurs mètres de
large, elle possédait 20 registres de 10 chiffres, chaque registre étant long de 60 cm. Le
composant de base était le tube à vide, et elle en contenait 18 000 ! La programmation
était manuelle, par enfichage de câbles et positionnement d’interrupteurs. L’opération
typique, l’addition de 10 bits, prenait 200 microsecondes, soit environ 200 000 fois plus

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


30 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

Génération Dates Technologie Nouveaux Nouvelles


produits sociétés et
machines
1 1950-1959 Tubes à vide Ordinateurs IBM 701, Univac I
électroniques
commercialisés
2 1960-1968 Transistors Ordinateurs Burroughs 6500,
meilleur NCR, CDC 6600,
marché Honeywell
3 1969-1977 Circuits intégrés Mini- 50 nouvelles
ordinateurs compagnies : DEC
PDP-11, Data
general Nova
4 1978-19xx LSI et VLSI PCs et Apple II, IBM-PC,
stations de Appolo DN300, Sun 2
travail

Tableau 1 – Premières générations d’ordinateurs

que le temps d’une addition de 64 bits sur une machine à fréquence d’horloge 1 GHz
en 2000.
C’est Von Neuman, intégré en 1944 au projet ENIAC, qui formalisa les concepts
présents dans ce premier ordinateur, et connus maintenant sous le nom d’«ordinateur
de Von Neuman».
L’histoire des ordinateurs commençait. Pendant toute une période, on a pu assez
facilement mettre en évidence des générations successives d’ordinateurs. Le tableau 2.1,
retrace l’histoire des premières générations. Le passage d’une génération à la suivante
correspondait à une modification de la technologie de réalisation des éléments matériels
fondamentaux de l’ordinateur : le processeur et la mémoire.

2.3 S TRUCTURE GÉNÉRALE D ’ UN ORDINATEUR

Nous nous intéressons ici à un ordinateur de type Von Neumann qui caractérise bien
la quasi-totalité des ordinateurs actuels. Il est composé des éléments suivants :
✓ Une mémoire centrale pour le stockage des informations (programme et données) ;
✓ Un microprocesseur ou processeur central pour le traitement des informations logées
dans la mémoire centrale ;
✓ Des unités de contrôle des périphériques ;

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


2.3. STRUCTURE GÉNÉRALE D’UN ORDINATEUR 31

✓ Un bus de communication entre ces différents modules.


La figure 2.1 présente l’organisation générale d’un ordinateur. On y trouve deux parties
principales :
Le processeur comprenant les modules mémoire centrale, processeur central (mi-
croprocesseur), les unités d’échange et le bus de communication entre ces différents
modules ;
Les périphériques avec lesquels dialogue le processeur au travers des unités d’échange
(ou contrôleurs). On distingue en général :
✓ Les périphériques d’entrée tels que le clavier ou la souris ;
✓ Les périphériques de sortie tels que les imprimantes et les écrans de visualisation ;
✓ Les périphériques d’entrée et de sortie tels que les disques magnétiques ou les modems
pour accéder aux réseaux de communication.
Globalement le processeur permet l’exécution d’un programme. Chaque processeur dis-
pose d’un langage de programmation (les instructions machine) spécifique. Ainsi ré-
soudre un problème avec un processeur consiste à exprimer ce problème comme une
suite de ses instructions machine. La solution à un problème est donc spécifique de
chaque processeur. Le programme machine et les données qui sont manipulées par les
instructions machine sont placés dans la mémoire centrale.

Figure 2.1 – Bloc fonctionnel d’un ordinateur.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


32 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

2.3.1 L’unité centrale de traitement

Le microprocesseur (Unité Centrale de Traitement, UCT , en anglais Central Pro-


cessing Unit, CPU ) a pour objet d’exécuter les instructions machines placées en mé-
moire centrale. La figure 2.2 présente son architecture générale.
Il est constitué de quatre parties : l’Unité Arithmétique et Logique (UAL), les
registres, l’unité commande et le bus de communication interne permettant l’échange
des données et des commandes entre les différentes parties du microprocesseur.

Figure 2.2 – Architecture d’un Microprocesseur simple.

2.3.1.1 L’unité arithmétique et logique (UAL)

L’unité arithmétique et logique (UAL) est composée de circuits logiques tels que
les additionneurs, soustracteurs, comparateurs logiques. . . Les données à traiter se pré-
sentent donc aux entrées de l’UAL, sont traitées, puis le résultat est fourni en sortie de
cette UAL et généralement stocké dans un registre dit accumulateur. La figure 2.3 est
un exemple d’une UAL d’un bit.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


2.3. STRUCTURE GÉNÉRALE D’UN ORDINATEUR 33

Figure 2.3 – Exemple simple d’UAL 1 bit.

2.3.1.2 Les registres

Ce sont des zones de mémorisation de l’information internes au microprocesseur.


Ils sont de faible capacité et de temps d’accès très faible. Leur nombre et leur taille
sont variables en fonction du type de microprocesseur. Ils peuvent être de type adresse
(ils contiennent alors une adresse de mot mémoire) ou données (ils contiennent alors
le contenu d’un mot mémoire). Ils peuvent être spécifiques et avoir une fonction très
précise (par exemple le registre pointeur de pile) ou généraux et servir essentiellement
aux calculs intermédiaires, par exemple, de l’unité arithmétique et logique.

2.3.1.3 L’unité de commande

L’unité de commande a pour rôle de gérer le bon déroulement du programme. Elle


doit donc prendre en compte, les unes après les autres, chacune des instructions ; décoder
l’instruction en cours, lancer les ordres (microcommandes) aux composants du système
qui participent à la réalisation de cette instruction ; puis aller chercher une nouvelle
instruction et recommencer.
Pour cela l’unité de commande (figure 2.4) est constituée d’un certain nombre de
composants internes qui assurent chacun une fonction bien déterminée.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


34 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

Figure 2.4 – Schéma simplifié de l’unité de commandes.

☛ Le registre instruction : L’instruction que l’unité de commande va devoir traiter


est chargée préalablement dans un registre particulier appelé registre instruction.
☛ Le séquenceur : En fonction de l’instruction à traiter – qui vient d’être chargée dans
le registre instruction – l’unité de commande va devoir émettre un certain nombre
de microcommandes vers les autres composants du système. Ces ordres ne seront
bien évidemment pas émis n’importe quand, ni vers n’importe quel composant, mais
respectent une chronologie bien précise selon le type d’instruction à exécuter. Cette
chronologie (séquencement) est rythmée par une horloge interne au système.
Le composant qui émet ces microcommandes – en fonction du code opération (préala-
blement décodé) de l’instruction située dans le registre instruction – est le séquenceur,
qui, comme son nom le laisse entendre envoie une séquence de microcommandes vers
les composants impliqués par l’instruction.
☛ Le registre d’état : Pour exécuter correctement son travail, le séquenceur doit en
outre connaître l’état d’un certain nombre d’autres composants et disposer d’infor-
mations concernant la ou les opérations qui ont déjà été exécutées (par exemple,
doit-on tenir compte dans l’addition en cours d’une éventuelle retenue préalable gé-
nérée par une addition précédente). La connaissance de ces informations se fait à
l’aide d’un autre composant appelé registre indicateur ou, plus couramment registre
d’état, et qui, grâce à des indicateurs (drapeaux ou flags), qui ne sont en fait que des
registres de bascules, va mémoriser certaines informations telles que retenue préa-
lable, imparité, résultat nul, etc.
☛ Le compteur ordinal : Quand le séquenceur a fini de générer les microcommandes

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


2.3. STRUCTURE GÉNÉRALE D’UN ORDINATEUR 35

nécessaires, il faut qu’il déclenche le chargement, dans le registre instruction, d’une


nouvelle instruction. Pour cela il dispose d’un registre « compteur d’instructions
» (qui en fait serait plutôt un « pointeur » d’instructions).Ce registre porte le nom
de compteur ordinal (Program Counter ou Instruction Pointer (IP)). Il s’agit d’un
registre spécialisé, qui est chargé automatiquement par le système lors du lancement
d’un programme, avec l’adresse mémoire de la première instruction du programme
à exécuter.
Par la suite, à chaque fois qu’une instruction a été chargée dans le registre instruction
et qu’elle s’apprête à être exécutée, ce compteur ordinal est incrémenté (augmenté)
de manière à pointer sur l’adresse de la prochaine instruction à exécuter.
Remarque :
Les deux composants, unité de commandes et unité arithmétique et logique constituent
donc une unité centrale, aussi appelée unité de traitement ou CPU (Central Processor
Unit). Cette unité centrale (UC) permet ainsi :
✓ d’acquérir et décoder les instructions d’un programme, les unes après les autres en
général – mais ce n’est pas toujours aussi simple ;
✓ de faire exécuter par l’UAL les opérations arithmétiques et logiques commandées par
l’instruction ;
✓ de gérer les adresses des instructions du programme grâce au compteur ordinal ;
✓ de mémoriser l’état interne de la machine sous forme d’indicateurs grâce au registre
d’état ;
✓ de fournir les signaux de commande et de contrôle aux divers éléments du système.

2.3.2 La Mémoire centrale

La mémoire centrale assure la fonction de stockage de l’information qui peut être


manipulée par le microprocesseur (processeur central), c’est-à-dire le programme ma-
chine accompagné de ses données. En effet, le microprocesseur n’est capable d’exécuter
une instruction que si elle est placée dans la mémoire centrale.
La mémoire centrale peut être présentée comme un ensemble de “cases “ ou cellules,
dans lesquelles on peut ranger des informations qui auront toutes la même taille, le
mot mémoire. Ces mots mémoire, qui représentent les instructions composant les pro-
grammes du système ou de l’utilisateur et les données qui sont à traiter à l’aide de ces
programmes, ont une taille variant suivant le type de machine (8, 16 ou 32 bits. . .). Afin

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


36 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

de pouvoir retrouver dans la mémoire centrale la cellule qui contient le mot mémoire
que l’on recherche, les cellules sont repérées par leur adresse (emplacement) dans la
mémoire, c’est-à-dire qu’elles sont numérotées (généralement en Hexadécimal) de la
cellule d’adresse 0 à, par exemple, la cellule d’adresse 0xFFFF.

2.3.3 Le bus de communication

Le bus de communication peut se représenter comme une nappe de fils transportant


des signaux et permettant l’échange des informations entre les différents modules du
processeur.
Le bus est construit comme un ensemble de trois bus :
☛ Le bus d’adresses : transporte des combinaisons de signaux qui sont interprétées
comme des nombres entiers représentant l’adresse d’un mot mémoire. Par exemple,
sur la figure 2.5, le bus d’adresses a une largeur de 3 fils et est donc capable de
coder des adresses allant de 0 à 7. Pour adresser un mot mémoire on fait appel à un
circuit de sélection (décodeur) qui en entrée reçoit n signaux (3 dans notre exemple)
et fournit 2n signaux de sortie (8 dans notre exemple).
☛ Le bus de données : permet l’échange des informations (les contenus) entre les
différents modules. Dans notre exemple le bus de données a une largeur de 16 fils et
donc la taille des mots mémoires auxquels on peut accéder ou dont on peut modifier
le contenu est de 16 bits ;
☛ Le bus de commandes : c’est par ce bus que le microprocesseur indique la nature
des opérations qu’il veut effectuer. Dans notre exemple il a une largeur d’un fil et
donc le microprocesseur ne peut passer que deux commandes (la lecture et l’écriture).

2.3.4 L’unité d’échange

Cette unité d’échange a pour rôle de gérer les transferts des informations entre l’unité
centrale et l’environnement du système informatique. Cet environnement correspond en
fait aux périphériques tels que disques durs, imprimantes, écran vidéo. . .

2.3.5 Les périphériques

Les périphériques sont très nombreux et très variés. Certains ne peuvent que recevoir
des informations (écrans. . .), d’autres ne peuvent qu’en émettre (claviers. . .), d’autres
servent de mémoire externe (mémoire auxiliaire ou de masse) au système (disques,

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


2.4. UN PROGRAMME 37

Figure 2.5 – Bus de communication.

disquettes. . .), enfin certains peuvent être très spécialisés (sondes de température, de
pression. . .).

2.4 U N P ROGRAMME

Un programme est composé d’instructions qui traitent des données. Les instructions
et les données étant stockées, du moins au moment du traitement, en mémoire centrale.

2.5 U NE I NSTRUCTION

Une instruction est une opération élémentaire d’un langage de programmation,


c’est-à-dire qu’il s’agit du plus petit ordre que peut « comprendre » un ordinateur.
Ainsi selon le langage on rencontrera :
BASIC : Let C = A + B
COBOL : Compute C = A + B

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


38 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

Chaque instruction correspond à un ordre donné à l’ordinateur, ici celui de faire une
addition entre le contenu de la donnée A et celui de la donnée B. Toutes les instructions
présentent en fait deux types d’informations :
☛ ce qu’il faut faire comme action (addition, saisie d’information, affichage. . .),
☛ avec quelles données réaliser cette action (A, B. . .).
Une instruction peut donc se décomposer en deux zones ou champs :

Zone Opération Zone Données


Ce qu’il faut faire Avec quoi le faire

Or, les données sont rangées dans les cellules de la mémoire centrale où elles sont
repérables grâce à leur adresse. Une terminologie plus précise nous amène donc à utiliser
comme appellation de ces zones :

Code Opération Zone Adresse


Une instruction “ élémentaire”

Exemple 2.1. ADD A,(F810H) Ajouter le contenu de l’adresse F810H à celui de A.

2.6 L E LANGAGE MACHINE ET LE LANGAGE D ’ ASSEMBLAGE

La donnée de base manipulée par la machine physique est le bit (Binary Digit) qui
ne peut prendre que deux valeurs : 0 et 1. Au niveau physique, toutes les informations
(nombres, caractères et instructions) ne peuvent donc être représentées que par une
combinaison de 0 et 1, c’est-à-dire sous forme d’une chaîne binaire.
Pour être interprétées par le processeur, les instructions d’un programme doivent
être représentées selon un certain code et stockées dans la mémoire centrale dans un
format appelé langage machine.
Le langage machine décrit l’ensemble des instructions comprises par le processeur
et la convention de codage pour que celles-ci soient exécutables. On parle de jeu ou de
répertoire d’instructions. Le codage d’une instruction est un vecteur de 0 et de 1.

2.6.1 Le langage d’assemblage

Un programme écrit en langage machine a l’apparence d’une suite de chiffres binaires


peu évocatrice pour un programmeur humain. C’est pourquoi on utilise un langage dit
d’assemblage, dans lequel on décrit exactement les mêmes instructions, mais sous une
forme textuelle plus facile à manipuler que des paquets de 0 et de 1. En d’autres termes,

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


2.6. LE LANGAGE MACHINE ET LE LANGAGE D’ASSEMBLAGE 39

les combinaisons de bits du langage machine sont représentées par des symboles dits «
mnémoniques.
Le programme écrit en langage d’assemblage doit nécessairement être traduit en
langage machine pour être exécute. Le programme qui effectue cette traduction est
l’assembleur. Un abus de langage fréquent confond le langage et le traducteur. On
emploie l’expression impropre de programmation en assembleur pour programmation
en langage d’assemblage.

2.6.2 Format d’une instruction en langage d’assemblage

Une instruction du langage d’assemblage est composée de champs, séparés par un


ou plusieurs espaces. On identifie :

☛ Un champ étiquette, non obligatoire, qui correspond à l’adresse de l’instruction


machine ;

☛ Un champ code opération, qui correspond à la chaîne binaire code opération de


l’instruction machine ;

☛ Un champ opérandes pouvant effectivement comporter plusieurs opérandes séparés


par des virgules qui correspondent aux registres, mots mémoires ou valeurs immé-
diates apparaissant dans les instructions machine.

Etiquette Code opération Désignation des opérandes

L’instruction en langage d’assemblage :

Etiquette Code opération Désignation des opérandes


Boucle : ADD R0, R1

correspond à l’instruction machine :

Adresse Code opération Opérandes


01110110 00000000 111 0000 0001

Exemple 2.2. Code assembleur 8086

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


40 CHAPITRE 2: HISTORIQUE ET ÉVOLUTION DES ORDINATEURS

Code machine Code machine Mnémonique ou


(binaire) (en Hexa) Assembleur
10111101 01000001 00000000 BD 41 00 MOV BP,41h
10111110 01100101 01000001 BE 65 41 MOV SI,4165h
00000001 11011000 01 01 D8 ADD AX,BX
00111000 01000111 00000011 38 47 03 CMP [BX+3],AL
Executable Source

2.6.3 Cycle d’exécution d’une instruction

Le traitement d’une instruction peut être décomposé en trois phases :


☛ Phase 1 : Fetch (Recherche de l’instruction à traiter)
1. Le PC (Program Counter) contient l’adresse de l’instruction suivante du pro-
gramme. Cette valeur est placée sur le bus d’adresses par l’unité de commande
qui émet un ordre de lecture.
2. Au bout d’un certain temps (temps d’accès à la mémoire), le contenu de la case
mémoire sélectionnée est disponible sur le bus des données.
3. L’instruction est stockée dans le registre instruction du processeur (RI).
☛ Phase 2 : Décodage de l’instruction et recherche de l’opérande
Le registre d’instruction contient maintenant le premier mot de l’instruction qui peut
être codée sur plusieurs mots. Ce premier mot contient le code opératoire qui définit
la nature de l’opération à effectuer (addition, rotation,...) et le nombre de mots de
l’instruction.
1. L’unité de commande transforme l’instruction en une suite de commandes élé-
mentaires nécessaires au traitement de l’instruction.
2. Si l’instruction nécessite une donnée en provenance de la mémoire, l’unité de
commande récupère sa valeur sur le bus de données.
3. L’opérande est stocké dans un registre.
☛ Phase 3 : Exécution de l’instruction
1. Le microprogramme réalisant l’instruction est exécuté.
2. Les drapeaux sont positionnés (registre d’état).
3. L’unité de commande positionne le PC pour l’instruction suivante.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


CHAPITRE 3

ÉTUDE D’UN MICROPROCESSEUR 8


BITS

3.1 G ÉNÉRALITÉS

Bien que les microprocesseurs 4 bits correspondent à un minimum de capacité de


traitement, ils sont les premiers microprocesseurs commercialisés. Les microprocesseurs
8 bit sont les microprocesseurs qui ont des applications plus diverses et correspondent
à des circuits plus élaborés que les processeurs précédents (4 bits). Ils ont des jeux
d’instructions de 80 instructions ou plus, des possibilités d’interruption, d’accès direct
à la mémoire, d’adressage divers, un espace d’adressage de 64 KO en général, un lo-
giciel souvent assez développé, avec des possibilités de langages évolués. Tous sont en
technologie N-MOS (et parfois C-MOS). On peut les subdiviser en sous-familles autour
de microprocesseurs types.

■ 8080 et apparentés : ce microprocesseur très populaire a eu plusieurs versions


différentes par la vitesse (cycle de base de 2 à 1 µs) et aussi des successeurs.

Ainsi le Z80 de Zilog est extension du 8080, tant sur le plan du logiciel que de l’archi-
tecture.
Par la suite (1977), Intel lui-même a sorti le 8085, compatible avec le 8080, mais
améliorant l’intégration (un système minimal ne requiert que deux circuits intégrés
contre neuf pour un 8080) et ne nécessitant qu’une source de courant (au lieu de trois
pour le 8080).

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


42 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

■ 6800 et apparentés : le 6800 de Motorola est, du point de vue performance, lar-


gement comparable au 8080 ; mais mieux conçu car sorti plus tard, iles peut être
plus facile à mettre en œuvre. Il existe en versions compatibles mono-chip (6801)
et bi-chip (6802). En outre, Motorola en a réalisé une version améliorée 6809 dont
l’architecture été le jeu d’instructions sont des extensions du 6800, notamment au
traitement de données 16 bits. Il est également plus intégré que le 6800, et compatible
à ce point de vue au 6802.

À côté de ces produits conçus par Motorola, il faut signaler la série 6500 de MOS-
Technololgy (6501, 6502, 6503, 6504, 6505, 6506, 6512, 6513, 6514, 6515) et notamment
le 6502, qui se rapproche du 6800. Ce processeur a eu beaucoup de succès ce qui explique
peut-être que Motorola ait à son tour sorti un microprocesseur C-MOS mono-chip très
bon marché, le 6805, dont l’architecture est encore plus proche du 6500 ; en outre, il
peut intégrer un convertisseur analogique-numérique ou un synthétiseur de fréquence.

■ Autres microprocesseurs 8 bits : parmi les autres microprocesseurs 8 bits exis-


tants, on peut citer :

— Le 2650 de Signetics

— Le 80888 de Intel, version 8 bits du microprocesseur 16 bits 8086

— Le F8 de Fairchild et Mostek et sa version mono-chip 3870

— Le NSC 800 de National Semiconductor en technologie C-MOS

— Le Z80 du Zilog qui a été conçu par des transfuges de Intel, comme microprocesseur
compatible avec le 8080, mais ayant des performances nettement améliorées (le
jeu d’instructions du Z80 est surensemble du jeu d’instructions du 8080)

3.2 É TUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085

Le microprocesseur Intel 8085 est un microprocesseur 8 bits (une version plus mo-
derne du 8080), apparu en 1978, possédait une électronique simplifiée, en particulier
une unique alimentation 5 V et un générateur d’horloge intégré, quelques interruptions
en plus et un bus adresses-données multiplexé. Le 8085 fonctionne à une fréquence de
3 MHz, et la fréquence minimum de fonctionnement est de 500 kHz. La version 8085
A-2 fonctionne à une fréquence maximale de 5 MHz.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 43

Figure 3.1 – Brochage du Microprocesseur 8085.

3.2.1 Brochage et signaux

Le microprocesseur communique avec les autres modules de la machine par le biais


de signaux électriques. Le 8085 est placé dans un boîtier qui dispose de 40 broches pour
le transport des signaux (figure 3.1).
Les signaux du 8085 peuvent être regroupés en 7 groupes :

✓ Alimentation et signaux horloge ;


✓ Bus d’adresses/données ;
✓ Signaux de Contrôle et d’état ;
✓ Interruptions ;

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


44 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

✓ Signaux d’entrées/sorties séries ;

✓ Signaux DMA (Direct Accecs Memory pour Accès direct à la mémoire) ;

✓ Signaux RESET.

✓ Groupe 1 : Alimentation et signaux horloge :

— X1 –X2 : Entrée Horloge

— CLK OUT : Pour cadencer le reste du système

— VCC, VSS : alimentation

✓ Groupe 2 : Bus d’adresses/données :

— AD0 –AD7 : sont bidirectionnel et servent de bus de données et Bus de données


(adresses basses) à la fois : multiplexées. Durant l’exécution d’une instruction, ces
lignes transportent dans un premier temps (T1), les adresses et dans un deuxième
temps (T2) ils transportent les données

— AD8-AD15 : unidirectionnelles : bus d’adresses

Remarque : Avec ces 16 lignes d’adresses, le µP 8085 peut adresser 216 = 64K positions
mémoires différentes.

✓ Groupe 3 : Signaux de Contrôle

— ALE : Address Latch Enable : Elle est utilisée pour dé-multiplexé les lignes
AD0-AD7. Elle passe à niveau Haut quand AD0-AD7 transportent les adresses et
ensuite repasse à un niveau Bas. Ce signal peut être utilisé pour valider le verrou
d’adresse pour sauvegarder les bits d’adresses (figure 3.2) .

— RD : Commande de lecture

— W R : Commande d’écriture

— IO/M : spécifie si une opération mémoire (IO/M = 0) ou une opération entrée/-


sortie (IO/M = 1) est en cours d’exécution.

— S0 et S1 : indiquent le type de cycle machine en cours d’exécution

— READY : Entrée de synchronisation avec la mémoire.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 45

Figure 3.2 – Le µP 8085 représenté avec un bus d’adresses dé-multiplexé.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


46 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Remarque : Le 8085 ne génère pas directement les commande (lecture/ écriture) IOR,
IOW , M EM R et M EM W directement mais à partir des trois signaux RD , W R et
IO/M comme l’illustre le schéma suivant.

Figure 3.3 – Génération des signaux de lecture et d’écriture par Le µP 8085 (Sépara-
tion des commandes R/W mémoire et Entrée/sortie).

✓ Groupe 4 : Interruptions : Le 8085 dispose de cinq (5) entrées d’interruptions


hardware à savoir :
— TRAP : interruption vectorisée non masquable dont la priorité est la plus
haute. Elle est très utile dans la gestion des évènements critiques (coupure de
courant).
— RST 7.5, RST 6.5 et RST 5.5 : interruptions masquables vectorisées dont
l’ordre de priorité est : 7.5 (priorité haute), 6.5 et 5.5 (priorité basse).

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 47

— INTR (Interrupt Request) : Interruption masquable non vectorisée. Elle a


la plus basse priorité.

Remarque : La différence majeure entre INTR et les quatre autres interruptions


(TRAP, RST 7.5, RST 6.5 et RST 5.5) est qu’elle n’est pas vectorisée. Autrement
dit, si une interruption survient sur l’une de ces quatre interruptions, le contrôleur
d’interruption du µP 8085 lance un appel (CALL) à des sous-routines situées à des
emplacements prédéterminés.

Interruption Emplacement de la Sous-routine (Hexa)


TRAP 24
RST 5.5 2C
RST 6.5 34
RST 7.5 3C
INTR Non vectorisée

— IN T A (Interrupt Acknowledge) : est un signal d’acquittement d’interruption


indiquant que le processeur a reconnu l’interruption INTR.

✓ Groupe 5 : Signaux Entrées/Sorties

— SID (Serial Input Data) : Ligne d’entrée de données série. La donnée disponible
sur cette ligne est chargée dans le bit 7 de l’accumulateur à chaque fois qu’une
instruction RIM (Read Interrupt Mask) est exécutée.

— SOD (Serial Output Data) : Le 8085 dispose d’une sortie série SOD et utilise
l’instruction SIM (Set Interrupt Mask) pour transférer des données série à un
périphérique.

✓ Groupe 6 : Signaux DMA

— HOLD (Hold Request) : Si un maitre de bus désire contrôler le bus comme


par exemple le DMAC (Direct Memory Access Controller), il envoie une demande
au processeur de libérer le bus pour pouvoir l’utiliser. Il le fait en activant le signal
HOLD, envoyé au processeur.

— HDLA : (Hold Acknowledge) : en recevant le signal HOLD, le processeur


termine l’instruction en cours d’exécution, libère le bus et positionne le signal
HDLA qui prévient le contrôleur DMA qu’il a maintenant le contrôle du bus.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


48 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Figure 3.4 – Opération HOLD.

✓ Groupe 7 : Signaux RESET

— RESET IN : ce signal est utilisé pour initialiser le processeur. Quand le proces-


seur reçoit un signal sur cette broche, il remit le bus à l’état haute impédance et
remit à zéro :

— le PC (compteur programme)

— les signaux d’activation d’interruption et les bascule associés au signal HDLA.

— le registre d’instruction (les autres registres sont inaffectés par ce signal).

— RESET OUT : ce signal est utilisé par le µP pour remettre à zéro ses périphé-
riques.

3.2.2 Architecture interne

L’architecture interne du 8085 peut être divisée en cinq unités principales (figure
3.5) : Les registres (Registre Unit), l’unité de commande (contrôle), l’unité arithmétique
et logique (ALU), l’unité des interruptions (Interrupt Unit) et l’unité d’entrées/sorties
(I/O Unit).

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 49

Figure 3.5 – Architecture du Microprocesseur 8085.

3.2.3 Les registres

Le tableau suivant mis en évidence les différents registres du 8085 ainsi qu’à leurs
tailles.

Accumulateur ou Registre A (8 bits) Registre d’état ou Flags (8 bits)


B (8 bits) C (8 bits)
D (8 bits) E (8 bits)
H (8 bits) L (8 bits)
Pointeur de pile SP (16 bits)
Compteur de programme PC (16 bits)

3.2.3.1 Les registres généraux

Le 8085 dispose de six (6) registres à usage général à savoir : B, C, D, E, H


et L. L’utilisateur peut utiliser temporairement ces registres pour y sauvegarder ou y

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


50 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

transférer des données durant l’exécution d’un programme. Ces registres sont de taille
de 8 bits mais quand le µP traitent des données (mots) de 16 bits, ces registres peuvent
être combinés pour former des pairs (16 bits) comme suit : BC, DE et HL.
La paire de registres HL peut être utilisée comme pointeur de mémoire référen-
ciée par le symbole M.
Symbole de référence Registres référenciés
B B et C
D D et E
H H et L
M H et L comme référence mémoire
PSW A et le registre d’état (Flags)

Remarque : Le 8085 dispose de trois autres registres internes temporaires de 8 bits


mais ils ne sont pas accessibles par l’utilisateur. Un est utilisé dans la plupart des
opérations arithmétiques et logiques tandis que les deux autres nommés, W et Z sont
utilisé par le µP pour des opérations internes telles que par exemple dans le cas des
instructions XCHG (interchanger des données) et CALL (appel de sous-programmes).

3.2.3.2 L’Accumulateur (ACC ou encore Registre A)

Ce registre de 8 bits est le plus important parmi tous les registres du 8085. Toutes
les données d’entrée/sortie de ou vers le microprocesseur passe par l’intermédiaire de
l’accumulateur. Il est généralement utilisé pour le stockage temporaire de données et
pour le rangement de résultat final des opérations arithmétiques et logiques.

3.2.3.3 Compteur de programme (PC)

Ce registre de 16 bits contient l’adresse de la prochaine instruction à exécuter.

3.2.3.4 Pointeur de pile (SP)

Le pointeur de pile (SP) est un registre de seize (16) bits qui pointe vers le sommet
de la «pile». La pile est une zone mémoire où on peut y effectuer des opérations de
lecture /écriture (R/W ) des données temporaires ou stocker des adresses de retour (en
cas d’appel de sous-routines).
Un programme doit être écrit à une extrémité de la mémoire et la pile doit être
initialisée à l’autre extrémité pour éviter un chevauchement entre données (figure 3.6).

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 51

Figure 3.6 – Organisation de la mémoire et la partie réservée à la pile.

Il faudra donc laisser un certain espace mémoire entre le code programme et les données
stockées sur la partie mémoire utilisée comme pile car la taille de la pile n’est limité que
par la taille de la mémoire. Dans le cas contraire, des instructions PUSH (écriture dans
la pile) peuvent tourner sur la partie réservée aux codes programmes comme l’illustre
le schéma suivant.
Remarque : Le PC est auto-incrémenté tandis que le SP est auto-décrémenté par le
système.

3.2.3.5 Registre d’instruction (IR)

Un programme écrit par le programmeur consiste en fait en lecture/écriture mémoire


Quand une instruction est exécuté par le système, le code opération de l’instruction est
extrait de la mémoire et stocké dans le registre d’instruction (IR). Le code opération est
chargé dans le registre d’instruction pendant le cycle Fetch (recherche). Il est ensuite
envoyé au décodeur d’instruction pour décodage.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


52 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

3.2.3.6 L’incrémenteur/décrémenteur de verrou d’adresses

Registre de 16 bits permet d’incrémenter/décrémenter le contenu du PC ou SP


lorsque les instructions qu’ils contiennent sont exécutées.

3.2.3.7 Registres tampons adresses/données

Ces registres verrouillent les adresses/données reçues à partir du bus interne du µp


et puis les chargent dans le bus adresses/données externe. Ils servent d’étage tampon
entre le µP et le système de bus externe.

3.2.3.8 Registre d’état (Flags)

C’est un registre à 8 bits mais seulement cinq bits sont en fait utilisé comme dra-
peaux (indicateurs) et le reste des bits ne sont pas utilisés. Ces indicateurs sont mis à
jours (modifiés) après la fin de l’exécution d’une opération dans l’UAL. Chacun de ces
cinq drapeaux est une bascule (1bit).

✓ S : Signe (Sign (S) flag) : ce bit est mis à 1 si l’opération génère un résultat
négative (0 dans le cas contraire : Positive).
✓ Z : (Zero (Z) flag) : ce bit est mis à 1 si le résultat de l’opération est nul
✓ AC : Retenue Auxiliaire (Auxiliary Carry (AC) flag) : ce bit est mis à 1
lorsqu’il y a retenue du bit trois (D3) vers le bis quatre (D4) lors d’une opération
arithmétique sinon il est mis à 0.

✓ P : Parité (Parity (P) flag) : si le nombre de 1 est pair, ce bit est mis à 1 (parité
paire) et 0 autrement (parité impaire).

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 53

✓ CY : Débordement (Carry Flag (CF)) : s’il y a une retenue du bit D7 lors d’une
opération d’addition ou de soustraction, ce bit est mis à 1 (s’il y a débordement) et
zéro autrement.

Remarque : Le registre d’état associé à l’accumulateur forme le contexte ou PSW


(Program Status Word)

Accumulateur Registre d’état


X X X X X X X X S Z X AC X P X CY
PSW(Program Status Word)

3.2.4 L’unité de commande

L’unité de commande génère les commandes nécessaires à l’exécution d’une instruc-


tion décodée. Elle est constitué en fait de trois de trois unités : le registre d’instruction
(IR), décodeur d’instruction et unité de synchronisation et de commande (Timing and
Control). L’unité de commande contrôle toutes les activités aussi bien à l’intérieur qu’à
l’extérieur du 8085.

3.2.5 L’unité arithmétique et logique (UAL)

L’unité arithmétique et logique (UAL) réalise des opérations arithmétiques et lo-


giques (addition, soustraction, OR, AND, . . .). Elle utilise l’accumulateur et les registres
temporaires pour effectuer des opérations dont les résultats seront toujours stockés dans
l’accumulateur. Les registres associés à L’UAL sont l’accumulateur, les registres tem-
poraires et le registre d’état.

3.2.6 L’unité d’interruption

Le 8085 supporte deux types d’interruptions : Cinq (5) interruptions hardware


(TRAP, RST 7.5, RST 6.5, RST 5.5 et INTR) et huit (8) interruptions software
(RST 0 à RST 7) dont le code de ces instructions et leurs vecteurs d’adresse sont
représentés dans tableau suivant.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


54 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Figure 3.7 – Utilisation de EI (Enable Interrupt pour Activer les interruptions) et DI


(Disable Interrupt pour Désactiver les interruptions) dans un programme.

Sachant que le vecteur d’adresse se calcule comme suit :

Vecteur d’adresse = Numéro Interruption " 8

Exemple 3.1. Vecteur d’adresse pour RST 5 : (5 × 8 = 40)10 = 2816

=> Vecteur d’adresse pour RST 5 est 0028H.


Remarque : Pour ne pas interrompre une portion d’un programme particulier par
les interruptions RST 7.5, RST 6.5, RST 5.5 et INTR, on utilise deux instructions
particulières DI (Disable Interrupt) et EI (Enable Interrupt) au début at à la fin de la
portion du programme en question respectivement.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 55

3.2.7 Unité d’Entrée/Sorite

Le 8085 dispose de 8 bits adresses d’E/S. Ainsi, il peut accéder à 28 = 256 ports
Entrée/sortie. Selon l’état de la commande IO/M , ces ports E/S seront configures en
mode écriture (sortie) ou en mode lecture (Entrée).

3.2.8 Format d’une instruction

Une instruction comprend un code d’opération (Opcode) et l’adresse des données


(appelé "Opérande"), sur lequel fonctionne l’Opcode. Le code d’opération indique la
nature de la tâche à effectuer par une instruction. Symboliquement, une instruction
ressemble à ceci :

Code opération Adresse de la donnée


Opcode Opérande

3.2.9 Taille des instructions

Les instructions en 8085 peuvent être codées sur un octet ou deux octets ou encore
sur trois octets

3.2.9.1 Codage d’instruction sur un octet

L’instruction est codée sur un seul octet : L’Opcode et l’opérande sont sur le même
octet.

ADD B ; additionner le contenu du registre B à l’ accumulateur


CMA ; Complémenter à un l’ accumulateur

3.2.9.2 Codage d’instruction sur deux octets

L’instruction est codée sur un deux octets : L’Opcode est codé sur un octet et
l’opérande est codé également sur autre octet. Symboliquement, une telle instruction
ressemble à ceci :

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


56 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.2.

MVI C, 0 7H ; Charger le registre C par la valeur 07H


MVI M, 0 0 0 0 1 1 1 1B ; Stocker la valeur 0Fh à l’adresse M
; (M= adresse définie par le contenu de H et L)
ADI 10H ; Additionner la donnée immédiate dont la
; valeur = 10H à l’ accumulateur .

3.2.9.3 Codage d’instruction sur trois octets

L’instruction est codée sur un deux octets : L’Opcode est codé sur un octet et
l’opérande dont l’adresse de poids faible est codé sur autre octet et l’adresse de poids
fort est codée sur un autre octet. Symboliquement, une telle instruction ressemble à
ceci :

Exemple 3.3.

LDA 300H ;Charger l’ accumulateur par le contenu de l’adresse 300H


STA 2050H ;Stocker le contenu de l’ accumulateur à l’adresse 2050H

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.2. ÉTUDE DÉTAILLÉ DU MICROPROCESSEUR INTEL 8085 57

3.2.10 Mode d’adressage

Pour le microprocesseur 8085, il y’a cinq modes d’adressage :

✓ Adressage direct
✓ Adressage registre
✓ Adressage indirect à registre
✓ Adressage immédiat
✓ Adressage implicite

3.2.10.1 Adressage direct

Dans ce mode d’adressage, le code opération est suivi de l’adresse de l’opérande


sur lequel travaille l’instruction (l’adresse de l’opérande est spécifié dans l’instruction
elle-même).
LDA 4000H
STA 5513H

3.2.10.2 Adressage registre

Dans ce mode d’adressage, l’opérande se trouve dans l’un des registres généraux.

Exemple 3.4.

MOV A, B
ADD D

3.2.10.3 Adressage indirect à registre

Dans ce mode, l’adresse de l’opérande est spécifiée par le contenu d’une paire de
registre (sur 16 bits).

Exemple 3.5.

MOV A, M
ADD M

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


58 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

3.2.10.4 Adressage immédiat

Dans ce mode d’adressage immédiat, la partie adresse de l’instruction ne contient


pas l’adresse de l’opérande mais l’opérande lui-même.

Exemple 3.6.

MVI A, 07H
ADI 0FH

3.2.10.5 Adressage implicite

Certaines instructions opèrent sur un seul opérande dont elles supposent qu’il se
trouve dans l’accumulateur et donc aucune nécessité dans ce cas de spécifier son adresse.
En fait, l’opérande ne figure explicitement pas dans ce genre d’instructions.

Exemple 3.7.

RAR
RAL
CMA

3.3 J EU D ’ INSTRUCTION DU 8085

Fonctionnellement, les instructions du 8085 peuvent être réparties en cinq groupes


comme suit :

✓ Instructions de transfert des données

✓ Instructions arithmétiques

✓ Instructions logiques

✓ Instructions de branchements

✓ Instructions de gestion de la pile et des entrées/sorties

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 59

3.3.1 Instructions de transfert des données

Transferts de données possibles : Entre registres ou entre Mémoire et registres

Instruction Fonction Description (En Français)


MOV Move Déplacer (copier)
MVI Move Immediate Copier Immédiat
LDA Load Accumulator Directly from Charger l’Accumulateur à partir
Memory la Mémoire
STA Store Accumulator Directly in Stocker l’Accumulateur en
Memory mémoire
LHLD Load H and L Registers Directly Charger les registres H et L
From Memory directement à partir de la
Mémoire
SHLD Store H and L Registers Directly Stocker les registres H et L
in Memory directement en Mémoire

Dans ce qui suit, le "X" dans les instructions signifie paires de registres

Instruction Fonction Description (En Français)


LXI Load Register Pair with Charger la paire de registres avec
Immediate data donnée immédiate
LDAX Load Accumulator from Address Charger l’Accumulateur à partir
in Register Pair de l’adresse contenue dans la
paire de registres
STAX Store Accumulator in Address in Stocker l’Accumulateur à
Register Pair l’adresse contenue dans la paire
de registres
XCHG Exchange H and L with D and E Échanger les registres H et L
avec les registres D et E
XTHL Exchange Top of Stack with H Échanger le sommet de la pile
and L avec la paire de registres H et L

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


60 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.8.

MOV A, M ; Charger l’ACC à partir de l’adresse pointé


; par le registre HL
MOV E, A ; Copier le contenu de l’ACC dans le registre E
MVI A, ’A’ ; Charger l’ACC par la lettre ’A’
MVI A, 4 1H ; Cette instruction est équivalente à la
; précédente (Code ASCII de ’A’ = 41H)
LDA 300H ; Charger l’ACC à partir de l’adresse 300H
STA 400H ; Stocker le contenu de l’ACC à l’adresse 400H
LHLD 3100H ; Charger HL par le contenu de l’adresse 3100H
; Charger L avec le contenu de l’adresse 3100H
; et charger H avec le contenu de l’adresse 3101H
; comme illustré ci − dessous

Instruction : LHLD 3100H

Exemple 3.9.

SHLD 6555H ; Stocker le contenu de HL à l’adresse 6555H


; Stocker le contenu de L à l’ adresse 6555H
; et Stocker le contenu de H à l’adresse 6556H
; comme illustré ci − dessous

Instruction : SHLD 6555H

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 61

Exemple 3.10.

LXI SP, FC06H; Charger le pointeur de pile par l’adresse FC06H


LDAX D ; Charger l’ACC par l’adresse pointée par
; la paire de registres DE. Si on suppose que
; D=40H, E=50H et le contenu de l’adresse
; mémoire 4050H est : ABH ((4050H)= ABH) Alors
; LDAX D => ACC = ABH comme illustré ci − dessous

Instruction : LDAX D

Exemple 3.11.

STAX D; Stocker le contenu de l’ACC à l’adresse contenu


; dans la paire de registre DE. Avec les données
; de l’exemple précèdent , le contenu de l’adresse
; mémoire 4050H est = ABH (D=40H, E=50H, ACC=ABH)
XCHG ; Si HL =1234H et DE=ABCDH Alors XCHG => HL=ABCDH
; et DE =1234H
XTHL ; Si on suppose que HL = A0B2H , SP = 3062H, le
; contenu de adresses 3062H = 52H et le contenu
; de l’adresse 3063H = 16H Alors XTLH =>
; HL = 1652H, SP = 3062H, le contenu de l’adresse
; (3062H)= B2H et (3063H) = A0H comme illustrée
; ci − dessous

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


62 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Instruction : XTHL

3.3.2 Instructions arithmétiques

Instruction Fonction Description (En Français)


ADD Add to Accumulator Additionner à l’accumulateur
ADI Add Immediate Data to Additionner donnée immédiate à
Accumulator l’accumulateur
ADC Add to Accumulator Using Additionner à l’accumulateur
Carry Flag avec la retenue
ACI Add Immediate Data to Additionner donnée immédiate à
Accumulator Using Carry Flag l’accumulateur avec la retenue
SUB Subtract from Accumulator Soustraire de l’accumulateur
SUI Subtract Immediate Data from Soustraire de donnée immédiate
Accumulator de l’accumulateur
SBB Subtract from Accumulator Soustraire de l’accumulateur
Using Borrow (Carry) Flag avec la retenue
SBI Subtract Immediate Data from Soustraire donnée immédiate de
Accumulator Using Borrow l’accumulateur avec la retenue
INR Increment Specified Byte One Incrémenter l’octet spécifié par
une unité
DCR Decrement Specified Byte by Décrémenter l’octet spécifié par
One une unité

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 63

(Suite)
Instruction Fonction Description (En Français)
INX Increment Register Pair by One Incrémenter la paire registres
d’une unité
DCX Decrement Register Pair by One Décrémenter la paire registres
d’une unité
DAD Double Register Add : Add Additionner le contenu d’une
contents of Register Pair to H paire registres à la paire registres
and L Register Pair formée par H et L

Exemple 3.12.

ADD B ; Si B=05H et ACC =04H alors ADD B => ACC =09H


ADI 05H ; Si ACC =04H alors ADI 05H => ACC =09H
ADC C ; Si C=05H, ACC =04H Alors
; ADC C => ACC =09H Si CY = 0
; ADC C => ACC =0AH Si CY = 1
ACI 05H ; Si ACC =04H et CY= 0 alors ACI 05H => ACC =09H
; Si ACC =04H et CY= 1 alors ACI 05H => ACC =0AH
SUB E ; Si ACC = 00001010 B (0AH) et E = 00000101 B (05H)
; Alors : SUB E => ACC = 00000101 B (+05H)
; − E = 11111011 B en Complémentation à 2
; ACC = 00001010 B + 11111011 B = 00000101 B avec
; une Retenue 1 qu ’il faut l’ignorer
; en Complémentation à 2
; FLAGS : SF =0 ; ZF =0 ; AC =1 ; P =1 ; CY =0
SUI 01H ; Si ACC = 09H Alors SUI 01H => ACC = 08H
; FLAGS : SF =0 ; ZF =0 ; AC =1 ; P =0 ; CY =0
SBB B ; Si B= 02H, ACC= 04H et CY = 1 Alors SBB B =>
; ACC= 01H et
; FLAGS : SF =0 ; ZF =0 ; AC =1 ; P =0 ; CY =0
SBI 01H ; Si ACC= 02H et CY = 1 Alors SBI 01H => ACC =00H
; FLAGS : SF =0 ; ZF =1 ; AC =1 ; P =1 ; CY =0

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


64 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.13.

INR C ; Si C=99H Alors INR C => C = 9AH


DCR C ; Si C=99H Alors DCR C => C = 98H
INX D ; Si DE = 01 FFH Alors INX D => DE = 0200H
DCX D ; Si DE = 01 FFH Alors DCX D => DE = 01 FEH
DAD H ; S HL= 0420H Alors DAD H => HL = 0840H

3.3.3 Instructions logiques

Instruction Fonction Description (En Français)


ANA Logical AND with Accumulator ET logique avec l’accumulateur
ANI Logical AND with Accumulator ET logique de donnée immédiate
Using Immediate Data avec l’accumulateur
ORA Logical OR with Accumulator OU logique avec l’accumulateur
ORI Logical OR with Accumulator OU logique de donnée immédiate
Using Immediate Data avec l’accumulateur
XRA Exclusive Logical OR with XOR logique (Ou Exclusif) avec
Accumulator l’accumulateur
XRI Exclusive Logical OR Using XOR logique (Ou Exclusif)de
Immediate Data with donnée immédiate avec
Accumulator l’accumulateur

Exemple 3.14.

ANA B ; Si ACC = 10101010 B et B = 00001111 B


; Alors : ANA B => ACC = 00001010 B
ANI 11110111B ; Mise à 0 du bit 3 de l’ACC
ORA C ; Si ACC = 10101010 B et C = 00001111 B
; Alors : ORA C => ACC = 10101111 B
ORI 01000000B ; Mise à 1 du bit 6 de l’ACC
XRA D ; Si ACC = 10101010 B et D = 00001111 B
; Alors : ORA D => ACC = 10100101 B
XRI 00000100B ; Inverser le bit 2 de l’ACC

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 65

Comparaison entre l’accumulateur et une donnée sur 8 bits :

Instruction Fonction Description (En Français)


CMP Compare Comparer l’octet spécifié avec
l’accumulateur
CPI Compare Using Immediate Data Comparer donnée immédiate
avec l’accumulateur

Exemple 3.15.

CMP E ; Si ACC = 00001010 B (0AH) et E = 00000101 B (05H)


; Alors : CMP E => ZF = 0 ( Résultat Positive ) et
; CF = 0
CPI ’C’ ; Comparer le contenu de l’Acc à la lettre ’C’
; code ASCII C=(43H)

Rotation et décalage :

Décalage d’une position à droite ou à gauche le contenu de l’accumulateur

Instruction Fonction Description (En Français)


RLC Rotate Accumulator Pivoter à gauche le contenu de
Left l’accumulateur d’une position (Rotation à
gauche)
RRC Rotate Accumulator Pivoter à droite le contenu de
Right l’accumulateur d’une position (Rotation à
droite)
RAL Rotate Left Through Pivoter à gauche d’une position le contenu
Carry de l’accumulateur associé à la retenue
(Rotation à gauche de (ACC + CF))
RAR Rotate Right Pivoter à Droite d’une position le contenu
Through Carry de l’accumulateur associé à la retenue
(Rotation à gauche de (ACC + CF))

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


66 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.16.

RLC ; Si ACC = 10101010 B et CY= 0


; Alors RLC =>> ACC = 01010101 B et CY=1

Exemple 3.17.

RRC ; Si ACC = 10101010 B et CY= 0


; Alors RRC =>> ACC = 01010101 B et CY=0

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 67

Exemple 3.18.

RAL ; Si ACC = 10101010 B et CY= 0


; Alors RAL =>> ACC = 01010100 B et CY=1

Exemple 3.19.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


68 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

RAR ; Si ACC = 10101010 B et CY= 0


; Alors RAR =>> ACC = 01010101 B et CY=0

Instructions de complémentation

Instruction Fonction Description (En Français)


CMA Complement Accumulator Complémenter à un chaque bit
de l’accumulateur
CMC Complement Carry Flag Complémenter la retenue
STC Set Carry Flag Mettre à 1 la retenue

Exemple 3.20.

CMA ; Si ACC = 01010001 B (51H)


; Alors : CMA => ACC = 10101110 B (AEH)
CMC ; Si CY = 1 Alors CMC => CY = 0 ( Complémenter CY)
; Si CY = 0 Alors CMC => CY = 1 ( Complémenter CY)
STC ; Si CY = 1 Alors STC => CY = 1 (Mise à 1 de CY)
; Si CY = 0 Alors STC => CY = 1 (Mise à 1 de CY)

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 69

3.3.4 Instructions de branchements

3.3.4.1 Branchement inconditionnel

Instruction Fonction Description (En Français)


JMP Jump Brancher à une adresse (Faire un
saut à une adresse spécifiée) :
permet de charger l’adresse de
branchement dans le compteur
de programme (PC)
CALL Call Appeler un sous-programme :
Permet de stocker le contenu du
PC dans la pile et effectue un
saut à l’adresse spécifiée dans
l’instruction CALL
RET Return Retour : Permet de charger deux
octets à partir de la pile dans le
PC (Compteur de Programme)

Exemple 3.21.

Adr . Ins .

F820H JMP F950H ; Sauter à l’adresse F950H( Branchement Incon .)


F823H MOV B,C ; Cette instruction ne sera pas exécutée
. ; Le compteur programme sera chargée
. ; automatiquement par l’adresse de branchement
. ; c.−à−d. PC = F950H
F950H MOV C,B ; Cette instruction sera exécutée juste après
; l’ instruction JMP F950H

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


70 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.22.

Adr . Ins .

F820H CALL F950H; Appel d’un sous − programme


; situé à l’adr. F950H
F823H MOV B,C ; Cette instruction sera exécutée après
. ; l’ instruction RET (adresse F995H)
.
.
F890H HLT
.
F950H MOV C,B ; Cette instruction est exécutée juste après
. ; l’ instruction CALL F950H
.
.
F995H RET

N.B : L’instruction CALL est située à l’adresse F820H, l’adresse de retour stockée
dans le sommet de la pile est F823H.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 71

3.3.4.2 Branchement conditionnel :

Dans les instructions de branchements conditionnels, un examen (test) d’un ou


de plusieurs bits du registre d’états est effectué pour déterminer si la condition de
branchement (saut) est valide ou non. Les conditions qui peuvent être spécifiées sont
définies comme suit :

Condition Fonction Description (En Français)


NZ Not Zero (Z=0) Condition : bit Z=0
Z Zero (Z=1) Condition : bit Z=1
NC No Carry (C=0) Condition : bit CY=0
C Carry (C=1) Condition : bit CY=1
PO Parity Odd (P=0) Condition : Parité Impaire : bit
P=0
PE PE Parity Even (P=1) Condition : Parité Paire : bit
P=1
P Plus (S=0) Condition : bit S=0
M Minus (S=1) Condition : bit S=1

Ainsi, les instructions de branchements conditionnels sont spécifiées comme suit :

JUMPS CALLS RETURNS Condition Déscription


JC CC RC Carry Saut (ou Appel ou Retour) si : CY = 1
JNC CNC RNC No Carry Saut (ou Appel ou Retour) si : CY = 0
JZ CZ RZ Zero Saut (ou Appel ou Retour) si : Z = 1
JNZ CNZ RNZ Not zero Saut (ou Appel ou Retour) si : Z = 0
JP CP RP Plus Saut (ou Appel ou Retour) si : S = 0
JM CM RM Minus Saut (ou Appel ou Retour) si : S = 1
JPE CPE RPE Parity Even Saut (ou Appel ou Retour) si : P = 1
JPO CPO RPO Parity Odd Saut (ou Appel ou Retour) si : P = 0

Exemple 3.23. Cet exemple montre trois différentes méthodes mais elles sont équi-
valentes, pour sauter (brancher) à une des deux adresses de branchement (PLUS et
MOINS) dans un programme basé sur le test du bit signe d’un nombre donnée. Suppo-
sons que ce nombre se trouve dans le registre C.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


72 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

UN : MOV A,C ; Charger le mot à tester dans l’ACC


ANI 80H ; Opération => ACC = ACC AND 80H (Test bit 7)
JZ PLUS ; Saut à l’adresse PLUS si ZF=1
JNZ MOINS ; Saut à l’adresse MOINS si ZF=0
DEUX : MOV A,C ; Charger le mot à tester dans ACC
RLC ; Rotation à gauche : Bit 7 => CF
JNC PLUS ; Saut à l’adresse PLUS si CY=0
JMP MOINS ; Saut à l’adresse MOINS
TROIS : MOV A,C ; Charger le mot à tester dans ACC
ADI 0 ; Addition de 0 à ACC
JM MOINS ; Saut à l’adresse MOINS si SF=1
PLUS : . . .
MOINS :
Il existe deux autres instructions qui peuvent effectuer l’opération de branchement
par remplacement du contenu du compteur programme.

Instruction Fonction Description (En Français)


PCHL Move H and L to Program Copier le contenu des registres H
Counter et L dans le compteur de
Programme (PC)
RST Special Restart Instruction Used Redémarrage spécial utilisé avec
with Interrupts les interruptions

Exemple 3.24.

Adr . I n s .

F820H LXI H, F950H; Charger HL par l’ adresse F950H


F823H PCHL ; Copier le contenu de HL dans le PC
F824H MOV B,C ; Cette instruction ne sera pas exécutée
. ; Car le compteur programme est chargée par
. ; le contenu de HL : PC = F950H
.
F950H MOV C,B ; Cette instruction sera exécutée
; juste après l’ instruction PCHL

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 73

3.3.5 Instructions de gestion de la pile et des entrées/sorties


3.3.5.1 Instructions de gestion de la pile

Instruction Fonction Description (En Français)


PUSH Push Two Bytes of Data onto Empiler deux octets de données
the Stack dans la pile
POP Pop Two Bytes of Data off the Désempiler deux octets de
Stack données de la pile
XTHL Exchange Top of Stack with H Échanger le sommet de la pile
and L avec les registres H et L
SPHL Move contents of H and L to Déplacer (copier) le contenu des
Stack Pointer Déplacer registres H et L dans le SP
(Pointeur de pile)
Exemple 3.25. Soit le programme suivant avec D=09H et E=FAH. Montrer le contenu
de la pile après l’exécution de l’instruction PUSH.

LXI SP, 0 0 0 0H ; Charger SP par la valeur 0000H


PUSH D ; Stocker le contenu de D dans la pile
; SP = 0000H ; Il sera décrémenter de 1 pour
; stocker le premier octet (0000 −1= FFFF)
; et décrémenter encore une fois pour stocker
; le deuxième octet (FFFF −1= FFFE)

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


74 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

Exemple 3.26. Échanger le contenu de la paire de registre DE avec celui de la paire


de registre HL, en utilisant les instructions PUSH et POP.

PUSH D ; Stocker le contenu de D dans la pile


PUSH H ; Stocker le contenu de H dans la pile
POP D ; Charger le contenu de D à partir de la pile
POP H ; Charger le contenu de H à partir de la pile
; POP : Opération inverse de PUSH

3.3.5.2 Instructions de gestion des entrées/sorties

Instruction Fonction Description (En Français)


IN Initiate Input Operation Lancer une opération d’entrée :
lecture d’un octet sur un port
d’entrée spécifié et le charger
dans l’accumulateur
OUT Initiate Output Operation Lancer une opération de sortie :
écriture d’un octet
(accumulateur) sur un port de
sortie spécifié

Exemple 3.27.

MVI A, AAH; Charger l’ACC par la valeur à envoyer au port


OUT EFH ; Écriture de la valeur de AAH (contenu de
; l’ACC) sur le port dont l’adresse est FEH

IN EFH ; Soit le contenu du port dont l’adresse est


; EFH égal à BCH
; Après l’ execution de IN EFH => ACC =BCH

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 75

Instructions du contrôle du processeur

Instruction Fonction Description (En Français)


EI Enable Interrupt System Activer le système d’interruption
DI Disable Interrupt system Désactiver le système
d’interruption
HLT Halt Stop (Arrêter le processeur)
NOP No Operation Pas d’opération

Exemple 3.28. On désire contrôler une LED par un system à base de processeur
8085/8155 (figure 3.8). Si V1 >V2 (connecté à l’entrée INTR), le système lit l’état
d’un interrupteur connecté au port B du port parallèle 8155. Si ’interrupteur est ouvert
(entrée au niveau HAUT), on met la LED à l’état OFF et si l’interrupteur est fermée
(Entrée au niveau BAS) on met la LED à l’état ON.

Figure 3.8 – Contrôle d’une LED par un système à base de 8085/8155.

Solution :

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


76 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

#ORG 0030H; Vecteur d’ adresse de INTR


JMP 3000H ; Sauter au sous − programme de INTR
BEGIN MVI A, 0CH ; Charger l’ACC par la valeur à envoyer au port
OUT PORTC ; Initialiser le bit 5 du port C (LED OFF)
EI ; Activer l’ interruption INTR
LOOP NOP ; Attente de la requête d’ interruption INTR
JMP LOOP ;
ORG 3000H ; Entrée du sous − programme INTR
IN PORTB ; Lecture du port B (L’état de l’ Interrupteur )
XRI 02H ; Inverser la donnée d’entrée
RAL ; Déplacer la donnée du bit 1 au bit 5
RAL ;
RAL ;
RAL ;
OUT PORTC ; Écriture sur port C (Mettre ON/OFF la LED)
JMP BEGIN ; Boucler

Instructions RIM et SIM


RIM (Read Interrupt Mask) :

Lorsque l’instruction RIM est exécutée, l’état du SID (bit d’entrée série), des in-
terruptions en attente et des drapeaux associés aux interruptions sont chargés dans
l’accumulateur. Ainsi, leur état peut être surveillé car il peut donc arriver que lorsque
l’une des interruptions est en cours d’exécution, une (ou plusieurs) autre(s) interrup-
tion(s) peut (peuvent) aura (auront) lieu.
Vocabulaire à retenir
✓ Pending Interrupt : Interruption en attente
✓ Enable : Activer
✓ Disable : Désactiver
✓ SID (Serial Input Data) : Entrée de donnée série
✓ Falg : Drapeau
✓ Masked : Masquée (Interruption non autorisée ou désactivée)
✓ Unmasked : Non masquée (Interruption autorisée ou activée)

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 77

Figure 3.9 – Format d’une instruction RIM

Instruction SIM (Set Interrupt Mask) :

SIM est une instruction à usages multiples qui utilise le contenu actuel de l’accumu-
lateur pour effectuer les fonctions suivantes : définir la configuration du masquage des
interruptions hardware RST 7.5, RST 6.5, RST 5.5 ; activer ou désactiver le transfert
de données via la sortie de donnée série SDO.

Figure 3.10 – Format d’une instruction SIM

✓ Les bits D7 et D6 sont utilisés pour émettre en série des données à partir de l’ac-
cumulateur. Le bit SOE est le bit de contrôle du transfert de donnée série (SOE =
1 : Activer le transfert de données série) ;
✓ D5 : non utilisé
✓ Les bits D0-D4 sont utilisés pour le contrôle des interruptions.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


78 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

✓ Le bit D4 peut être utilisé comme RESET de la bascule associée avec RST 7.5.

✓ Le bit D3 (MSE : Mask Set Enable) est utilisé pour activer ou désactiver les inter-
ruptions. Pour masquer (désactiver) une quelconque de ces trois interruptions, le bit
MSE doit être 1.

✓ Les bits D2 à D0 sont les bits de masquage correspondant aux interruptions RST
7.5, RST 6.5 et RST 5.5 respectivement.

Exemple 3.29. Pour masquer RST 7.5 (désactivée) et activer RST6.5 et 5.5 (activées),
alors le contenu des bits de l’instruction SIM sera comme suit :

0000 1100 = 0CH

Pour réaliser cela, il nous faut deux instructions :


MVI A, 0CH
SIM
L’exécution de l’instruction SIM permet de copier le contenu de l’accumulateur dans
le registre associé au contrôleur des interruptions.

Exemple 3.30. On désire contrôler la LED de la figure 3.8 cette fois-ci uniquement par
l’entrée SID (lire l’état de l’interrupteur) et la sortie série SOD (commander la LED).

#ORG 5000H
BEGIN RIM ; Bit 7 de l’ACC est le SID
ORI 40H ; Mettre SOE =1 (activé SOD)
SIM ; Envoie de donnée sur SOD(Mettre ON/OFF la LED)
JMP BEGIN ; Boucler

3.3.6 Exemple de programmation en assembleur 8085

Exemple 3.31. Écrire un programme en assembleur 8085 qui calcule la somme :

S = 1 + 2 + 3 + . . . . . . . . . . . . . . . . . . . . . .. + N

Solution :

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 79

#ORG 0000H
#BEGIN 0000H
0000: MVI C, 0 9H ; Exemple pour N=9 : Charger le compteur par N=9
0002: XRA A ; Initialiser l’ACC à 0
0003: MVI B, 0 1H ;
0005: ADD B ; ACC <= ACC + B
0006: INR B ; B = B +1
0007: DCR C ; Décrémenter le compteur C pour
0008: JNZ 0005H ; Refaire si ZF=0 ( Compteur /=0)
000B: HLT

Exemple 3.32. Écrire un programme en assembleur 8085 qui permet d’additionner


avec l’accumulateur une donnée dont la valeur est égale à 0FH se trouvant à l’adresse
mémoire 3050H, référenciée par la paire de registre HL. Le résultat doit être stocké à
l’adresse mémoire 2050H. Le contenu de l’accumulateur est supposé égal à 14H.

Solution :

#ORG 3050H
#DB 0FH
#ORG A000H
#BEGIN A000H
A0000 : MVI A, 14H
A0002 : LXI H, 3050H
A0005 : ADD M
A0006 : STA 2050H
A0009 : HLT

Exemple 3.33. Écrire un programme en assembleur 8085 qui permet de complémenter


à 2 le nombre FFH se trouvant à l’adresse mémoire 2000H. Le résultat doit être stocké
à l’adresse 3015H.

Solution :

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


80 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

#ORG 2000H
#DB FFH
#ORG A000H
#BEGIN A000H
A000 : LDA 2000H
A003 : CMA
A004 : ADI 01H
A006 : STA 3015H
A009 : HLT

3.3.7 Annexe : Jeu d’instruction 8085

Références :

✓ Lance A. Leventhal & Winthrop Saville, et al 8080/8085 Assembly Language.

✓ Intel 8080/8085 Assembly Language Programming Manual

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 81

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


82 CHAPITRE 3: ÉTUDE D’UN MICROPROCESSEUR 8 BITS

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


3.3. JEU D’INSTRUCTION DU 8085 83

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


Cette page a été laissée intentionnellement vide
CHAPITRE 4

LES INTERFACES
D’ENTRÉES/SORTIES

4.1 I NTRODUCTION

Une interface d’entrées/sorties est un circuit intégré permettant au microproces-


seur de communiquer avec l’environnement extérieur (périphériques) : clavier, écran,
imprimante, modem, disques, processus industriel...
Les interfaces d’E/S sont connectées au microprocesseur à travers les bus d’adresses,
de données et de commandes.
Chaque périphérique est relié donc au système par l’intermédiaire d’une interface
(ou contrôleur) dont le rôle est de :

✓ Connecter le périphérique au bus de données


✓ Gérer les échanges entre le microprocesseur et le périphérique

Les points d’accès aux interfaces sont appelés ports.

4.2 A DRESSAGE DES PORTS D ’E/S

Un circuit d’E/S possède des registres pour gérer les échanges avec les périphériques :
✓ Registres de configuration ;
✓ Registres de données.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


86 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

À chaque registre est assigné une adresse : le microprocesseur accède à un port d’E/S
en spécifiant l’adresse de l’un de ses registres.
Le microprocesseur peut voir les adresses des ports d’E/S de deux manières :

✓ Adressage cartographique : les adresses des ports d’E/S appartiennent au même


espace mémoire que les circuits mémoire (on dit que les E/S sont mappées en
mémoire) :

✓ Adressage indépendant : le microprocesseur considère deux espaces distincts :

— L’espace d’adressage des mémoires ;

— L’espace d’adressage des ports d’E/S.

4.3 L’I NTERFACE PARALLÈLE PROGRAMMABLE 8255A

Le 8255A (Programmable Peripheral Interface : PPI) est un circuit d’entrée/-


sortie parallèle (figure 4.1) de la famille INTEL sous forme de boiter de 40 broches. La
figure 4.2 reproduit le brochage de ce boitier.

Figure 4.1 – Circuit d’entrées/sorties parallèle 8255A.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 87

Figure 4.2 – Schéma de brochage du 8255A.

Cette interface comprend trois registres de 8 bits A, B et C appelés ports et un


registre de commande. Le schéma fonctionnel de ce composant est représenté sur la
figure 4.3.

L’interfaçage du 8255A au microprocesseur (figure 4.4) est simple. Ainsi, le micro-


processeur a la possibilité d’écrire ou de lire dans les registres internes du 8255A. Le
tableau de la figure 4.5 donne un résumé du mode d’accès à ces registres.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


88 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Figure 4.3 – Schéma fonctionnel du 8255A

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 89

Figure 4.4 – Interfaçage du microprocesseur 8085 au 8255A.

Figure 4.5 – Accès aux registres du 8255A.

4.3.1 Modes de fonctionnement du PPI 8255A

Le 8255A possède trois modes de fonctionnement qui sont : le mode 0, le mode 1 et


le mode 2 (figure 4.6).

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


90 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Figure 4.6 – Configuration de sortie des trois modes du 8255A.

Les ports A et B peuvent être programmés pour fonctionner selon des modes diffé-
rents. Les lignes P C4 − P C7 sont configurés selon le mode programmation du port A
et les lignes P C0 − P C3 sont configurés selon le mode de programmation du port B.
L’étude du registre de commande (figure 4.7) permet de programmer les configurations
d’accès dans les différents modes du 8255A.

4.3.1.1 Fonctionnement en Mode 0 :

Ce mode o est un mode d’E/S de base, appelé parfois de bits. Dans ce cas, le circuit
possède 24 E/S réparties en quatre groupes :
✓ Port A : 8 E/S
✓ Port B : 8 E/S
✓ Port C (supérieur) : 4 E/S

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 91

Figure 4.7 – Définition des bits de commande du 8255A.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


92 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

✓ Port C (inférieur) : 4 E/S

Selon l’application souhaitée, chaque groupe doit être déclaré en entrée ou en sortie.
Autrement dit, il s’agit de la programmation des E/S du 8255A. Celle-ci consiste à
déterminer le mot de commande (figure 4.6). Une fois celui-ci transféré dans le re-
gistre de commande, les données peuvent être échangées entre le microprocesseur et ses
périphériques via cette interface 8255A.
Remarque : il est important de noter que le sens de circulation des données doit être
le même pour tous les bits d’un port. Le port C est partagé en deux et peut donc
être défini comme étant constitué de 8 entrées ou 8 sorties, ou 4 entrées, 4 sorties et
pas autrement.
Cependant on peut positionner un bit du port C à 1 ou à 0 individuellement. Dans
ce cas le bit 7 du registre de commande doit être mis à 0. Le tableau suivant illustre
cette possibilité de programmation.

Figure 4.8 – Positionnement à 1 ou à 0 d’un bit du port C du 8255A.

4.3.1.2 Fonctionnement en Mode 1

Ce fonctionnement peut se faire en mode programmé ou en mode interruptible. Les


signaux de dialogue de ce mode sont les suivants :

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 93

✓ Donnée PRÊTE :

— Pour une entrée de données :


=> PC4 pour le groupe A
— (ST B) (STROBE)
=> PC2 pour le groupe B

— Pour une sortie de données :


=> PC7 pour le groupe A
— (OBF ) (OUTPUT BUFFER FULL)
=> PC1 pour le groupe B

✓ Donnée REÇUE :

— Pour une entrée de données :


=> PC5 pour le groupe A
— (IBF ) (INPUT BUFFER FULL)
=> PC1 pour le groupe B

— Pour une sortie de données :


=> PC6 pour le groupe A
— (ACK) (ACKNOWLEDGE)
=> PC2 pour le groupe B

Remarque : Ce mode n’est possible que pour des E/S unidirectionnelles

Mode 1 en Entrée Lorsque le périphérique a une donnée à transmettre au micropro-


cesseur, il envoie le signal (ST B) (Donnée Prête) qui doit être une impulsion négative
dont le front avant fait monter à 1 le signal de réponse IBF (Donnée Reçue) et mémorise
les données d’entrées.
Le front arrière de ce signal fait passer à 1 le signal de demande d’interruption
(INTR). À cet instant les données étant valides, une interruption peut avoir lieu. Le
signal de lecture qui résultera de cette interruption acquittera le signal IBF (Donnée
Reçue) et donc la demande d’interruption.
C’est le signal (ST B) qui déclenche donc cet échange d’information. La figure 4.9
met en évidence ce mode dialogue ("HANDSHAKING").

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


94 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Figure 4.9 – Mode de dialogue (Handshaking) en entrée (Mode 1).

Le signal ST B est à l’origine du dialogue dans le mode 1 en entrée et qui effectue


les opérations suivantes :

✓ Une commande de verrouillage de la donnée dans le verrou d’entrée de l’interface


8255A

✓ Une demande d’interruption adressé à l’interface qui répercute au microprocesseur


en activant INTR si la bascule INTE est mise à 1

✓ Le positionnement à 1 du bit d’état INTR du registre d’état.

NB : On note que le mode 1 peut être utilisé en mode programmé avec test d’état sur
le bit d’état INTR.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 95

Figure 4.10 – Fonctionnement du 8255 en Mode 1 (Entrée).

Mode 1 en sortie Comme il s’agit dans ce mode d’un transfert vers un périphé-
rique de sortie, l’initiative du transfert revient au microprocesseur lorsqu’il rencontre
l’instruction d’écriture du premier octet à transférer dans l’interface.

Cet échange de données se fait comme suit :

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


96 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Figure 4.11 – Le 8255A utilisé en sortie dans le Mode 1 interruptible.

✓ Envoie du premier octet par le microprocesseur dans l’interface.


✓ Autorisation d’interruption envoyée à l’interface pour le port d’E/S concerné
✓ Envoie du signal "Donnée prête" (OBF ) (Output Buffer Full) de l’interface vers
le périphérique. Ce signal peut éventuellement être utilisé comme commande de
verrouillage
✓ Envoie du signal "Donnée Reçue" (ACK) (Acknowledge) du périphérique vers
l’interface lorsque le périphérique est à nouveau disponible. Ce signal positionne à 1
le bit d’état INTR, active la demande d’interruption et désactive le signal (OBF )
✓ La demande d’interruption reçue par le microprocesseur entraine l’envoi d’un autre
octet.
✓ Le processus continue ainsi jusqu’à ce que terminer le transfert des données. Lors
du transfert du dernier octet, ce que le microprocesseur détecte par un test, le mi-
croprocesseur inhibe les interruptions pour le port concerné de l’interface 8255A. Le
transfert est alors terminé et il peut être renouvelé si le programme le renvoie. Les
chronogrammes des différents signaux sont donnés sur la figure 4.11.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 97

Figure 4.12 – Fonctionnement du 8255 en Mode 1 (Sortie)

4.3.1.3 Fonctionnement en Mode 2 :

Ce mode est identique au mode 1 en ce qui concerne le chronogramme des signaux


de dialogue. Par contre il est prévu pour un échange de données bidirectionnel entre
l’interface et le périphérique. Le port A est seul habilité à fonctionner en mode 2. Les
signaux de dialogue sont au nombre de cinq qui sont : IN T RA , ST BA , IBFA , ACKA
et OBFA .

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


98 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

4.3.2 Registre d’état du 8255A

Le registre d’état est le port C du 8255A dans les modes 1 et 2. Le contenu de ce


registre donne l’état des signaux de dialogue au moment de la lecture. Ce contenu est
indiqué dans les tableaux de la figure suivante.

Mode 1 en D7 D0
Entrée E/S E/S IBFA IN T EA IN T RA IN T EB IBFB IN T RB

Mode 1 en D7 D0
Sortie OBFA IN T EA E/S E/S IN T RA IN T EB OBFB IN T RB

D7 D0
Mode 2
OBFA IN T E1 IBFA IN T E2 IN T RA X X X

Registre d’état du 8255A

NB : X : bits du groupe B définis par le mode choisi pour le port B.

Remarque : chaque interface 8255 contient deux demandes d’interruption IN T RA


pour le groupe A et IN T RB pour le groupe B. Mais il est possible d’interdire ou
d’autoriser un périphérique à interrompre le microprocesseur en positionnant respecti-
vement à 0 ou à 1 une bascule spécifique désignée par INTE (Interrupt Enable). Ce
positionnement se fera en initialisant à 0 ou à 1 l’un des bits du port C.

✓ PC4 pour IN T EA , PC2 pour IN T EB en mode 1 Entrée.

✓ PC6 pour IN T EA , PC2 pour IN T EB en mode 1 Sortie

✓ PC4 pour IN T E2 en mode 2 Entrée (INTE associé à IBF)

✓ PC6 pour IN T E1 en mode 2 Sortie (INTE associé à OBF).

Ainsi pour inhiber les interruptions relatives au port A, en mode 1 sortie, il faudra
initialiser P C6 à zéro.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.3. L’INTERFACE PARALLÈLE PROGRAMMABLE 8255A 99

4.3.3 Exemple de programmation du 8255A

Exemple 4.1. On admet que l’adresse du registre de commande du circuits 8255A est
83H. Écrire un programme en assembleur pour initialiser le 8255A avec :

✓ Port A : en Entrée
✓ Port B : en Sortie ;
✓ Port C inférieur : en Sortie ;
✓ Port C supérieur : en Entrée.

Solution :

D7 D0
1 0 0 1 1 0 0 0
Mot de commande = 98H

MVI A, 9 8H
OUT 83H

Exemple 4.2. On admet que l’adresse du registre de commande du circuits 8255A est
23H. Écrire un programme en assembleur pour initialiser le 8255A avec :

✓ Port A : en Sortie avec Handshaking mode


✓ Port B : en Entrée avec Handshaking mode ;
✓ Port C inférieur : en Sortie ;
✓ Port C supérieur : en Entrée.

Solution :

D7 D0
1 0 1 0 1 1 1 0
Mot de commande = AEH

MVI A,AEH
OUT 23H

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


100 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

4.4 I NTERFACE SÉRIE

Une interface série permet d’échanger des données entre le microprocesseur et un


périphérique bit par bit.
La transmission de données en série peut se concevoir de deux façons différentes :

✓ En mode synchrone, l’émetteur et le récepteur possède une horloge synchronisée


qui cadence la transmission. Le flot de données peut être ininterrompu.

✓ En mode asynchrone, la transmission s’effectue au rythme de la présence des don-


nées. Dans ce type de transmission, chaque caractère est précédé d’un bit de début
(appelé bit START) et d’un bit de fin (bit STOP). Ces bits de contrôle, néces-
saires pour une transmission série, gaspillent 20% de la bande passante (pour 8 bits
envoyés, 2 servent à assurer la réception).

La transmission asynchrone la plus utilisée est celle qui est définie par la norme RS232.
Un circuit intégré d’interface série asynchrone s’appelle un UART (Universal
Asynchronous Receiver Transmitter), tandis qu’une interface série synchrone/a-
synchrone est un USART.
Exemples d’interfaces séries : 8251 (Intel) ; 8250 (National Semiconductor) ;
6850 (Motorola).

4.5 L’ INTERFACE SÉRIE 8251A

L’USART 8251A est une interface série asynchrone et synchrone (Universal Synchronous
Asynchronous Receiver Transmitter ). Le schéma bloc du 8251A est donné par la Figure
suivante.
Le registre de données (Data buffer Bus) assure la liaison entre le bus de données
du microprocesseur et les registres internes du circuit. À l’entrée les bits arrivent en série
sur la broche RxD, ils sont décalés dans le registre Recieve Buffer où ils seront acquis
par le microprocesseur. Inversement en sortie, la donnée arrive au registre Transmit
Buffer où on leur ajoute les bits de synchronisation nécessaire avant de les envoyer en
série sur la ligne TxD.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.5. L’INTERFACE SÉRIE 8251A 101

Figure 4.13 – Schéma bloc de l’USART 8251A.

4.5.1 Sélection des registres du 8251A

Le 8251A dispose de 5 registres divisés en deux groupes : registres de contrôles et


registres de données (sélectionnés par la ligne C/D : Control/Data).

✓ Le groupe contrôle comporte le registre de mode, le registre de contrôle et le registre


d’état. Ces registres sont sélectionnés lorsque la ligne C/D = 1.

✓ Le groupe de données comporte le registre Buffer Data In et Buffer Data Out. Ils
sont sélectionnés lorsque la ligne C/D = 0.

Le Tableau suivant présente la sélection des registres.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


102 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

CS C/D RD WR Sélection
1 X X X Le 8251A n’est pas sélectionné
0 1 0 1 Lecture du registre d’état
0 1 1 0 Écriture dans le registre de mode ou de contrôle
0 0 0 1 Lecture du registre Buffer Data In
0 0 1 0 Écriture dans le registre Buffer Data Out

Sélection des registres du 8251A

4.5.2 Registres de configuration

Il existe deux registres de configuration : le registre de mode et le registre de


contrôle.

4.5.2.1 Registre de mode

L’écriture dans le registre de mode ne se fait qu’après un RESET interne ou externe.


On définit dans ce registre :
✓ Le mode asynchrone ou synchrone,
✓ Le nombre de bits de Stop,
✓ La longueur du caractère,
✓ Le bit de parité,
✓ Le facteur de débit,
✓ La vitesse de transmission est égale à la fréquence d’horloge appliquée aux entrées
TxC et RxC divisé par le facteur de débit (1, 16 ou 64).

4.5.2.2 Registre de contrôle

L’accès au registre de contrôle se fait après l’exécution de la séquence d’initialisation ;


il permet de :
✓ Valider ou inhiber l’émission,
✓ Valider ou bloquer la réception,
✓ Activer ou désactiver les broche (DT R) et (RT S) pour le contrôle de flux,
✓ Envoyer un caractère break,
✓ Effacer les bits d’erreur dans le registre d’état,

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.5. L’INTERFACE SÉRIE 8251A 103

✓ Provoquer un RESET interne (ou logicielle),


✓ Détection du caractère de synchronisation (mode synchrone)

D7 D0
S2 S1 EP PEN L2 L1 B2 B1

Configuration du registre de mode

L2 L1 Longueur du caractère B2 B1 Vitesse en bauds


0 0 5 bits 0 0 Mode Asynchrone
0 1 6 bits 0 1 Fréquence Clock
1 0 7 bits 1 0 Fréquence Clock/16
1 1 8 bits 1 1 Fréquence Clock/64

S2 S1 Bits de stop
0 0 Invalide
0 1 1 bits
1 0 1.5 bits
1 1 2 bits

EP (Even Parity : PEN (Parity


Contrôle de parité
parité paire) Enable)
X 0 Pas de génération de bit de
parité
0 1 Parité Paire
1 1 Parité Impaire

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


104 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

D7 D0
EH IR RTS ER SBRK RxE DTR TxEN

Registre de Contrôle

Bit Signification
TxEN Ce bit à 1 autorise la transmission
DTR Un niveau 1 force la sortie (DT R) à 0
RxE Ce bit à 1 autorise la réception
SBRK Send Break caractère : Un niveau 1 force la sortie TxD à 0
ER Error Reset : Un niveau 1 remet à 0 les indicateurs d’erreur du mot
d’état : PE — 0E — FE.
RTS Un niveau 1 force la sortie à 0
IR Internal Reset : Un niveau 1 a la même action que l’entrée RESET et
permet de reprogrammer le 8251 en lui envoyant un nouveau mot de sélection
de mode
EH Enter Hunt : Un niveau 1 autorise la recherche du mot de synchronisation
en mode synchrone

Remarque : Lors de la mise sous tension le 8251A pourrait se trouver au niveau du


registre de mode, du caractère de synchronisation ou du registre de contrôle ; afin de
bien initialiser le 8251A le constructeur recommande d’écrire trois 00H consécutifs
à l’adresse (A0) C/D = 1 avant l’exécution de la séquence d’initialisation. Le reset
interne pourrait alors suivre : écrire 40H dans le registre de contrôle.

4.5.3 Registre d’état (Status)

Le registre d’état est à lecture seule, le format de ce registre est donné par le tableau
suivant.

D7 D0
DSR SYNDET/BRKDET FE OE PE TxEMPTY RxRDY TxRDY

Registre d’état

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.5. L’INTERFACE SÉRIE 8251A 105

Bit Signification
TXRDY TXRDY à 1 indique que le buffer d’émission est vide, ce bit se remet à 0
lorsque le microprocesseur écrit un caractère
RXRDY RXRDY à 1 indique que le buffer de réception contient un caractère. La
lecture du caractère par le microprocesseur remet ce Flag à 0
TXEMPTY TXEMPTY à 1 indique que le registre de décalage émetteur (TSR) est vide,
le front descendant du signal WR le remet à 0
PE PE à 1 indique qu’il y a une erreur de parité
OE OE à 1 indique qu’il y a une erreur de débordement (vitesse non conforme)
FE FE à 1 indique qu’il y a une erreur de format
SYNDET/
SYNDET/BD, en mode synchrone elle se met à 1 lors de la détection d’un
BRKDET
caractère de synchronisation ; en mode asynchrone elle indique la réception
d’un Break Data. Ce bit se remet à 0 lorsque la ligne RD repasse à 1
DSR DSR à 1 indique que le modem est en fonctionnement

4.5.4 Exemple de programmation du 8251A

Exemple 4.3. On admet que l’adresse de base du circuits 8251 est FFH. Écrire un
programme en assembleur pour initialiser le 8251A avec les spécifications suivantes :

✓ Longueur des caractères : 6 bits ;


✓ Parité paire ;
✓ Vitesse de transmission : Clock/64 ;
✓ Bit Stop : 1
✓ DTR et STR activés ;
✓ Error Flag : Reset ;
✓ Transmission : Activée
Solution :

D7 D0
0 1 1 1 0 1 1 1
Mot de Mode = 77H

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


106 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

D7 D0
0 0 1 1 0 0 1 1
Mot de commande = 33H

MVI A, 0 0H
OUT FFH
OUT FFH
OUT FFH
MVI A, 40H ; Mot de contrôle pour Reset
OUT FFH ; Initialiser le 8251A
MVI A, 77H ; Initialisation du Mot de Mode
OUT FFH ;
MVI A, 33H ; Initialisation du Mot de Contrôle
OUT FF ;

Figure 4.14 – Exemple d’Interfaçage 8251A avec le microprocesseur 8085.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.6. LE TIMER D’INTERVALLE PROGRAMMABLE 8253/8254 107

4.6 L E T IMER D ’ INTERVALLE PROGRAMMABLE 8253/8254

Les Timers/compteurs sont des périphériques de gestion de temps ; ils sont utilisés
souvent pour la génération des signaux de synchronisation et de commande avec une
grande précision.
Le Timer 8253 de Intel est un circuit constitué de trois circuits de comptage iden-
tiques de 16 bits, possédant chacun deux entrées CLK et GATE et une sortie OUT.
Pour faire fonctionner un compteur, un compte sur 16 bits est chargé dans ses
registres et, sur commande, il commence à décompter jusqu’à atteindre 0. À la fin du
compte, il génère une impulsion pouvant être utilisée pour interrompre le processeur.
Le compteur peut compter soit en binaire ou BCD et peut être lu par le processeur
pendant le décomptage.

Figure 4.15 – Schéma bloc du 8253/5254.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


108 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Le Timer 8253/54 est sélectionné par un niveau bas sur l’entrée (CS). Lorsqu’il
n’est pas sélectionné, les entrées du buffer de données sont en état Haute impédance.
Les lignes A0 et A1 (figure 4.15) sont utilisés pour la sélection de l’un de trois compteurs
ou du registre de contrôle comme illustré par le Tableau de la figure suivante.

CS A0 A1 Séléction
0 0 0 Compteur 0
0 0 1 Compteur 1
0 1 0 Compteur 2
0 1 1 Registre de contrôle
1 X X Le 8253 N’est pas sélectionné

Sélection des compteurs et du registre de contrôle du 8253

Chaque circuit de comptage possède un registre de contrôle, un registre d’état


(Status), un registre compteur CR pour recevoir le compte initial, un élément comp-
teur CE effectuant le décomptage mais non accessible par le microprocesseur et enfin
un Latch de sortie OL pour verrouiller le contenu du compteur et le rendre disponible
pour la lecture. En plus, le 8253/54 possède six modes de fonctionnement.

4.6.1 Programmation du 8253

Après la mise sous tension, le 8253/54 se trouve dans un état indéfini, le mode de
fonctionnement, le compte initial et l’état de sorties des compteurs ne sont pas définis.
La procédure de programmation de chaque compteur consiste à écrire dans l’ordre le
mot de commande dans le registre de contrôle ensuite le compte d’initialisation dans
le registre CR. Le registre d’entrée CR est un registre 16 bits ce qui oblige à écrire la
donnée en deux temps (poids faible d’abord).

D7 D0
SC1 SC0 RW1 RW0 M2 M1 M0 BCD

Registre de commande du 8253

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.6. LE TIMER D’INTERVALLE PROGRAMMABLE 8253/8254 109

SC1 SC0 Sélection du


compteur
BCD BCD/Binaire
0 0 Compteur 0
0 Compteur Binaire (16-bits)
0 1 Compteur 1
1 Compteur BCD (4 décades)
1 0 Compteur 2
- Illegal pour 8253
1 1
- Commande Read-Back
pour le 8254

M2 M1 M0 MODE
RW1 RW0 Lecture/Ecriture
0 0 0 Mode 0
Verrouillage du contenu du
0 0 1 Mode 1 0 0
compteur
X 1 0 Mode 2
0 1 Lire/Ecrire LSB seulement
X 1 1 Mode 3
1 0 Lire/Ecrire MSB seulement
1 0 0 Mode 5
1 1 Lire/Ecrire LSB, ensuite MSB
1 0 1 Mode 6

4.6.2 Modes de fonctionnement du PIT 8253/54

Le 8253/54 possède six modes de fonctionnement permettant de satisfaire la plupart


des applications industrielles tels que la génération des temporisations, des signaux de
synchronisation, des signaux périodiques impulsionnels et carré, des signaux MLI par
combinaison de deux modes . . .etc. L’entrée Gate est utilisée dans les modes 1 et 5 pour
déclencher le décomptage ; alors que dans les autres modes pour bloquer le décomptage.
Remarque :
✓ GATE = 1 valide le comptage (décomptage)
✓ GATE = 0 le suspend mais il n’a aucun effet sur la sortie OUT.

4.6.3 Exemple de programmation du 8253

Exemple 4.4. Écrire un programme en assembleur pour initialiser le compteur 2 en


mode 0 avec chargement du compte FFAAH. Sachant que les adresses des ports sont
comme suit :

✓ Compteur 0 : 08H

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


110 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

✓ Compteur 1 : 09H
✓ Compteur 2 : 0AH
✓ Registre de commande : 0BH.

Solution :

D7 D0
SC1 SC0 RW1 RW0 M2 M1 M0 BCD
1 0 1 1 0 0 0 0
B0H

MVI A, B0H ; Charger le mot de contrôle dans l’ Accumulateur


OUT 0BH ; Charger le mot de contrôle dans le registre de
; Commande
MVI A, AAH ; Charger le poids faible du compte à charger
OUT OAH
MVI A, FFH ; Charger le poids Fort du compte à charger
OUT OAH

4.7 C ONTRÔLEUR PROGRAMMABLE D ’ INTERRUPTIONS 8259

Ce circuit a été conçu pour le microprocesseur 8085 (figure 4.16). Sa version 8259A a
été utilisée dans les PC qui n’avaient que 8 entrées d’interruptions physiques numérotées
de 0 à 7.
Le 8259A (Programmable Interrupt Controller : PIC) peut accepter les in-
terruptions de 8 sources externes (figure 4.17), et on peut gérer jusqu’à 64 sources
différentes en cascadant plusieurs 8259A. Il gère la priorité entre les interruptions
simultanées, interrompt le processeur et lui passe un code pour identifier la source d’in-
terruption. Une source d’interruption est connectée à chacune des 8 entrées IR0 à IR7.
Selon sa priorité, et s’il n’y a pas d’autre interruption en cour, le PIC décide s’il peut
transmettre l’interruption au CPU. Si oui, il affirme la ligne INT, qui est connectée
à l’entrée INTR (Interrupt Request) du CPU. Si le CPU est prêt à accepter l’in-
terruption, il répond au PIC via la ligne INTA (Interrupt Acknowledge). Le PIC
répond à son tour en envoyant le numéro d’interruption sur les lignes D0 à D7 . Ce

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


4.7. CONTRÔLEUR PROGRAMMABLE D’INTERRUPTIONS 8259 111

numéro est un index dans la table des vecteurs d’interruption. Le CPU est mainte-
nant prêt à appeler le sous-programme de traitement d’interruption approprié. Quand
le sous-programme de traitement d’interruption a terminé son exécution, il en avertit
le PIC pour qu’il puisse permettre à d’autres interruptions d’atteindre le CPU.

Figure 4.16 – Interfaçage 8085 avec le PIC 8259.

Figure 4.17 – Schéma bloc du 8259.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


112 CHAPITRE 4: LES INTERFACES D’ENTRÉES/SORTIES

Registres Internes du PIC 8259A

✓ IRR : Interrupt Request Register (Registre de demande d’interruption) : Est


un registre sur 8 bits qui reçoit les 8 lignes de demandes d’interruption et mémorise
chacune d’elles (demandes interruption), en positionnant à 1 le bit correspondant.
✓ ISR : Interrupt Service Register (Registre d’Interruption en Service) : Est un
registre sur 8bits marquant les interruptions en service, en positionnant à 1 le bit
correspondant.
✓ IMR : Interrupt Mask Register (Registre de Masquage des Interruptions) : Est
un registre sur 8 bits permettant de masquer les demandes d’interruption.
✓ PR : Priority Resolver (Résolveur de Priorité) : Il sélectionne parmi les demandes
d’interruption non masquées mémorisées dans IRR quelle est celle possédant la plus
haute priorité.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


CHAPITRE 5

LES INTERRUPTIONS

5.1 G ÉNÉRALITÉS

Les techniques d’entrées/sorties sont très importantes pour les performances du


système. Rien ne sert d’avoir un microprocesseur calculant très rapidement s’il doit
souvent perdre son temps pour lire des données ou écrire ses résultats.
Par ailleurs, la taille et la rapidité des échanges de données avec les organes péri-
phériques sont très variables. Un clavier envoie les caractères frappés un à un, tandis
qu’un disque peut échanger des blocs de plusieurs millions d’octets.
Le processeur peut assurer par programme les échanges lents, par contre la réalisa-
tion des échanges rapides et volumineux lui prendrait beaucoup de temps. Du matériel
spécifique, appelé DMA pour Direct Memory Access, est utilisé pour les automati-
ser. Toutefois, les initialisations du périphérique et du DMA se font toujours par des
accès programmés. Pour son initialisation, le DMA se présente alors comme un péri-
phérique accessible par des instructions. Une fois lancé, il effectue automatiquement
des transferts de blocs entre la mémoire et les organes périphériques. À leurs termes,
le DMA prévient le processeur par une interruption externe qui provoque l’appel du
logiciel correspondant.

5.2 M ODES D ’ ÉCHANGES DE DONNÉES

On distingue trois modes d’échange de données entre unités d´échange et proces-


seur :

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


114 CHAPITRE 5: LES INTERRUPTIONS

✓ Scrutation (Polling)

✓ Interruptions

✓ Accès direct à la mémoire ou DMA (DMA : Direct Memory Access).

5.2.1 Le mode d’échange par Scrutation

Ce mode est caractérisé par le fait que le processeur interroge en permanence les uni-
tés d´échange. Il vient lire les registres d´état et teste les bits concernés par l´échange.
À la suite de quoi, la ou les données reçues sont lues ou écrites.
Ce mode de travail, aussi désigné par le terme de Polling, test d´état ou attente
active, est particulièrement simple à mettre en œuvre mais présente l’inconvénient de
mobiliser toute l’activité du processeur pour l’opération d’entrée-sortie. On le trouve le
plus souvent implanté sur des matériels du type micro-ordinateurs dotés d’un système
d’exploitation rudimentaire.

5.2.2 Mode d’échange par Accès direct à la mémoire

Ce mode permet le transfert de blocs de données entre la mémoire et un périphérique


sans passer par le microprocesseur. Pour cela, un circuit appelé contrôleur de DMA
(Direct Memory Access) prend en charge les différentes opérations.
Le dispositif DMA (Direct Memory Access) est un composant matériel permet-
tant d’effectuer des échanges entre mémoire centrale et unité d’échange sans utilisation
du processeur central. Le DMA comprend :

✓ Un registre d’adresse qui reçoit l’adresse du premier caractère à transférer ;

✓ Un registre de comptage qui reçoit le nombre de caractères à transférer ;

✓ Un registre de commande qui reçoit le type d’opération à effectuer (lecture ou écri-


ture) ;

✓ Une zone tampon permettant le stockage de données ;

✓ Un composant actif, de type processeur, qui exécute un transfert sans utilisation du


processeur central.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


5.2. MODES D’ÉCHANGES DE DONNÉES 115

Figure 5.1 – Exemple de transfert de données par DMA.

Le DMA se charge entièrement du transfert d’un bloc de données. Le microproces-


seur doit tout de même :
✓ Initialiser l’échange en donnant au DMA l’identification du périphérique concerné
✓ Donner le sens du transfert
✓ Fournir l’adresse du premier et du dernier mot concernés par le transfert.
Pour chaque mot échangé, le DMA demande au microprocesseur le contrôle du bus,
effectue la lecture ou l’écriture mémoire à l’adresse contenue dans son registre et libère
le bus. Il incrémente ensuite cette adresse et décrémente son compteur. Lorsque le
compteur atteint zéro, le dispositif informe le processeur de la fin du transfert par une
ligne d’interruption.
Le principal avantage est que pendant toute la durée du transfert, le processeur est
libre d’effectuer un traitement quelconque. La seule contrainte est une limitation de
ses propres accès mémoire pendant toute la durée de l’opération, puisqu’il doit parfois
retarder certains de ses accès pour permettre au dispositif d’accès direct à la mémoire
d’effectuer les siens : il y a apparition de vols de cycle.

5.2.3 Les interruptions

Afin d’améliorer les performances de l’ordinateur lors de l’exécution d’une opéra-


tion d’entrées-sorties, on utilise le mécanisme d’interruptions. Dans ce mode de ges-
tion l’unité d’échange utilise le mécanisme des interruptions pour signaler qu’elle est
prête. Ainsi, à chaque fois qu’un caractère est imprimé, l’imprimante le signale à l’unité
d’échange qui émet une interruption vers le processeur.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


116 CHAPITRE 5: LES INTERRUPTIONS

5.2.3.1 Définition

Une interruption permet d’arrêter un programme en cours d’exécution sur le pro-


cesseur, pour que celui-ci traite une tâche considérée comme plus urgente. Quand cette
tâche est terminée, le processus interrompu doit alors être repris en l’état où il avait
été laissé.
Les interruptions permettent donc à des événements, en général externes au mi-
croprocesseur (coupures d’alimentation, alarmes, périphériques prêts à émettre ou à
recevoir des données. . .), d’attirer immédiatement l’attention de l’unité centrale.
Dans la mesure où elle est acceptée par le processeur, l’interruption permet ainsi au
circuit périphérique ou au logiciel de suspendre le fonctionnement de ce microproces-
seur d’une manière rationnelle et de lui demander l’exécution d’un sous-programme de
service, dit également sous-programme d’interruption.

5.2.3.2 Types d’interruptions

Une interruption peut être provoquée de diverses manières :


✓ Par un périphérique, l’interruption est alors dite externe et matérielle ;
✓ Par un programme, l’interruption est alors externe et logicielle ;
✓ Par le processeur lui-même lors de certains événements exceptionnels, l’interruption
est alors dite interne et appelée exception.

5.2.3.3 Masquage et démasquage des interruptions

Interruption non masquable : Les processeurs disposent d’instructions autorisant


ou interdisant les interruptions dans certains cas, c’est ainsi que, si le programme ne doit
absolument pas être interrompu (processus système prioritaire en cours de traitement
par exemple), on interdira aux interruptions qui pourraient se produire de venir en
perturber le déroulement.
Cependant, certaines interruptions ne sauraient être interdites, soit du fait de leur
nécessité, soit du fait de leur niveau de priorité. L’exemple le plus flagrant est l’inter-
ruption pour coupure de courant ! Ces interruptions sont dites non masquables.

Interruption masquable : Par opposition, une interruption est dite masquable


quand on peut demander à l’unité centrale de l’ignorer. On peut ainsi masquer, à un
moment donné, certaines interruptions afin de préserver le déroulement du programme

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


5.2. MODES D’ÉCHANGES DE DONNÉES 117

en cours de toute interruption intempestive (sauf bien évidemment des interruptions


non masquables).
Le parallèle peut être fait avec une personne en train de travailler, qui répond, ou
non, au coup de sonnette, selon l’importance de la tâche qu’elle est en train d’accomplir.
Le masquage des interruptions peut être effectué en positionnant certains bits du
registre d’interruption à l’aide d’instructions spéciales de masquage et démasquage.

5.2.3.4 Reconnaissance des interruptions

Il existe divers moyens pour déterminer la source d’une interruption – aussi notée
IRQ (Interrupt Request) – et donc y répondre de manière appropriée.

Interruption multiniveau : Chaque équipement susceptible d’émettre une inter-


ruption est relié à une entrée d’interruption particulière. Cette solution, techniquement
la plus simple, est très coûteuse en broches d’entrées du processeur et de ce fait pas
utilisée.

Figure 5.2 – Interruption multiniveau.

Interruption ligne unique : Dans cette technique, une seule entrée est réservée au
niveau de l’unité centrale, lui indiquant si une interruption est demandée. Si plusieurs
équipements sont reliés à cette ligne, quand l’UC reçoit la demande d’interruption, elle
doit alors scruter tous les équipements pour en déterminer l’émetteur ; cette technique
est aussi appelée scrutation.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


118 CHAPITRE 5: LES INTERRUPTIONS

Figure 5.3 – Interruption ligne unique.

Interruption vectorisée : Ce type d’interruption ne consiste pas seulement en un


signal de demande, mais comporte également un identificateur qui permet de se bran-
cher directement sur le sous-programme de service approprié. Cet identificateur est un
"numéro", ou vecteur, identifiant le périphérique à l’origine de la demande d’inter-
ruption. Ce vecteur déposé sur le bus de données peut être fourni par un contrôleur
d’interruptions (comme le classique 8259A) ou par le périphérique lui-même, mais
il est alors nécessaire de gérer une hiérarchisation des priorités afin de ne pas déposer
simultanément deux vecteurs sur le bus de données.

5.3 P ROCESSUS DE TRAITEMENT D ’ UNE INTERRUPTION

La prise en compte d’une interruption se fait selon la séquence :

1. Le programme utilisateur dispose du processeur. C’est lui qui est en cours d’exé-
cution. Il dispose des registres, de l’unité arithmétique et logique, de l’unité de
commande. Le compteur ordinal CO contient l’adresse de la prochaine instruction
à exécuter ;

2. Une interruption est postée par un périphérique ;

3. Il y a sauvegarde du contexte matériel d’exécution du programme utilisateur et en


particulier du compteur ordinal CO. Ceci est nécessaire pour la reprise ultérieure
de ce programme. Le programme de reconnaissance s’exécute et lit le numéro de
l’interruption. Le numéro de l’interruption permet l’identification de l’adresse du
programme de traitement ;

4. Le compteur ordinal CO est chargé avec l’adresse du programme de traitement


et celui-ci s’exécute ;

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


5.4. EXEMPLE DE PROGRAMMATION DE SOUS-PROGRAMME D’INTERRUPTION 119

5. Le contexte d’exécution du programme utilisateur est rechargé dans le processeur


à la fin de l’exécution du programme d’interruption ;

6. Le programme utilisateur reprend son exécution.

La figure 5.4 résume le mécanisme de traitement d’une interruption.

Figure 5.4 – Prise en compte d’une interruption.

5.4 E XEMPLE DE PROGRAMMATION DE SOUS - PROGRAMME D ’ INTER -


RUPTION

Exemple 5.1. On désire contrôler une LED par un system à base de processeur
8085/8155 (figure 5.5). Si V1 >V2 (connecté à l’entrée INTR), le système lit l’état
d’un interrupteur connecté au port B du port parallèle 8155. Si ‘interrupteur est ouvert
(entrée au niveau HAUT), on met la LED à l’état OFF et si l’interrupteur est fermée
(Entrée au niveau BAS) on met la LED à l’état ON.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


120 CHAPITRE 5: LES INTERRUPTIONS

Figure 5.5 – Contrôle d’une LED par un système à base de 8085/8155.

Solution :

#ORG 0030H; Vecteur d’ adresse de INTR


JMP 3000H ; Sauter au sous − programme de INTR
BEGIN MVI A, 0CH ; Charger l’ACC par la valeur à envoyer au port
OUT PORTC ; Initialiser le bit 5 du port C (LED OFF)
EI ; Activer l’ interruption INTR
LOOP NOP ; Attente de la requête d’ interruption INTR
JMP LOOP ;
ORG 3000H ; Entrée du sous − programme INTR
IN PORTB ; Lecture du port B (L’état de l’ Interrupteur )
XRI 02H ; Inverser la donnée d’entrée
RAL ; Déplacer la donnée du bit 1 au bit 5
RAL ;
RAL ;
RAL ;
OUT PORTC ; Écriture sur port C (Mettre ON/OFF la LED)
JMP BEGIN ; Boucler

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍


BIBLIOGRAPHIE

[1] Jean Letocha, “ Introduction aux circuits logiques”, McGraw-Hill, 2eme édition,
ISBN-13 : 978-0075489856, 1997.
[2] Thomas Floyd, “Systèmes numériques”, Edition Eyrolles, 9eme édition, ISBN : 978-
2-89377-499-2, 2013.
[3] Alain Cazes & Joëlle Delacroix, “Architecture des machines et des systèmes infor-
matiques”, Edition Dunod, 3eme édition, ISBN 978-2-10-053945-1, 2008.
[4] Pierre-Alain Goupille, “Technologie des ordinateurs et des réseaux”, Edition Dunod,
8eme édition, ISBN 978-2-10-053944-4, 2008.
[5] S.K. Sen, “Understanding 8085/8086 Microprocessors and Peripheral ICs through
Questions and Answers”, New Age International (P) Ltd., Publishers, Second édi-
tion, ISBN (13) : 978-81-224-2974-9, 2010.
[6] François Anceau & Daniel Etiemble, “Introduction à l’architecture des ordinateurs”,
Edition Technique de l’Ingénieur , 2010.
[7] H. Lilen, “Cours fondamental des microprocesseurs”, Edition Dunod, ISBN-13 :
978-2709109994, 1993.
[8] Daniel Etiemble, “Évolution de l’architecture des ordinateurs”, Edition Technique
de l’Ingénieur , 2009.
[9] David A. Patterson & John L. Hennessy, “Computer Organization and Design ,
The hardware /software interface”, Morgan Kaufmann, Fourth Edition , ISBN :
978-0-12-374750-1, 2011.

Dr. LATOUI A.✍ UEF 3.1.1/Systèmes à Microprocesseurs UBBA-2019


122 BIBLIOGRAPHIE

[10] Lance A. Leventhal & Winthrop Saville, “8080/8085 Assembly Language subrou-
tines”, McGraw-Hill, ISBN : 0-931988-58-6, 1983.
[11] Intel 8080/8085 Assembly Language Programming, Intel Corporation, 1977.
[12] D.a.godse & A.p.godse, “Microprocessors and Interfacing”, Technical publications
pune , ISBN : 978-81-8431-125-9, 2009.
[13] D.a.godse & A.p.godse, “Microprocessors & Microcontroller Systems”, Technical
publications pune, ISBN : 978-81-8431-307-9, 2008.
[14] J.C. Buisson, “Concevoir son microprocesseur : Structure des systèmes logiques”,
Ellipses, ISBN-13 : 978-2729829964, 2006.
[15] Steve Leibson & Michel Jacob “Manuel des interfaces”, McGraw-Hill, ISBN-13 :
978-2704210947, 1984.
[16] Linda Null & Julia Lobur, “The essentials of computer organization and architec-
ture”, Jones and Bartlett Publishers, ISBN 0-7637-0444-X, 2003.
[17] T.Dumartin, “Architecture des ordinateurs”, Notes de cours, 2004-2005.
[18] J.Y. Haggége, “Microprocesseur”, Support de Cours, Institut Supérieur des études
Technologiques de Radés , 2003.
[19] Ali Hmidene, “Circuits d’interfaces”, Fascicule des travaux pratiques, Institut Su-
périeur des Etudes Technologique de Sousse, 2009-2010.
[20] Mabrouk Issam, “Microprocesseurs et microcontrôleurs”, Support de Cours, Institut
Supérieur des études Technologiques de Radés , 2013-2014.
[21] K. Udaya Kumar, & B. S. Umashankar, “The 8085 Microprocessor : Architecture,
Programming and Interfacing”, Pearson Education India, ISBN 9788177584554,
2008.

UBBA-2019 UEF 3.1.1/Systèmes à Microprocesseurs Dr. LATOUI A.✍

Vous aimerez peut-être aussi