Documente Academic
Documente Profesional
Documente Cultură
Notes de cours
Circuits d’Interfaces
Version : 2.0
Table des matières
CHAPITRE I :....................................................................................................................................................... 5
LE MICROPROCESSEUR 16 BITS 8086/8088 ................................................................................................ 5
1. INTRODUCTION .......................................................................................................................................... 2
2. LES BROCHES DU 8086 .............................................................................................................................. 2
2.1. Les lignes d’adresses et de données ................................................................................................ 2
2.2. Le signal d’horloge ......................................................................................................................... 3
2.3. Les lignes de contrôle et d’état........................................................................................................ 3
3. SEGMENTATION DE LA MEMOIRE ............................................................................................................... 4
4. INTERFACES AVEC LES ENTREES/SORTIES .................................................................................................. 4
CHAPITRE II : ..................................................................................................................................................... 6
L’INTERFACE PARALLELE I8255 ................................................................................................................. 6
1. PRESENTATION .......................................................................................................................................... 7
2. LES FONCTIONS DES LIGNES DE CONTROLE DU PPI 8255 ........................................................................... 8
3. LE MOT DE CONTROLE ............................................................................................................................... 8
3.1. Format du mot de contrôle pour la commande standard ................................................................ 9
3.2. Format du mot de contrôle pour la commande Set/Reset du port C ............................................... 9
4. LES MODES DE FONCTIONNEMENT DU 8255............................................................................................. 10
4.1. Mode 0 : Entrées/Sorties Parallèles.............................................................................................. 10
4.2. Mode 1 : Entrées/Sorties Parallèles avec Dialogue...................................................................... 11
4.2.1. Mode 1 en entrée ...................................................................................................................................... 11
4.2.2. Mode 1 en sortie ....................................................................................................................................... 12
4.3. Mode 2 : Entrée/Bus bidirectionnelle ........................................................................................... 14
CHAPITRE III :.................................................................................................................................................. 16
L’INTERFACE SERIE I8251............................................................................................................................ 16
1. PRESENTATION ........................................................................................................................................ 17
2. ARCHITECTURE DU 8251 ......................................................................................................................... 17
2.1. Interface de connexion au Modem ................................................................................................ 17
2.2. Bloc d’émission ............................................................................................................................. 17
2.3. Bloc de réception........................................................................................................................... 18
3. PROGRAMMATION DU 8251 ..................................................................................................................... 18
3.1. Accès aux registres........................................................................................................................ 18
3.2. Programmation ............................................................................................................................. 19
3.2.1. Mot de sélection de mode ......................................................................................................................... 19
3.2.2. Mot de commande .................................................................................................................................... 20
3.2.3. Mot d’état ................................................................................................................................................. 21
CHAPITRE IV :.................................................................................................................................................. 22
LE CONTROLEUR D’INTERRUPTIONS PROGRAMMABLE I8259 ...................................................... 22
1. DEFINITION.............................................................................................................................................. 23
2. AFFECTATION DES INTERRUPTIONS DANS LE CAS DES PC........................................................................ 23
3. ARCHITECTURE ET REGISTRES DU 8259................................................................................................... 24
3.1. Architecture du 8259..................................................................................................................... 24
3.2. Registres du 8259.......................................................................................................................... 24
3.2.1. Mot de commande d’initialisation 1 : Initialisation Command Word 1 (ICW1)....................................... 24
3.2.2. Mot de commande d’initialisation 2 : Initialisation Command Word 2 (ICW2)....................................... 25
3.2.3. Mot de commande d’initialisation 3 : Initialisation Command Word 3 (ICW3)....................................... 25
3.2.4. Mot de commande d’initialisation 4 : Initialisation Command Word 4 (ICW4)....................................... 26
3.2.5. Mot de contrôle d’opération 1 : Operation Control Word 1 (OCW1)....................................................... 27
3.2.6. Mot de contrôle d’opération 2 : Operation Control Word 2 (OCW2)....................................................... 27
3.2.7. Mot de contrôle d’opération 3 : Operation Control Word 3 (OCW3)....................................................... 28
3.2.8. IRR : (Interrupt Request Register = registre demande d'interruption) ...................................................... 29
3.2.9. ISR : (In Service Register = registre interruption en service) ................................................................... 29
4. PROGRAMMATION DU 8259 ..................................................................................................................... 29
CHAPITRE V : ................................................................................................................................................... 31
LE TIMER PROGRAMMABLE LE I8253/8254 ............................................................................................ 31
1. INTRODUCTION ........................................................................................................................................ 32
2. STRUCTURE INTERNE ............................................................................................................................... 32
3. ACCES AUX REGISTRES ............................................................................................................................ 33
3.1. Adresses ........................................................................................................................................ 33
3.2. Mot de commande ......................................................................................................................... 34
3.2.1. Procédure d’écriture.................................................................................................................................. 34
3.2.2. Procédure de lecture ................................................................................................................................. 34
4. MODES DE FONCTIONNEMENT ................................................................................................................. 35
4.1. Mode 0 : Envoi d’une demande d’interruption en fin de décomptage .......................................... 35
4.2. Mode 1 : Re-déclenchement par impulsion extérieur.................................................................... 36
4.3. Mode 2 : Timer d’intervalle périodique ........................................................................................ 36
4.3.1. Mode 3 : Générateur d’ondes carrées ....................................................................................................... 37
4.3.2. Mode 4 : Strobe déclenché par logiciel..................................................................................................... 37
4.3.3. Mode 5 : Strobe déclenché par matériel (hardware) ................................................................................. 38
BIBLIOGRAPHIE.............................................................................................................................................. 39
Table des figures
Plan :
1. Introduction
2. Les broches du 8086
3. Segmentation de la mémoire
4. Interfaçage avec les Entrées/Sorties
CHAPITRE I : Le microprocesseur 16 bits 8086/8088 ISET Mahdia
1. Introduction
Créé en 1978 par Intel, le 8086 a été l'un des premiers microprocesseurs 16 bits. Il dispose
d'un bus de données sur 16 bits, ce qui constituait à l’époque à la fois un avantage en raison de
cette puissance, et un inconvénient car les circuits spécifiques 16 bits d'accompagnement
n'existaient pas encore. Force était donc d’uti1iser les « anciens » circuits périphériques 8 bits
dans des montages plus complexes.
C'est ce qui a amené Intel à créer un sous-produit du 16 bits 8086 mais avec une
différence considérable : son bus de données externe est sur 8 bits. C’est le 8088, né en 1979.
Ainsi, le microprocesseur 16 bits en interne peut utiliser des circuits périphériques 8 bits dont
le double avantage est qu ils existaient et qu'ils étaient économiques.
Le prix d revient d’un circuit intégré dépend, pour beaucoup, du nombre de ses broches
avec les boîtiers DIP. Si l’on diminue le compte des broches, on réduit le prix. C’est ce qui a
incité divers fabricants à élaborer des astuces allant dans ce sens.
En fait, et dans tous les cas, cela consiste à faire passer plusieurs signaux par la même broche,
soit en les complémentant, soit en les multiplexant dans le temps. C’est effectivement le cas,
avec le 8086/88, en particulier avec des broches communes adresses et données notées AD.
Puisque l’adresse et la donnée n’ont pas besoin d’être simultanément présents sur le
bus, on peut utiliser le même qui servira, à tour de rôle, à l’une ou à l’autre. C’est ce que l’on
appelle le multiplexage temporel (dans le temps, à des instants différents). La partie
multiplexée du bus est repérée par les lettres AD, pour adresses-données. Avec le 8088, il
s’agit de huit broches, notées AD0 à AD7. Pour le 8086 il s’agit de 16 broches AD0 à AD15.
Ces lignes peuvent donc être des lignes de sortie ou d’entrée selon qu’il sa d’écriture
ou de lecture. Elles se mettent en troisième état lors de l’acquittement dune interruption ou
d’un hold.
* A19 - A16 : Ces lignes possèdent une double fonction : la première l’adressage, au
début de chaque cycle machine, des quatre bits de plus forts poids de l’adresse matérielle à 20
bits. La seconde, une fois l’adresse est verrouillée :
A17 et A16 deviennent les lignes d’état S4 et S3 qui décodées donnent le segment en
cours.
Pour ce signal on utilise le générateur d’horloge 8284 qui permet de fournir à l’entrée CLK le
tiers de la fréquence délivrée par un quartz connecté en résonance série.
ALE : Le front descendant de ce signal permet de verrouiller l’adresse dans un latch afin de la
garder sur le bus jusqu’à la fin du cycle et permettre ainsi aux pins d’adresse de changer de
fonction. La ligne ALE n’est jamais mise en 3ième état.
RD : Ligne read, active à l’état bas indique que le microprocesseur est entrain de lire à partir
de la mémoire ou d’un port d’E/S.
WR : Ligne write, active à l’état bas indique que le microprocesseur est entrain d’écrire dans
la mémoire ou sur un port d’E/S.
IO / M : Ce signal spécifie si le cycle machine en cours est entrain d’adresser un port d’E/S
(niveau haut) ou une mémoire (niveau bas).
MN / MX : Cette entrée, mise à 1 configure le système dans le mode minimum (les lignes de
contrôle ont été définis dans ce cas); mise à 0, ces lignes changent de signification et le
système est configuré dans le mode maximum, le contrôleur de bus 8288 est alors
indispensable et s’il y a plusieurs processeurs, l’arbitre de bus 8289 sera en plus nécessaire.
DT / R : C’est une sortie qui décide pour le transmetteur (8286/8287) de la direction ces
données sur le bus : à l’état haut c’est le sens de l’écriture (Data transmit), à l’état bas c’est le
sens de la lecture par le microprocesseur (Data Receive). Ce signal est mis en 3ième état lors de
l’acquittement d’un hold.
HOLD/HLDA : A l’état haut c’est une demande par un autre maître pour le contrôle du bus.
Le microprocesseur répond l’acquittement HLDA (HOLD ACKNOWLEDGE à l’état haut) à
la fin de l’opération de transfert de donnée en cours. Le microprocesseur ne fait passer ce
signal à l’état bas qu’une fois le HOLD reçu est à 0.
INTR : C’est un signal de demande d’interruption, active à l’état haut. Sa présence est
automatiquement détectée lors du dernier cycle horloge de chaque instruction. Lorsqu’il est à
1, le µp saute à une routine d’exécution de l’interruption (via une table des vecteurs
d’interruptions se trouvant dans la mémoire du système) afin de servir le périphérique
demandeur. Ce signal est synchronisé intérieurement et devra être validé par la mise à 1 du bit
correspondant du registre de flags.
RESET : Ce signal sert à démarrer ou redémarrer le système : à son front positif, le µp termine
ses activités ; au front descendant tous les registres internes sont mis à 0 sauf CS à FFFFH. Le
signal RESET est fourni par le circuit 8284 qui possède un trigger de Schmitt interne dont
l’entrée RES est reliée à un circuit RC possédant une constante de temps d’au moins 50µs
(après que l’alimentation ait atteint 4,5V). L’hystérésis du trigger empêche la sortie RESET
d’osciller lorsque la tension d’entrée commute.
3. Segmentation de la mémoire
Les bus d'adresses récents possèdent toutefois 32 bits. Les adresses qu'ils véhiculent sont donc
constituées de deux composantes de 16 bits:
• un segment de 16 bits
• un déplacement (ou offset en anglais) de 16 bits
Les segments sont stockés dans des registres de 16 bits, dont les deux principaux sont:
Le processeur utilise le segment CS pour lire le code d'une instruction. Lors de la lecture de
celui-ci il crée une adresse de 32 bits formée de la paire constituée par le registre segment CS
et le registre de déplacement IP, on note cette paire CS:IP.
Le registre segment CS est initialisé automatiquement au chargement du programme sur le
segment contenant la première instruction à exécuter.
Le segment DS permet au processeur d'aller chercher les données stockées à une adresse. Il
crée alors la paire constituée du registre segment DS et de l'adresse 16 bits indiquée dans
l'instruction. C'est au programmeur de définir dans le code source l'adresse du segment de
donnée à utiliser, en initialisant le registre DS.
• Le 8086 accepte les composants E/S 8 bits et 16 bits. Un composant E/S 8 bits
peut être mis sur la partie basse ou sur la partie haute du bus de donnée (autant
mettre un nombre égal sur chacune des moitiés pour équilibrer la charge du bus).
• Lorsqu’un composant d’E/S est mis sur la moitié basse, toutes les adresses de ses
registres doivent être paires et il sera sélectionné à l’aide de A=0. De même un
composant d’E/S mis sur la moitié haute n’aura que des adresses impaires, la
sélection s’effectue par A0=1.
Plan :
1. Présentation
2. Les fonctions des lignes de contrôle du PPI 8255
3. Le mot de contrôle
4. Les modes de fonctionnement du 8255
CHAPITRE II : L’Interface Parallèle i8255 ISET Mahdia
1. Présentation
L’interface programmable 8255 est un circuit à liaison parallèle destiné à faire les
échanges des données entre un microprocesseur et divers dispositifs extérieurs. Puisque il est
programmable, on peut l’utiliser dans diverses configurations.
Le 8255 possède 24 bits d’entrées-sorties réparties sur 3 ports A, B et C. Ces derniers
peuvent être programmés indépendamment l’un de l’autre soit en entrées soit en sorties. Il
existe 3 modes de fonctionnement, et il est possible de les attribuer à certains ports
individuellement ou en regroupant certaines lignes des ports A ou B avec celles du port C.
En plus des caractéristiques communes aux trois ports, chacun de ceux-ci possède des
propriétés particulières permettant ainsi au 8255 de satisfaire de nombreux besoins.
3. Le mot de contrôle
Le 8255 dispose d'un mot de contrôle qui permet de configurer les 3 ports en entrées
ou en sorties. Ce mot est chargé dans un registre de 8 bits utilisant la combinaison appropriée
des lignes A et B. Ensuite les 24 lignes d'entrée-sortie de 8255 sont réparties en 2 groupes. Le
groupe A rassemble les 8 bits du port A et les bits 4 à 7 du port C. Le groupe B rassemble les
8 bits du port B et les bits 0 à 3 du port C.
Les combinaisons des lignes de contrôle sont représentées dans le tableau suivant:
A1 A0 RD WR CS OPERATION
0 0 0 1 0 Lecture port A
0 1 0 1 0 Lecture port B
1 0 0 1 0 Lecture port C ou du REG STATUS (modes 1 et 2)
0 0 1 0 0 Ecriture port A
0 1 1 0 0 Ecriture port B
1 0 1 0 0 Ecriture port B
1 1 1 0 0 Ecriture de mot de contrôle
X X X X 1 Non sélectionné
1 1 0 1 0 Etat interdit
Le mode 0 permet des opérations simples d’entrée-sortie sur les trois ports. Il dispose
de 24 lignes d’entrées-sorties : port A, huit lignes ; port B, huit lignes ; port C, deux groupes
de quatre lignes (groupe haut et groupe bas)
Selon l'application souhaitée, chaque groupe devra être déclaré en entrée ou en sortie.
Pour chacun des quatre groupes, les lignes entrée/sortie peuvent être utilisées comme lignes
de données proprement dites ou comme signal. En plus de cette possibilité, les deux groupes
du port C permettent d’utiliser chaque entrée/sortie comme signal de commande pour générer
une impulsion (positive ou négative).
Dans ce mode, les données en sortie sont mémorisées dans le 8255. Elles restent
inchangées jusqu’à une nouvelle programmation, tandis que les entrées ne sont pas
mémorisées.
On attribue au bit concerné dans le mot de contrôle, l’état 1 pour le choix du mode
entrée et l’état 0 pour celui du mode de sortie. En mode de fonctionnement 0, il existe donc 16
configurations possibles. Il s’agit donc de déterminer le mot de commande en fonction de
l’application souhaitée qu’il faut programmer dans le registre de contrôle.
Remarque
Toute information lue sur un port programmé en sortie est sans signification et toute
tentative d’écriture sur un port programmé en entrée est sans action.
Port A Port B
PC4 PC2
STBA\ STBB\
PC5 PC1
IBFA IBFB
PC3 PC0
INTR INTR
RD\ PC7-6
RD\
2 E/S
• IBF (Input Buffer Full) : signal en sortie indicateur de prête en entrée du port. Cette
sortie est mise à 1 sur front descendant de STB\. Elle sera remise à 0 sur front montant
de RD\ : c’est à dire lorsqu’on aura effectué la lecture de la donnée.
• INTR lnterrup Request (Demande d’interruption) : signal en sortie pouvant être utilisé
pour effectuer une demande d’interruption au CPU. Elle passe à 1 sur le front montant
de STB\ si le masque qui lui est associé (INTE) est préalablement mis à 1. INTR est
remis à 0 sur le front descendant de RD\ (lecture de l’information).
Remarque
INTE est mis à 1 par une commande SET/RESET du bit du port C correspondant à son rang
dans le mot d’état (soit PC4 pour INTEA et PC2 pour INTEB).
Fonctionnement
Le périphérique place une donnée de 8 bits sur A7-A0 (ou B7-B0) puis génère un
strobe (STB\=0) qui charge cette donnée dans le latch d’entrée. Ceci a pour effet l’activation
du signal IBF à 1, indiquant au CPU que la donnée est prête à l’entrée du port.
Mot de commande
Port A Port B
1 0 1 1 1/0 X X X 1 X X X X 1 1 X
1 : input
0 : output
Mot d’état (Port A/Port B) : adresse port C
Groupe A Groupe B
E/S E/S IBFA INTEA INTRA INTEB IBFB INTRB
Les ports A et B sont programmés en sortie. Les signaux de dialogue correspondants sont
respectivement PC3, PC6. PC7 et PC0, PC1, PC2. Les deux bits restants (PC4 et PC5)
peuvent être programmés sait en entrée soit en sorties.
Port A Port B
PC6 PC2
ACK ACK
PC7 PC1
OBFA OBFB
\
PC3 PC0
INTR INTR
WR\ PC5-4
WR\
2 E/S
• OBF\ (Output Buffer Full): signal en sortie indicateur de donnée prête en sortie du
port. Cette sortie est mise à 1 sur front montant de WR\ c’est à dire lors d’une
opération de sortie sur le port associé. Elle sera remise à 0 sur front descendant de
ACK\ (réponse du périphérique comme quoi il a bien reçu la donnée).
• INTR Demande d’interruption ; signal en sortie. Cette sortie passe à 1 sur front
montant de ACK\ si le masque qui lui est associé est à 1. Elle est remise à 0 sur e front
descendant de WR\.
Fonctionnement
Pour la sortie en mode 1, le microprocesseur écrit la donnée dans le port A (ou B). Le front
montant de WR\ fait cesser l’interruption du µP (INTR=0), et met OBF\=0 pour signifier au
périphérique que son buffer de sortie est plein et qu’il peut donc venir chercher une donnée
requis la donnée ce dernier répond par ACK\=0 qui a pour effet de faire cesser OBF\=1. De
nouveau ACK\=1, OBF\=1 et INTE=1 (par le bit SET/RESET de PC6 pour A et celui de PC2
pour B) fait interrompre le µP pour que celui-ci écrive la donnée suivante.
Mot de commande
Port A Port B
1 0 1 0 1/0 X X X 1 X X X X 1 0 X
Groupe A Groupe B
OBFA INTEA E/S E/S INTRA INTEB OBFB INTRB
Le mode 2 permet d’avoir un bus bidirectionnel sur le port A. Cinq bits du port C sont utilisés
pour le status et le contrôle du port A permettant un handshake similaire à celui du mode 1.
Port A
INTE1
PC6
ACK
PC7
OBFA\
WR\
PC3
INTR
RD\
PC5
IBFB\
PC4
STBA
INTE2
PC2-0 3 E/S
Port A
1 1 X X X 1/0 1/0 1/0
Groupe A Groupe B
OBFA INTE1 IBFA INTE2 INTRA X X X
Plan :
1. Présentation
2. Architecture du 8251
3. Programmation du 8251
CHAPITRE III : L’Interface Série i8251 ISET Mahdia
1. Présentation
Le 8251 est une interface série programmable en asynchrone et en synchrone (USART). C’est
un circuit capable de transmettre ou de recevoir des caractères de 5 à 8 bits.
2. Architecture du 8251
Ce bloc comprend :
¾ Deux registres
• Un registre tampon (BUFFER OUT) qui reçoit du CPU les données parallèles.
• Un registre de transmission qui converti les données à transmettre en série et insère
des bits ou des caractères suivant le mode de fonctionnement.
¾ Une sortie série de caractères : TxD.
¾ Deux sorties d’état:
• TxRDY (Transmitter Ready)
Au niveau 1, cette sortie signale que le registre tampon est prêt à accepter un nouveau
caractère (pendant que le registre de transmission émet le précédent).
• TxE (Transmitter Empty)
Au niveau 1, cette sortie indique que la transmission du caractère est terminée et que le
registre de transmission est vide.
¾ Une entrée d’horloge de transmission TxC\ :
Cette horloge peut être égale à 1, 16 ou 64 fois la vitesse de transmission en Bauds dans le
mode asynchrone.
Ce bloc comprend :
¾ Deux registres :
• Un registre de réception qui transforme les données série en parallèle.
• Un registre tampon (Buffer IN) qui envoie au CPU les données parallèles.
¾ Une entrée série de caractères: RxD.
¾ Une sortie d’état: RxRDY (Receiver Ready)
Au niveau 1, cette sortie indique que le registre de réception est prêt à recevoir un caractère.
¾ Une entrée d’horloge de réception
Cette horloge peut être égale à 1, 16 ou 64 fois la vitesse de réception en Bauds dans le mode
asynchrone.
¾ Une borne SYNDET (Synchro detect) : utilisée en mode synchrone, elle peut émettre
ou recevoir suivant le mode de synchronisation choisit : interne ou externe.
• Synchro interne : cette borne délivre un niveau haut lorsque le 8251 a détecté le mot
de synchro.
• Synchro externe : cette borne reçoit un niveau haut lorsqu’il y a eu détection (par un
système extérieur) du mot de synchro.
3. Programmation du 8251
3.1. Accès aux registres
CS C / D = A0 RD WR Transfert
0 0 0 1 Lecture du registre buffer data in.
0 0 1 0 Ecriture dans le registre buffer data out.
0 1 0 1 Lecture du registre STATUS.
0 1 1 0 Ecriture dans le registre mode ou contrôle
3.2. Programmation
S2 S1 EP PEN L2 L1 B2 B1
( C / D = 1 et WR = 0 )
00 : mode synchrone
≠ 00 : mode asynchrone
Mode asynchrone
B2 B1 Vitesse en bauds
0 1 Fréquence clock
1 0 Fréquence clock/16
1 1 Fréquence clock/64
L2 L1 Longueur du caractère
0 0 5 bits
0 1 6 bits
1 0 7 bits
1 1 8 bits
S2 S1 Bits de stop
0 0 Invalide
0 1 1 bits
1 0 1.5 bits
1 1 2 bits
Mode synchrone
Remarque
Dans le cas du mode synchrone, le ou les caractères de synchronisation doivent être chargés
dans le 8251 (Ecriture avec C/D=1) immédiatement après l’envoie du mode.
Quel que soit le mode choisi, ce mot est unique. Il a le format suivant :
Bit Signification
TxEN Ce bit à 1 autorise la transmission.
DTR Un niveau 1 force la sortie DTR à 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 synchro en
mode synchrone.
Remarque
Lors de la mise sous tension la première 1 e 8251 peut se trouver au niveau du registre de
mode, caractère de synchronisation ou du registre de contrôle afin de garantir qu’il se trouve
bien au niveau du registre de contrôle avant l’émission de la commande de reset interne, le
constructeur recommande la séquence d’initialisation du cas pire : écriture de trois 00H
consécutifs à l’adresse A0=1 afin de configurer le 8251 dans le mode synchrone avec deux
caractères de synchronisation égales à 00H. Le reset interne pourrait alors suivre : écrire 40H
dans le registre de contrôle.
Une séquence d’initialisation pourrait être la suivante :
OUT DX, AL
MOV AL, 37H ; écriture du mot de commande
OUT DX, AL
RET
INIT ENDP
Les cinq bits DSR, SYNDET, TxE, RXRDY et TXRDY ont la même signification que les
bornes du même type.
Bit Signification
PE Parity error: Erreur de parité.
OE Overrun Error : Erreur de recouvrement. Ce bit est mis à 1 lorsqu’un
caractère reçu écrase le précédent pas encore lu par le CPU.
FE Framing Error : Erreur de format. Ce bit est mis à 1 lorsqu’un bit de stop
manque à la fin du caractère.
Plan :
1. Définition
2. Affectation des interruptions dans le cas d’un PC
3. Architectures et registres du 8259
4. Programmation du 8259
CHAPITRE IV : Le Contrôleur d’Interruption Programmable i8259 ISET Mahdia
1. Définition
Pour recevoir des données et changer les états des ports d'Entrée/Sortie, il y a deux méthodes
disponibles.
La première consiste à sonder le port, donc à lire l'état du port à intervalles fixes, pour
déterminer si des données ont bien été reçues, ou si un changement d'état a eu lieu. On peut
alors se brancher sur un sous-programme pour effectuer le sous-programme souhaité.
Comme vous pouvez l'imaginer, cette méthode utilise beaucoup de temps processeur. Temps
qui pourrait être utilisé à d'autres tâches, comme rafraîchir l'écran, afficher l'heure,...
Une meilleure solution est l'utilisation des interruptions. Ici, le processeur peut effectuer les
tâches auxiliaires, comme rafraîchir l'écran, afficher l'heure,...
Lorsqu’un port d’Entrée/Sortie réclame votre attention, comme lors de la réception d’un octet,
ou que son état a changé, il envoie alors une demande d’interruption (IRQ) au processeur. Le
processeur arrête alors l’instruction qu’il était en train d’exécuter, sauvegarde le contenu de
ses registres dans la pile, et exécute la routine d’interruption correspondant à celle demandée,
laquelle pourra par exemple retirer l’octet du port et le placer dans un tampon. Une fois la
routine d’interruption terminée, le processeur restaure le contenu de la pile, et reprend sa
tâche, là où il s’était arrêté.
L’utilisation de cette méthode permet de ne pas gaspiller de temps CPU à scruter les ports
E/S. Par contre, cela oblige le périphérique à faire une demande d’interruption.
Si le PIC a été réinitialisé, il doit être initialisé avec 2 des 4 mots (Initialization Command
Words ICW) avant qu'il ne puisse accepter et traiter des interruptions.
Ici vous trouvez les 4 mots d'initialisations possibles
L’ICW2 sélectionne quelle information sur les vecteurs est conservée sur le bus, lors de la
seconde impulsion INTA.
Lors de l'utilisation du mode 8086, seuls les bits de 3 à 7 sont utilisés: 00001000 pour PIC1 et
01110000 pour PIC2. Si vous souhaitez reloger la table des vecteurs d'IRQ, vous devez
utiliser ce registre.
Il y a deux ICW3 différents. Le premier est utilisé si le PIC est un maître, et l'autre est utilisé
pour les esclaves.
Le premier tableau donne l'ICW3 en maître:
Bit Fonction
7 IR7 est connecté à l’esclave
6 IR6 est connecté à l’esclave
5 IR5 est connecté à l’esclave
4 IR4 est connecté à l’esclave
3 IR3 est connecté à l’esclave
2 IR2 est connecté à l’esclave
1 IR1 est connecté à l’esclave
0 IR0 est connecté à l’esclave
Bit(s) Fonction
7 0
6 0
5 0
4 0
3 0
2:0 ID de l’esclave
000 Esclave 0
001 Esclave 1
010 Esclave 2
011 Esclave 3
100 Esclave 4
101 Esclave 5
110 Esclave 6
111 Esclave 7
La encore, la plupart de ces fonctions spéciales ne sont pas utilisées avec le 8259 en mode
8086.
Bit(s) Fonction
7 0
6 0
5 0
1 Special Fully Nested Mode
4
0 Not Special Fully Nested Mode
3:2 0x Mode Non – Bufférisé
10 Mode Bufférisé - Esclave
11 Mode Bufférisé - Maître
1 Auto EOI (End Of Interruption)
1
0 Normal EOI
1 8086/8080 Mode
0
0 MCS-80/85
Une fois les mots de commande d'initialisation envoyés au PIC, vous pouvez traiter les
Operation Control Words, dans n'importe quel ordre et n'importe quand pendant le travail du
PIC.
Operation Control Word 1 (OCW1), est utilisé pour masquer les entrées du PIC.
Operation Control Word 2 permet de sélectionner la façon dont agit End of Interrupt (EOI).
La seule chose qui nous intéresse dans ce registre est la commande non spécifique à l'EOI que
nous devons écrire à la fin des ISR.
Bit(s) Fonction
7:5 000 Arrêt de rotation automatique
001 Fin d'interruption
010 Pas d'opération
011 Fin d'interruption No
100 Rotation des priorités a chaque EOI
101 Rotation des priorités a chaque EOI non spécifique
110 La priorité la plus élevée est No
111 Rotation à chaque int.No
4 0
3 0
2:0 000 Action en IRQ 0 or 8
001 Action en IRQ 1 or 9
010 Action en IRQ 2 or 10
011 Action en IRQ 3 or 11
100 Action en IRQ 4 or 12
101 Action en IRQ 5 or 13
110 Action en IRQ 6 or 14
111 Action en IRQ 7 or 15
Les bits 0 et 1 permettent de lire l'état du registre Interrupt Request Register (IRR) et du
registre In-Service Register (ISR). Ceci est fait en configurant comme précisé ci-dessous ces
bits, puis en lisant le registre à l'adresse de base.
Par exemple nous voulions lire le registre In-Service Register (ISR), et donc les bits 0 et 1
sont mis à 1. La lecture au registre de base va renvoyer l'état du registre In-Service Register.
Bit(s) Fonction
7 0
6 ESMM
5 SMM
4 0
3 1
1 Poll Command
2 (P)
0 No Poll Command
1:0 00 Reservé
01 Reservé
10 Lecture du Interrupt Request Register
11 Lecture du In-Service Register
ESMM : (Enable Special Mask Mode) à 1, ce bit autorise SMM, sinon le bit SMM est ignore.
Par contre, une fois cette tache accomplie, il est possible d'accepter les priorités plus faibles
avant la fin de la procédure.
Pour cela, il faut exécuter la séquence d'opération suivante :
- Masquer uniquement le bit correspondant à la routine en cours.
- Mettre le 8259 en mode spécial de masquage à l'aide de OCW3.
- Autoriser les interruptions : toutes les interruptions sont alors autorisées sans tenir compte de
leur priorité plus faible.
Avant de sortir de la routine, il faut exécuter une séquence inverse :
- Bloquer le mode spécial de masquage.
- Rétablir un masquage normal.
B7 B6 B5 B4 B3 B2 B1 B0
I X X X X W2 W1 W0
Ce registre 8 bits mémorise les demandes suivant leur numéro d'interruption IRQ ; chaque bit
est actif (demande d'interruption) à l'état 1.
Registre de 8 bits. Le bit d'IRR de plus haute priorité est inscrit dans ISR tandis qu'il est remis
à 0 dans IRR.
Dans le mode automatique, le bit de ISR est remis à zéro des que le vecteur d'interruption a
été lu (voir bit AEOI de ICW4) : la demande d'interruption est considérée comme servie ;
dans le cas contraire, un mot de commande est nécessaire pour effacer le bit concerne.
4. Programmation du 8259
La programmation de ce circuit comprend deux types de commandes :
Non
Mode Cascade ?
Oui
Fin
Plan
1. Introduction
2. Structure Interne
3. Accès aux registres
4. Modes de fonctionnement
CHAPITRE V : Le Timer Programmable i8253/8254 ISET Mahdia
1. Introduction
Lorsqu’on veut effectuer des mesures selon des intervalles de temps précis (cas de la
conversion analogiques numériques), l’utilisation de l’horloge interne du PC ou des fonctions
de temporisation fournies par les langages de programmation, reste insuffisante. En effet,
beaucoup de cartes d’acquisition sont munies d’une horloge indépendante et de compteurs ou
plutôt décompteurs programmables (timer).
Ce circuit établit des intervalles de temps avec précision ou compte des événements,
puis émet une interruption à l’issue de son programme. Il pourra servir de :
¾ générateur de rythme programmable.
¾ Compteur d’événements.
¾ Multiplicateur de rythme binaire.
¾ Horloge temps réel.
¾ Monostable.
¾ Contrôleur de moteur
¾ Générateur de Bauds en communication série
¾ Etc.
Son buffer 8 bits est à trois états ; le microprocesseur l’adresse de façon classique, par
exemple à l’aide de ses instructions d’entrées-sorties (IN et OUT). Les données reçues par le
8253 ont 3 fonctions :
1 – programmer les modes de fonctionnement.
2 – charger les registres de comptage.
3 – lire les valeurs comptées.
2. Structure interne
Cette interface est constituée de trois circuits de comptage identiques possédant,
chacun deux entrées « CLK » et « GATE » (gâchette) et une sortie « OUT ». Chacun possède
également un registre de contrôle, un registre d’état (STATUS), un registre compteur « CR »
pour recevoir le compte initial, un élément compteur «CE » effectuant le comptage mais
accessible par le microprocesseur et un latch de sortie « OL » pour verrouiller le contenu du
compteur CE et le rendre disponible pour la lecture.
CR, CE et OL sont des paires de registre 8 bits.
D7 1 24 Vc c
D7 2 23 WR
D7 3 22 RD
D7 4 21 CS
D7 5 20 A1
D7
D7
6
7
8253 19
18
A0
CLK 2
D7 8 17 GATE 2
CLK 0 9 16 OUT 2
OUT 0 10 15 CLK 1
GATE 0 11 14 GATE 1
GND 12 13 OUT 1
Compteur 0
Registre Contrôle STATUS CLK
Compteur 1
Compteur 2
CS RD WR A1 A0 fonction
0 1 0 0 0 Chargement compteur 0
0 1 0 0 1 Chargement compteur 1
0 1 0 1 0 Chargement compteur 2
0 1 0 1 1 Ecriture mot de mode
0 0 1 0 0 Lecture compteur 0
0 0 1 0 1 Lecture compteur 1
0 0 1 1 0 Lecture compteur 2
0 0 1 1 1 Pas d’opération : 3e état
1 X X X X Inhibitions 3e état
0 X X X X Pas d’opération : 3e état
• Pour chaque compteur, il faut écrire dans l’ordre : le mot de contrôle puis le compte
initial.
• Le compte initial doit se conformer au format binaire ou BCD indiqué par le mot de
contrôle
SC1 SC2 0 0 X X X X
Cette commande permet de préparer le mot de status dont le format recopie les 6 bits de
faibles poids du mot de contrôle :
4. Modes de fonctionnement
GATE = 1: valide le comptage (décomptage)
GATE = 0 : le suspend mais n’a aucun effet sur la sortie OUT.
CLK
WR\ N=4
GATE
4 3 2 1 0
OUT
En position d’attente, la sortie est au niveau haut. Un front montant sur la gâchette
GATE déclenche le décompte au top d’horloge qui suit. Alors la sortie passe à 0 et s’y
maintient jusqu’à ce que le décompte arrive à 0.
Chaque front montant sur GATE relance le processus à partir du compte initial (si celui-
ci n’a pas été modifié). En mode 1 le 8254 fonctionne en monostable.
CLK
WR\ N=4
GATE
4 3 2 1 0
OUT
Le décompte est suspendu par le passage de GATE à 0 et reprend, depuis e compte initial, par
son passage à 1.
CLK
WR\ N=4
GATE
4 3 2 1 0 4 3 4 3…
OUT
Ce mode est similaire au mode 2 sauf que OUT passe au niveau bas lorsque la moitié du
compte initial est atteinte, soit N/2, et reste dans cet état jusqu’à ce que le compte arrive à 0 et
le cycle recommence. Comme pour le mode 2, un niveau 1 sur GATE valide le décompte et
un niveau 0 l’inhibe alors qu’un front montant le réinitialise.
De ce fait, une valeur impaire amène (N+l)/2 avec sorties au niveau haut et (N-1)/2 au niveau
bas.
CLK
WR\
4 3 2 1 0 4 3 2 1 0
OUT N=4
5 4 3 2 1 05 4 3 2 1
OUT N=5
Ce mode est similaire au mode 0 sauf que OUT est au niveau haut pendant le décomptage et
produit une seule impulsion négative lorsque le compte devient nul.
CLK
GATE
4 3 2 1 0 4
OUT
Après le chargement de CR, un front montant sur GATE fait transférer CR dans CE à la
prochaine impulsion d’horloge. Comme dans le mode 4, OUT reste à 1 pendant le
décomptage puis passe à 0 pendant une période d’horloge lorsque le compte est nul. GATE
peut réinitialiser le décomptage à tout moment.
CLK
WR\ N=4
GATE
4 3 2 1 0 4
OUT
www.chipdocs.com
39