151
INSTITUT NATIONAL POLYTECHNIQUE DE TOULOUSE ECOLE NATIONALE SUPERIEURE D’ELECTROTECHNIQUE, D’ELECTRONIQUE, D’INFORMATIQUE, D’HYDRAULIQUE ET DES TELECOMMUNICATIONS DEPARTEMENT D’ELECTRONIQUE - TRAITEMENT DU SIGNAL COURS ET TRAVAUX PRATIQUES DE MICROPROCESSEUR M.CATTOEN Janvier 2003 -0-

COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

  • Upload
    -

  • View
    5.759

  • Download
    35

Embed Size (px)

DESCRIPTION

L'objectif de ce cours est double : présenter les notions de base nécessaires à lacompréhension des systèmes utilisant des microprocesseurs et réaliser des travaux pratiquespermettant de programmer en langage machine (assembleur) une application d’acquisition dedonnées.

Citation preview

Page 1: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

INSTITUT NATIONAL POLYTECHNIQUE DE TOULOUSE

ECOLE NATIONALE SUPERIEURE D’ELECTROTECHNIQUE, D’ELECTRONIQUE, D’INFORMATIQUE, D’HYDRAULIQUE ET DES

TELECOMMUNICATIONS

DEPARTEMENT D’ELECTRONIQUE - TRAITEMENT DU SIGNAL

COURS ET TRAVAUX PRATIQUES DE

MICROPROCESSEUR

M.CATTOEN

Janvier 2003

-0-

Page 2: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

TABLE DES MATIERES

INTRODUCTION..................................................................................................................................................3

CHAPITRE I..........................................................................................................................................................5

PRINCIPES GENERAUX DES CALCULATEURS NUMERIQUES.............................................................5

INTRODUCTION..................................................................................................................................................5

I-1 FONCTION MEMOIRE.................................................................................................................................8

I-1-1 DEFINITIONS ....................................................................................................................................................8 I-1-2 ORGANISATION DES MEMOIRES........................................................................................................................8

I-1-2-1 Organisation par bits...............................................................................................................................8 I-1-2-2 Organisation par mots...........................................................................................................................10

I-1-3 CLASSIFICATION DES MEMOIRES ....................................................................................................................11 I-1-3-1 Mémoires mortes ...................................................................................................................................11 I-1-3-2 Mémoires vives ......................................................................................................................................13 I-1-3-3 Association de mémoires .......................................................................................................................16 I-1-3-4 Autres types de mémoire........................................................................................................................17

I-2 L'UNITE DE TRAITEMENT ......................................................................................................................20

I-2-1 STRUCTURE INTERNE .....................................................................................................................................20 I-2-1-1 Rôle de l'ALU.........................................................................................................................................21 I-2-1-2 Registres de données .............................................................................................................................22 I-2-1-3 Registres d'adresses...............................................................................................................................22 I-2-1-4 Unité de commande ...............................................................................................................................23

I-2-2 ASPECT LOGICIEL...........................................................................................................................................24 I-2-2-1 Classification des instructions ...............................................................................................................24 I-2-2-2 Format des instructions .........................................................................................................................24 I-2-2-3 Modes d'adressage ................................................................................................................................24 I-2-2-4 Instructions de saut................................................................................................................................28

I-3 LES ORGANES D'ENTREE-SORTIE........................................................................................................30

I-3-1 FONCTIONS DE BASE ......................................................................................................................................30 I-3-1-1 Isolation-Mémorisation .........................................................................................................................30 I-3-1-2 Synchronisation .....................................................................................................................................30 I-3-1-3 Adressage des organes d'E/S .................................................................................................................31 I-3-1-4 Adaptation du format des informations .................................................................................................32

I-3-2 PROCÉDURES D'ÉCHANGE ..............................................................................................................................32 I-3-2-1 Mode programmé par test de mot d'état................................................................................................33 I-3-2-2 Mode programmé par interruption........................................................................................................33 I-3-2-3 Mode en "accès direct mémoire (DMA)"...............................................................................................37

CHAPITRE II ......................................................................................................................................................41

ETUDE DE MICROPROCESSEURS ET D'ORGANES D'ENTREE-SORTIE ..........................................41

II-1 LE MICROCONTROLEUR 8051 ..............................................................................................................41

II-1-1 ORGANISATION EXTERNE .............................................................................................................................41 II-1-1-1 Chronologie des échanges avec la mémoire ........................................................................................42

II-1-2 ORGANISATION INTERNE ..............................................................................................................................45 II-1-3 LES INSTRUCTIONS DU 8051 .........................................................................................................................48 II-1-4 MODES D'ADRESSAGE...................................................................................................................................48

II-1-4-1 Mode implicite......................................................................................................................................48 II-1-4-2 Mode immédiat.....................................................................................................................................49

-1-

Page 3: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

II-1-4-3 Mode direct ..........................................................................................................................................49 II-1-4-4 Mode indirect .......................................................................................................................................49 II-1-4-5 Mode indexé .........................................................................................................................................49 II-1-4-6 Mode relatif ..........................................................................................................................................49 II-1-4-7 Opérations spéciales ............................................................................................................................50

II-2 L'INTERFACE PARALLELE 8255 (PROGRAMMABLE PERIPHERAL INTERFACE PPI) ........53

II-2-1 PRESENTATION DU CIRCUIT ..........................................................................................................................53 II-2-1 MODES DE FONCTIONNEMENT ......................................................................................................................54

II-3 LES TRANSMISSIONS SERIE..................................................................................................................57

II-3-1 GENERALITES ...............................................................................................................................................57 II-3-1-1 Communications asynchrones..............................................................................................................57 II-3-1-2 Communications synchrones................................................................................................................58

II-3-2 EXEMPLE D'INTERFACE SERIE : L'ACIA MC 6850........................................................................................59 II-3-2-1 Présentation du circuit (Fig.II-3-2)......................................................................................................59 II-3-2-2 Fonctionnement....................................................................................................................................61

CHAPITRE III.....................................................................................................................................................65

III-1 DESCRIPTION DU MATERIEL DE TRAVAUX PRATIQUES................................................................65 III-2 DESCRIPTION DE LA CARTE MICR0CONTROLEUR 8051..................................................................66 III-3 DESCRIPTION DE LA PLAQUETTE DE TP-CNA...................................................................................67 III-4 TRAVAIL A REALISER..............................................................................................................................69

III-4-1 Utilisation de l’environnement MUVISION ...........................................................................................69 III-4-2 Exercices de programmation..................................................................................................................70 III-4-3 Sortie d’informations..............................................................................................................................71 III-4-4 Conversion analogique-numérique ........................................................................................................72 III-4-5 Acquisition de données...........................................................................................................................73

BIBLIOGRAPHIE...............................................................................................................................................75

ANNEXES ............................................................................................................................................................76

-2-

Page 4: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

INTRODUCTION L'apparition des microprocesseurs date du début des années 1970. A cette époque, deux événements favorables sont apparus : - le concept de "LSI (Large Scale Integration)" permettant d'intégrer plusieurs milliers de portes sur un même substrat, - l'arrivée à maturité de la technologie MOS caractérisée par sa faible consommation. La conjugaison de ces événements a permis de regrouper une unité centrale d'ordinateur dans un seul circuit intégré appelé "microprocesseur". Depuis, une multitude de composants de ce type sont apparus au sein de familles provenant essentiellement de grands constructeurs américains : Intel, Motorola, Advanced Micro Devices (AMD), Texas Instruments,... et japonais : NEC, Mitsubishi,... Grâce aux progrés de l’intégration, l'augmentation des performances a porté sur : - la vitesse de fonctionnement, - la largeur des mots traités (8, 16, 32, 64 bits), - le nombre et la complexité des opérations réalisables. L’intégration a également permis de rassembler le microprocesseur et les éléments associés (mémoire, organes d’entrée-sortie,...) au sein d’un seul circuit appelé

-3-

Page 5: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

"microcontrôleur". Ce type de composant s’est répandu dans un très grand nombre de domaines (télécommunications, télévision, électro-ménager, hifi...). L'objectif de ce cours est double : présenter les notions de base nécessaires à la compréhension des systèmes utilisant des microprocesseurs et réaliser des travaux pratiques permettant de programmer en langage machine (assembleur) une application d’acquisition de données. Ce document est divisé en 3 chapitres. Le premier chapitre présente les principes généraux de fonctionnement des éléments constituant les calculateurs numériques. Le deuxième chapitre est consacré principalement à l'étude du microcontrôleur 8051 et du circuit d’interface parallèle 8255 (PPI) qui seront mis en oeuvre dans les travaux pratiques. Le troisième chapitre présente le matériel utilisé en travaux pratiques ainsi que les différents programmes d’application à réaliser. En annexe sont fournies des spécifications techniques détaillées des composants utilisés et des informations sur le matériel et le logiciel utilisés en travaux pratiques.

-4-

Page 6: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

CHAPITRE I

PRINCIPES GENERAUX DES CALCULATEURS NUMERIQUES INTRODUCTION I-1 FONCTION MEMOIRE I-1-1 Définitions I-1-2 Organisation des mémoires I-1-2-1 Organisation par bits I-1-2-2 Organisation par mots I-1-3 Classification des mémoires I-1-3-1 Mémoires mortes I-1-3-2 Mémoires vives I-1-3-3 Association de mémoires I-1-3-4 Autres types de mémoire

INTRODUCTION Le fonctionnement d'un calculateur numérique fait appel à 2 fonctions essentielles : - le stockage de l'information, - le traitement de l'information. Cette information doit pouvoir circuler sous forme électrique ; elle devra donc être codée. La plus petite quantité d'information (unité) est appelée BIT. Elle correspond à la notion de "variable booléenne ou binaire" qui ne peut prendre que les valeurs 0 ou 1. L'échange d'informations entre 2 éléments (émetteur et récepteur) s'effectue par une liaison électrique (ligne) (Fig.I-1-1). Si l'on considère le cas d'un conducteur unique, l'information provient des combinaisons des états successifs de la ligne au cours du temps : ici l'on parle de liaison "série". Le débit d'informations est exprimé en bits/seconde ou "bauds".

Source Charge

courant

Emetteur Récepteur

Symbole

E R

10

Figure I-1-1

Il est plus avantageux d'associer plusieurs conducteurs en "parallèle". Cette association prend le nom de "bus". A un instant donné, l'état du bus est décrit par un mot binaire pouvant prendre n = 2N valeurs où N est le nombre de lignes juxtaposées. Il est commun d'utiliser des groupements de 8 fils, ce qui conduit à la définition de l'"octet".

-5-

Page 7: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Si l'on considère 2 sous-ensembles reliés par un bus, l'information peut circuler dans un sens (bus unidirectionnel) ou dans les 2 sens (bus bidirectionnel). Dans le premier cas, il s'agit de la liaison entre un émetteur et un récepteur (Fig.I-1-2-a). Dans le second, chaque sous-ensemble peut être configuré soit en émetteur, soit en récepteur (Fig.I-1-2-b). Ici, une ligne supplémentaire est nécessaire pour fixer le sens des échanges. Elle commande le multiplexage interne des liaisons (utilisation d'éléments de type "3 états") (Fig.I-1-2-c). On doit veiller à ce qu'en aucun cas 2 éléments configurés en émetteur commandent l'état du bus simultanément. Dans le cas général, plusieurs sous-ensembles peuvent être connectés sur un même bus, ce qui permet de minimiser le nombre d'interconnexions.

a) Bus uni-directionnel

E R 4

Symbole

E R

c) Multiplexage pour liaison bi-directionnelle

4

Symbole

E/R E/R E/R E/R

b) Bus bi-directionnelcommande3 états

Figure I-1-2 Un calculateur numérique se présente de façon générale comme suit : une unité de traitement (UT) travaille sur des données stockées dans un bloc "mémoire" (MEM). L'introduction des données et la récupération des résultats s'effectuent par l'intermédiaire d'un organe "d'entrée-sortie" (E/S) (Fig.I-1-3). Les liaisons entre ces éléments s'effectuent par des bus.

-6-

Page 8: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

E/S UT MEM

BUS BUSEXTERIEUR

Figure I-1-3

Nous analyserons successivement ces 3 fonctions dans ce premier chapitre.

-7-

Page 9: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

I-1 FONCTION MEMOIRE

I-1-1 Définitions Une mémoire est un ensemble de cellules élémentaires qui stockent chacune un bit. Le nombre de cellules est appelé "capacité" de la mémoire. A chaque cellule sont associées 2 informations (Fig. I-1-4) : - une adresse (numéro) permettant de désigner la cellule, - une donnée représentée par son état.

Cellules

Adresse :

numéro de

la cellule

Données :

Contenu

de la cellule

Mémoire

Figure I-1-4

La possibilité d'accéder à une cellule quelconque en fournissant son adresse est appelée "accès aléatoire". On distingue un mode de lecture permettant de connaître l'état de la cellule sélectionnée et un mode d'écriture permettant d'imposer son état. Ces 2 modes sont définis par l'état d'une ligne de lecture-écriture (Read/Write : R/W). Note : la plupart des mémoires à semi-conducteur sont à accès aléatoire. Par contre les mémoires dites "de masse" qui ne sont pas décrites ici (disques, bandes, mémoires à bulles,..) sont à accès séquentiel.

I-1-2 Organisation des mémoires

I-1-2-1 Organisation par bits Soit n la capacité de la mémoire. Généralement on a : n = 2N, où N représente le nombre de lignes d'adresse. Ainsi, avec N=8 on peut adresser 28 = 256 cellules élémentaires. * Fonctionnement en lecture Chaque cellule peut être lue indépendamment si l'on connecte sa sortie à une entrée d'un multiplexeur (n --> 1). Les entrées de sélection du multiplexeur reçoivent l'adresse.

-8-

Page 10: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

La réalisation la plus simple pour la cellule est une simple connexion à 1 ou à 0 selon l'état à lui donner (solution câblée). Dans ce cas, la mémoire est dite à lecture seule. Si l'on désire pouvoir modifier le contenu de la cellule, il faut remplacer la cellule précédente par un élément dont l'état peut changer ; une bascule de type D par exemple possède cette propriété. Un schéma possible d'organisation pour synthétiser une mémoire à lecture et écriture (N=2) est présenté (Fig.I-1-5).

DCK

Q

DCK

Q

DCK

Q

DCK

Q

DCK

Q

DEMUX

MUX

E

ADR.

R/W S

2

Cellule de base

Figure I-1-5

* Fonctionnement en écriture La sélection de la cellule dont on veut fixer l'état s'effectue par un démultiplexeur. En fonction de la valeur de l'adresse, le signal d'écriture est aiguillé vers l'entrée d'horloge de la cellule choisie parmi les 4. La donnée présente sur l'entrée D est alors transférée dans la bascule sélectionnée. * Association en série Un exemple d'association de 2 mémoires en série est présenté (Fig.I-1-6).

-9-

Page 11: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

EE1 E2

2

ME M

1

MEM

MUXS1 S2

S

ADR

AN+1

R/WDEMUX

N

Figure I-1-6

Cette structure peut être étendue à un nombre de mémoires élémentaires en puissance de 2 par l'utilisation de multiplexeurs et démultiplexeurs de taille adaptée.

I-1-2-2 Organisation par mots Cette organisation est obtenue en mettant en parallèle des mémoires de 1 bit (Fig.I-1-7).

E N T R E E

S O R T I E

ADR

R/W

N

Figure I-1-7

* Problème de la sélection des cellules Dans la réalisation précédente, la sélection des cellules s'effectue de façon "linéaire". Lorsque le nombre de bits augmente, la taille des multiplexeur et démultiplexeur croît de la même façon, ce qui pose des problèmes de réalisation technologique. Il est alors plus judicieux d'opérer une sélection matricielle. Ainsi le bus d'adresse de dimension N est, par exemple, divisé en 2 bus de dimension N/2. Les cellules sont disposées sous la forme d'une matrice de dimension 2N/2*2N/2. Une cellule est sélectionnée à l'intersection d'une ligne et d'une colonne (Fig.I-1-8) par un opérateur logique de type "ET".

-10-

Page 12: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

N/2

N/2

DECODEUR

MUX./DEMUX

ADRESSE

DONNEE

DECODEUR

colonne

lignesélect.

donnée

Figure I-1-8

I-1-3 Classification des mémoires Les mémoires sont principalement divisées en 2 classes : - les mémoires "mortes" (Read Only Memory ou ROM), - les mémoires "vives" (Random Access Memory ou RAM).

I-1-3-1 Mémoires mortes Les mémoires mortes sont caractérisées par le fait qu'elles sont à lecture seulement. L'état de chaque cellule est déterminé par son forçage à 1 ou à 0 réalisé par exemple par la présence ou l'absence d'une connexion. On est amené à établir une seconde classification selon la technologie utilisée : - mémoire programmable par masque également appelée ROM, - mémoire programmable électriquement (Programmable Read Only Memory ou PROM), - mémoire programmable électriquement et effaçable optiquement (Erasable Programmable Read Only Memory ou EPROM), - mémoire programmable et effaçable électriquement (Electrically Erasable Programmable Read Only Memory ou EEPROM). Un exemple de réalisation de ROM est présenté (Fig.I-1-9). Chaque cellule est constituée d'une diode mise en service à l'intersection d'une ligne et d'une colonne. C'est au moment de la métallisation (étape finale de la fabrication de la mémoire) que la connexion est réalisée ou non selon l'état à donner à la cellule.

-11-

Page 13: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

MULTIPLEXEUR 4-->1ADRESSES

SORTIE

2 --> 4

DECODEUR

Figure I-1-9

Le principe des PROM est similaire, mais la connexion est réalisée par un fusible (Fig.I-1-10-a). Toutes les cellules sont initialement dans le même état (fusibles intacts). Dans une phase de "programmation", les cellules devant avoir l'état opposé à l'état initial sont sélectionnées successivement et un courant d'intensité élevée est appliqué afin de fondre le fusible. Ces cellules ne pourront plus changer d'état par la suite. Le principe des EPROM est analogue, mais la connexion est réalisée par un transistor à effet de champ (Fig.I-1-10-b). La technologie utilisée est de type "MOS à grille flottante" (Fig.I-1-11).

Fus

Cellule PROM à fusibles Cellule EPROM

(a) (b)

Figure I-1-10

-12-

Page 14: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

source drain

SiO2

AL AL

SUBSTRAT NP+ P+

grille flottante

Figure I-1-11

A l'état initial la connexion est établie car le transistor est conducteur. Pour bloquer le transistor, on applique une tension supérieure à la tension de claquage de la jonction PN ; des électrons de forte énergie sont alors injectés dans la grille flottante. Une fois la tension disparue, ces électrons restent prisonniers car la grille est entourée d'isolant. Pour changer l'état des cellules, seule une exposition de la mémoire au rayons ultraviolet permet d'extraire les électrons prisonniers dans la grille et ainsi de remettre la mémoire dans son état initial pour une nouvelle programmation. Ici il s'agit d'un effacement global de la mémoire. Dans le cas des EEPROM, la cellule est plus complexe car elle doit permettre l'évacuation des charges stockées dans la grille. Le retour à l'état initial (effacement) est réalisé par l'application d'une tension de "déprogrammation". L'effacement est sélectif. Notes : - une variante de ces mémoires est connue sous le nom de mémoire "FLASH". - dans les mémoires programmables, les temps d'écriture ou d'effacement sont beaucoup plus grands que les temps d'accès à l'information en lecture.

I-1-3-2 Mémoires vives Les mémoires vives également appelées RAM permettent un accès aléatoire à chaque cellule aussi bien en lecture qu'en écriture. On distingue ici deux types fonctionnant selon des principes différents : - les mémoires statiques (SRAM), - les mémoires dynamiques (DRAM). * Mémoires statiques Ici chaque cellule est constituée par un élément bistable (Flip-Flop) (Fig.I-1-12-a). Une fois mise dans un certain état par l'opération d'écriture, la cellule reste dans cet état jusqu'à une écriture de l'état opposé ou jusqu'à disparition de la tension d'alimentation. Une mémoire statique comprend 3 bus (Fig.I-1-12-b) : - un bus d'adresse (entrée), - un bus de donnée (entrée, sortie ou entrée-sortie), - un bus de commande (lecture-écriture (R/W), sélection de boîtier (/CS)). Le rôle du signal de sélection est le suivant : - s'il est actif, la mémoire fonctionne selon le mode déterminé par la ligne d'écriture-lecture,

-13-

Page 15: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- s'il est inactif, l'écriture est impossible, et en lecture, le bus de donnée est mis en haute impédance.

b)

Adresse

Donnée

R/W

Sélection(/CS)

SRAM

VCC

VSS

LIGNE DE SELECTION

LIGNES DE DONNEES

a)

Figure I-1-12 Une grandeur importante est le temps d'accès de la mémoire caractérisé par le temps qui s'écoule entre l'application d'une adresse et la disponibilité en sortie d'une donnée valide. Ce temps détermine la fréquence maximum d'utilisation de la mémoire. La période minimum est appelée temps de cycle. Les chronogrammes typiques d'une SRAM sont présentés (Fig.I-1-13).

T cycle (lecture)

ADRESSE

DONNEE valideinvalide

SELECTION (/CS)

T accès (adresse)

T accès (sélection)

T cycle (écriture)

ADRESSE

ECRITURE (R/W)

T AS TCS

SELECTION (/CS)

T H

valideDONNEE

T HT SU

(R/W = 1)

Figure I-1-13

TSU et TH sont respectivement le temps de pré-établissement (Setup) et le temps de maintien (Hold) nécessaires pour assurer que la donnée soit correctement prise en compte. Nous noterons que le temps de cycle est égal au temps d'accès. * Mémoires dynamiques Les mémoires dynamiques fonctionnent selon un principe différent. Chaque cellule est constituée d'un condensateur dont la charge représente l'état (Fig.I-1-14-a). Une fois chargé, le condensateur ne peut se décharger que dans une résistance très élevée (technologie MOS). La constante de temps de décharge de l'ordre de quelques mS impose de "rafraîchir" chaque cellule par un accès périodique en écriture ou en lecture.

-14-

Page 16: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

b)

Adresse

Entrée

R/W

DR

AM/RAS

/CAS

Sortie

Sélection de ligne

Ligne de bit

Condensateur

a)

de stockage

Figure I-1-14

La disposition interne des cellules est toujours matricielle. Du fait du nombre élevé de lignes d'adresse nécessaire à l'adressage d'un grand nombre de cellules, il devient nécessaire de multiplexer les adresses lignes et colonnes pour diminuer le nombre de connexions du boîtier mémoire. L'organisation externe d'une mémoire dynamique (Fig.I-1-14-b) est très voisine de celle d'une mémoire statique, si ce n'est la présence de 2 lignes de validation : - sélection de ligne (Row Adress Select /RAS), - sélection de colonne (Column Adress Select /CAS). On notera l'absence de lignes de sélection de boîtier, la sélection effective de la mémoire étant réalisée par les validations successives de /RAS et de /CAS. D'autre part, la seule activation de /RAS rafraîchit simultanément toutes les cellules d'une ligne dont le numéro est fourni sur le bus d'adresse. Il existe certains cycles spéciaux tels que : - mode "page" permettant un accès rapide aux éléments d'une même ligne, - rafraîchissement par séquence "/CAS avant /RAS" utilisant un compteur interne, - lecture-modification-écriture, - etc... Un chronogramme typique d'opérations de lecture et d'écriture d'une DRAM est présenté (Fig.I-1-15).

-15-

Page 17: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

RAS

CAS

T cycle

T crp

valideDONNEE

T su T h

T su T h

ECRITURE

ADR. ligne colonne

DONNEET cac

T racvalide

RAS

CAS

T cycle

T crp

LECTURE

ADR. ligne colonne

T hT su

Figure I-1-15

On notera que dans les mémoires dynamiques le temps de cycle est différent du temps d'accès à cause du temps de "préchargement (Tcrp)". Seul le temps de cycle fixe la fréquence maximum de fonctionnement de la mémoire.

I-1-3-3 Association de mémoires La plupart des boîtiers de SRAM possède un bus de données bidirectionnel et une ou plusieurs lignes de sélection. Lorsqu'il y a plusieurs lignes de sélection, la mémoire est activée quand toutes les lignes sont actives simultanément (opérateur ET logique interne). Une mémoire non sélectionnée a son bus de données à l'état haute impédance en lecture et n'est pas modifiée par une opération d'écriture. Ceci permet d'associer en série plusieurs boîtiers en reliant ensemble les bus d'adresse, de donnée et de lecture-écriture. Les lignes d'adresse supplémentaires sont décodées par un démultiplexeur qui commande les lignes de sélection des boîtiers (Fig.I-1-16). Dans le cas des mémoires dynamiques, le principe d'association reste le même, le démultiplexage se faisant soit sur les lignes /RAS, soit sur les lignes /CAS (Fig.I-1-17).

-16-

Page 18: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

ADR.

R/W

N

DEMUX

DONNEE

Sélections

ADR. SUP

SELECT.

SRAM SRAM SRAM

Figure I-1-16

/RAS

DEMUX

DONNEE

ADR. SUP

/CAS.

DRAM DRAM DRAM

ADR. N

R/W/CAS

DEMUX

DONNEE

ADR. SUP

/RAS.

DRAM DRAM DRAM

ADR. N

R/W

Figure I-1-17

I-1-3-4 Autres types de mémoire * Mémoires non volatiles Cette RAM garde son contenu même après coupure de l'alimentation du système dans lequel elle est installée. On trouve 2 concepts : - maintien de la tension d'alimentation par une pile ou une batterie associée en "tampon" avec l'alimentation de la mémoire. La technologie est de type CMOS pour obtenir une consommation très réduite (quelques micro-ampères) durant la phase de maintien. - association d'une EEPROM et d'une RAM dans un même boîtier. Ce concept permet de cumuler les avantages des 2 technologies. L'utilisateur travaille avec une RAM dont le contenu est sauvegardé dans l'EEPROM au moment de la coupure et restitué à la mise sous tension. * Mémoires à double accès On en distingue 2 sortes : - Mémoire double port

-17-

Page 19: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Il s'agit essentiellement d'une SRAM possédant 2 bus d'accès indépendants (adresse, donnée, commande) et des lignes supplémentaires indiquant les conflits d'accès en écriture à la même cellule. Ce type de mémoire est utilisé pour le partage et l'échange de données entre 2 systèmes. - Mémoire vidéo ou VRAM Il s'agit d'une DRAM à laquelle est associé un registre à décalage dont la longueur est égale à celle d'une ligne de la matrice mémoire (Fig.I-1-18). En plus des cycles classiques propres aux DRAM, il existe des cycles spéciaux de transfert mémoire-registre et registre-mémoire. Ce type de mémoire est particulièrement bien adapté à la réalisation de mémoires d'images ou de plans graphiques.

VRAM

partie

DRAM

partieVIDEO

256

lignes

256 colonnes

Transfert

REGISTREE S

signauxDRAM

signauxVIDEO H

Transfert TRF

Figure I-1-18

* FIFO (First In - First Out) Constitué autour d'une RAM à double accès, ce "registre" possède 2 compteurs d'adresses internes (pointeurs), l'un désignant la case à écrire, l'autre celle à lire (Fig.I-1-19). Les lignes d'adresse ne sont pas accessibles à l'extérieur : le type d'accès est ici séquentiel ou série. En plus des lignes de donnée, d'écriture et de lecture, on trouve les lignes d'indication de "registre vide" et "registre plein". La première signale l'égalité des pointeurs, la seconde que le pointeur d'écriture "rattrape" celui de lecture. Ces lignes permettent de gérer correctement le transfert d'informations entre 2 systèmes qui peuvent travailler à des fréquences différentes (asynchronisme). Il existe également des lignes permettant de "cascader" plusieurs FIFO pour obtenir de plus grandes capacités.

-18-

Page 20: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

FIFO

DONNEES DONNEES

ECRITURE

"PLEIN" "VIDE"

LECTURE

Pointeur

écriture

Pointeur

lecture

MEMOIRE

Figure I-1-19

-19-

Page 21: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

I-2 L'UNITE DE TRAITEMENT I-2-1 Structure interne I-2-1-1 Rôle de l'ALU I-2-1-2 Registres de données I-2-1-3 Registres d'adresses I-2-1-4 Unité de commande I-2-2 Aspect logiciel I-2-2-1 Classification des instructions I-2-2-2 Format des instructions I-2-2-3 Modes d'adressage I-2-2-4 Instructions de saut

I-2-1 Structure interne L'unité de traitement (U.T.) est l'élément central du calculateur numérique. Elle possède des fonctions pour effectuer des opérations sur des données numériques (mots de donnée ou d'adresse) et des éléments de stockage interne. La première fonction est réalisée par une Unité Arithmétique et Logique (ALU). La seconde est réalisée par des registres. Parmi ceux-ci on distingue : - des registres de données, - des registres d'adresse, - un registre d'état contenant différents "indicateurs" caractéristiques des événements qui se produisent lors de l'exécution de chaque opération. Le contenu de la mémoire est composé de 2 types d'information : - un programme comprenant une suite d'instructions, - des données devant être traitées par le programme. Chaque instruction est codée sous forme binaire ; l'unité de traitement doit donc en assurer le décodage pour déduire les opérations élémentaires à effectuer. Pour cela elle dispose d'un registre d'instruction qui présente à une unité de commande (U.C.) ou "séquenceur", le mot codant l'instruction courante. Sous l'action d'une horloge, l'U.C. élabore les commandes nécessaires à l'exécution de l'instruction. Dans le cas général, elle tient également compte du contenu du registre d'état où sont enregistrés certains résultats liés au déroulement des instructions (dépassements, résultats nuls,...). Les données et les adresses sont véhiculées par des bus en général de formats différents : - le bus de données fixe la longueur du mot échangé avec la mémoire,

-20-

Page 22: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- le bus d'adresse détermine la capacité maximale d'adressage du système, c'est à dire le nombre maximum de mots de la mémoire associée (ex : 16 bits "adressent" 64 Kmots). Dans certains cas, ces 2 bus sont multiplexés sur un seul bus. Une logique externe doit alors effectuer le démultiplexage. Un certain nombre de signaux pour la gestion des échanges avec la mémoire et les organes d'entrée-sortie sont rassemblés dans un "bus de commande". L'architecture interne d'une unité de traitement peut être schématisée par la figure I-2-1.

BUS

DE

DO

NN

EE

BUS

D'A

DR

ESSE

ALUDE

DONNEE D'ADRESSE

ETATINSTRUCTION PC

U.C.

UNITE DE TRAITEMENT

REGISTRE(S) REGISTRE(S)

HORLOGE

BUS

DE

CO

MM

AND

E

MICROCOMMANDES

BUS INTERNE

Figure I-2-1

I-2-1-1 Rôle de l'ALU Comme son nom l'indique, cette unité peut exécuter 2 types d'opérations. - Opérations arithmétiques Elles incluent l'addition et la soustraction qui sont des opérations de base (une soustraction est une addition avec le complément à deux), la multiplication et la division. Les données traitées sont considérées dans des représentations "entières". Les opérations plus complexes (sinus, log, exp,..) peuvent être obtenues à partir des 4 opérations (par exemple par développement limité). Elles sont réalisées dans une unité de calcul spécialisée (FPU : Floating Point Unit) qui traite des données en représentation en "virgule flottante". - Opérations logiques

-21-

Page 23: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Ces opérations sont effectuées bit à bit sur les bits de même poids de 2 mots (Fig.I-2-2). On trouve : ET, OU, OU exclusif, PAS,...

OPERATIONS : ET,OU,XOR

0N-1

0N-1

0N-1

A

B

C

Figure I-2-2

Un autre type d'opérations concerne les décalages et rotations (droite et gauche). Ces différentes opérations diffèrent par la façon d'entrer et de sortir les bits de poids extrêmes (Fig.I-2-3). Elles sont utilisées par exemple pour effectuer la multiplication et la division à partir de l'addition et la soustraction.

0N-1C

0N-10C

0N-1C

0N-1C

Décalages logiques

Rotations

Décalages arithmétiques

0N-10C

0N-1C0

Figure I-2-3

Après chaque opération effectuée dans l'ALU, le registre d'état contient un certain nombre d'informations liées à leur exécution. On trouve généralement : signe du résultat, résultat nul, dépassement de capacité (retenue ou Carry (C)), etc..

I-2-1-2 Registres de données Il s'agit de registres d'usage général recevant des opérandes, des résultats intermédiaires ou des résultats. Ils évitent des appels fréquents à la mémoire, réduisant ainsi les temps de calcul. Les registres de données remplissent souvent la fonction d'accumulateur, permettant des opérations du type : ACCU F(OPERANDE)-> ACCU, avec F() : opération logique ou arithmétique.

I-2-1-3 Registres d'adresses

-22-

Page 24: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Ces registres servent à gérer l'adressage de la mémoire. Parmi ceux-ci, un registre est fondamental dans l'exécution du programme : le compteur ordinal (Program Counter). Il contient l'adresse de l'instruction courante. De façon générale, les instructions sont rangées séquentiellement en mémoire, ce qui implique un adressage séquentiel de celles-ci par incrémentation d'adresse. Un programme élémentaire comprend les étapes suivantes : - initialisation du PC avec l'adresse de début de programme, - envoi du contenu du PC sur le bus d'adresse, lecture du contenu de la case adressée par PC et transfert dans le registre d'instruction (phase de recherche ou "Fetch"), - décodage de l'instruction par l'U.C., - exécution de l'instruction, - incrémentation du PC, - etc... Le contenu du PC peut cependant être modifié conditionnellement ou non par des instructions de rupture de séquence. * Registres d'index ou pointeurs Ces registres sont plus spécialement adaptés au traitement des éléments d'un tableau. Ils sont en général munis de propriétés d'incrémentation et de décrémentation. Un cas particulier de pointeur est le pointeur de pile (Stack Pointer SP). Ce registre permet de stocker des données ou des adresses selon le principe du "Dernier Entré Premier Sorti" ou "LIFO" (Last In First Out). Dans certain cas, la pile est contenue dans l'U.T., mais la plupart du temps elle est située en mémoire. Nous analyserons son mécanisme ultérieurement.

I-2-1-4 Unité de commande Il s'agit essentiellement d'un automate exécutant les différentes séquences propres à chaque instruction. Cet automate peut être réalisé de plusieurs façons : - de façon câblée, par les éléments classiques de la logique séquentielle (portes, bascules, ..), - de façon microprogrammée, par l'utilisation de réseaux combinatoires non simplifiés ou PROMS (modèle de Wilkes). Dans ces 2 cas, le jeu d'instructions est fixe. Si l'utilisateur a accès au contenu des PROMS, le système est "microprogrammable". La plupart des unités de traitement sont microprogrammées et donc à jeux d'instructions fixes.

-23-

Page 25: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

I-2-2 Aspect logiciel

I-2-2-1 Classification des instructions Les instructions peuvent porter soit sur les données, soit sur les adresses. Dans le premier cas, il s'agit d'un traitement essentiellement effectué dans l'ALU, par exemple : addition, décalage, opérations logiques, transfert U.T. <--> mémoire, etc... Dans le deuxième cas, il s'agit de la gestion du PC : possibilité de fixer arbitrairement ou conditionnellement l'adresse de la prochaine instruction (saut), d'"appeler" une suite d'instruction, puis de continuer en séquence (sous-programme).

I-2-2-2 Format des instructions De façon générale une instruction est composée de 2 informations : - le code-opération indiquant le type d'opération à effectuer, - la désignation des opérandes, c'est à dire des données sur lesquelles doit s'appliquer l'opération. Dans la plupart des cas, l'instruction présente en mémoire contient ces 2 informations dans des mots consécutifs. Le nombre d'instructions (jeu d'instructions) est directement lié au format du code-opération. Ainsi un octet permet de distinguer au maximum 256 instructions différentes.

I-2-2-3 Modes d'adressage Une opération se présente sous la forme générale suivante : (Opérande source 1) F (Opérande source 2) --> Destination On parle alors de "machines à 3 adresses". Pour éviter de spécifier systématiquement ces 3 adresses à chaque opération, les opérandes sources ou/et destination sont contenus dans les registres internes de l'U.T. Ainsi, la plupart des U.T. spécifient une seule adresse selon : (Registre N) F (Opérande) --> (Registre N) Les façons de désigner les opérandes constituent les "modes d'adressage". On rencontre principalement les modes suivants : * Adressage implicite Ici les opérandes sont désignés dans le code-opération ; les données concernées se trouvent dans les registres internes de l'U.T. (Fig.I-2-4). ***********

-24-

Page 26: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Format : * CODE-OP * ***********

IMPLICITE

UT

CODE OP

MEMOIRE

PC

opérationinterne

Figure I-2-4

* Adressage immédiat L'opérande est fourni explicitement, soit dans le code-opération, soit immédiatement après le code-opération (Fig.I-2-5). ************* ************ Format : * CODE-OP * * VALEUR * ************* ************

IMMEDIAT

UT

CODE OP

MEMOIRE

PC

opérande

Figure I-2-5

* Adressage absolu ou étendu L'opérande est trouvé à l'adresse fournie à la suite du code-opération (Fig.I-2-6). ************ ************ Format : * CODE-OP * * ADRESSE * ************ ************

-25-

Page 27: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

ETENDU

UT

CODE OP

MEMOIRE

PC

ADR.

ADR opérande

Figure I-2-6

* Adressage indirect Ici, on peut distinguer 2 types (Fig.I-2-7) : - par registre : l'opérande est trouvé à l'adresse pointée par le registre, celui-ci étant désigné dans le code-opération (mode implicite), - par la mémoire : l'opérande est trouvé à l'adresse contenue dans la case mémoire dont l'adresse est indiquée à la suite du code-opération. ************ ************************** Format : * CODE-OP * * ADRESSE DE L'ADRESSE * ************ **************************

INDIRECT(registre)

UT

CODE OP

MEMOIRE

PC

opérandeREGISTRE

INDIRECT(mémoire)

UT

CODE OP

MEMOIRE

PC

ADR1

ADR2 opérande

ADR2ADR1

Figure I-2-7

* Adressage indexé et relatif L'opérande est trouvé à une adresse calculée de la façon suivante : - un pointeur fournit une adresse dite "de base", - la valeur indiquée à la suite du code-opération est appelée "déplacement (offset)", - l'adresse de l'opérande est obtenue en additionnant la base au déplacement. Ce déplacement peut être exprimé en valeur signée et le pointeur peut être un registre d'index ou le PC lui-même (Fig.I-2-8).

-26-

Page 28: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

************ ***************** Format : * CODE-OP * * DEPLACEMENT * ************ *****************

INDEXE

UT

CODE OP

MEMOIRE

PC

DEPL.

opérande

INDEX

DEPL.

Figure I-2-8

* Adressage auto-indexé Le calcul de l'adresse est identique au cas précédent, mais le registre concerné est modifié. Plusieurs cas sont possibles : - la nouvelle base est égale à l'adresse calculée, - le pointeur est incrémenté ou décrémenté après ou avant l'opération. Ce type d'adressage est utilisé par le mécanisme de pile (Figure I-2-9).

EMPILEMENT (PUSH)

UT

CODE OP

MEMOIRE

PC

SP SP

SP

avant après

(1)

(2)

DEPILEMENT (PULL)

UT

CODE OP

MEMOIRE

PC

SPSP

SP

avant après

(1)(2)

Figure I-2-9

Le SP désigne le sommet de la pile : - l'empilement consiste à stocker l'information à l'adresse pointée par le SP, puis à décrémenter la valeur du SP, - le dépilement consiste à incrémenter le SP, puis à lire l'information pointée par le SP. Note : l'ordre de ces opérations peut être inversé dans certaines machines.

-27-

Page 29: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

I-2-2-4 Instructions de saut Le déroulement "normal" d'un programme est une suite d'opérations correspondant à des instructions rangées séquentiellement en mémoire et adressées par incrémentation du PC. Pour rompre ce type de séquence on doit disposer d'instructions de "saut" (Fig.I-2-10). Il existe 2 types de saut : - le saut inconditionnel, - le saut conditionnel. Dans le premier cas, le PC est chargé avec l'adresse spécifiée dans l'instruction (plusieurs modes d'adressage sont possibles). La prochaine instruction sera exécutée à partir de cette adresse. Dans le deuxième cas, le déroulement du programme dépend du test d'une condition (état d'un bit du registre d'état) : - si la condition est réalisée, le saut s'effectue, - si la condition n'est pas réalisée, le programme continue en séquence.

SAUT CONDITIONNEL

UT

CODE OP

MEMOIRE

PC

avant après

ADR

ETAT

ADR PC(CODE OP)

PC(CODE OP)condition

non réalisée

condition

réaliséeaprès

PC

SAUT INCONDITIONNEL (étendu)

UT

avant

CODE OP

MEMOIRE

PC

ADR

ADR

(CODE OP)

Figure I-2-10

* Sous-programme Lorsqu'un même programme est utilisé plusieurs fois, il serait maladroit de réécrire ce programme à chaque fois qu'on en a besoin. Il faut donc que ce programme soit "appelable" de plusieurs endroits en mémoire et qu'après son exécution, le déroulement reprenne à l'instruction suivant celle d'appel. Ce programme particulier prend alors le nom de "sous-programme". La seule différence avec un programme "normal" est la présence à la fin du sous-programme d'une instruction spéciale appelée "Retour de Sous-Programme (RTS)". Il est nécessaire de mémoriser l'adresse de retour à chaque appel. On doit donc réserver, soit dans l'unité de traitement, soit en mémoire, un emplacement pour stocker automatiquement cette information à chaque appel de sous-programme.

-28-

Page 30: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Si l'on désire que, pendant l'exécution du sous-programme on puisse appeler un autre sous-programme et ainsi de suite, il est nécessaire de pouvoir stocker autant d'adresses de retour qu'il y a de sous-programmes appelés (niveaux de sous-programmes). La gestion du stockage de ces adresses ne peut se faire que par le mécanisme de pile (Dernier Entré - Premier Sorti). La taille de la pile fixe le nombre maximum de niveaux admissibles (Fig.I-2-11).

SP

IMBRICATION DE SOUS-PROGRAMMES

MEMOIRE

ADR1

PILE

MEMOIRE

ADR1

PILE

MEMOIRE

ADR1

PILE

MEMOIRE

ADR1

PILE

MEMOIRE

XXXX

PILE

(1) (2) (3) (4) (5)

ADR2 ADR2 ADR2SPSP

SPSP

(1)

(2)

(3)

(4)(5)

ADR1

ADR2

CODE OP

MEMOIRE

PC

ADR

MEMOIRE

ADR

RTS

MEMOIRE

SP ADRET

ADRETsous-programme

APPEL

RETOUR

(1)

(2)

(1) (2)

(CODE OP)

(CODE OP)

APPEL DE SOUS-PROGRAMME

PILE

Figure I-2-11 La figure I-2-12 illustre l'imbrication de sous-programmes et montre les états successifs de la pile au cours des phases d'exécution des programmes et des sous-programmes.

Figure I-2-12

-29-

Page 31: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

I-3 LES ORGANES D'ENTREE-SORTIE I-3-1 Fonctions de base I-3-1-1 Isolation-Mémorisation I-3-1-2 Synchronisation I-3-1-3 Adressage des organes d'E/S I-3-1-4 Adaptation du format des informations I-3-2 Procédures d'échange I-3-2-1 Mode programmé par test de mot d'état I-3-2-2 Mode programmé par interruption I-3-2-3 Mode en "accès direct mémoire (DMA)"

I-3-1 Fonctions de base

I-3-1-1 Isolation-Mémorisation L'échange d'informations avec l'environnement (entrée-sortie) se fait à l'aide d'organes spécialisés dont les fonctions élémentaires sont les suivantes : - isolation du bus de donnée du monde extérieur, - mémorisation des valeurs transmises pendant le temps nécessaire à leur prise en compte. Ces 2 fonctions sont réalisables par des registres aussi bien en entrée qu'en sortie ; on parle de "portes d'entrée-sortie" (Input-Output Port). En sortie, ces fonctions sont réalisées par un registre de type "D" (Fig.I-3-1-a). En entrée, généralement seule la fonction isolation est réalisée par un élément "tampon 3 états" (Fig.I-3-1-b). C'est alors au périphérique de maintenir la donnée stable sur le bus externe pendant la durée de sa prise en compte.

BUS DONNEE

ECRITURE

BUS EXTERNED Q

E/S

CK

a)

LECTURE

BUS EXTERNEBUS DONNEE

E/S

/CS

b)

Figure I-3-1

I-3-1-2 Synchronisation

-30-

Page 32: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Des lignes de dialogue doivent indiquer qu'une donnée est disponible en entrée ou en sortie. Ces lignes peuvent être considérées comme des entrées "normales" de données ou bien comme des lignes spécialisées. L'occurrence d'un événement externe se manifeste par un changement d'état de la ligne de dialogue (front). Si ce changement est bref, il peut ne pas être détecté par l'U.T. C'est la raison pour laquelle il est nécessaire de mémoriser cet événement dans une bascule. Un mécanisme de synchronisation peut être le suivant (Fig.I-3-2) : - l'U.T. met initialement à 0 la bascule (RAZ), - un front externe met à 1 celle-ci, - en testant l'état de la bascule, l'U.T. peut savoir si un événement a eu lieu.

Q D 1CK

VERS BUS DONNEE

LECTURERAZ

CLEAR

évènement externe

Figure I-3-2

En général, les états des différentes bascules de synchronisation sont regroupés dans un registre d'état. Un échange de données entre un organe d'E/S et un périphérique nécessite en général 2 lignes de dialogue : l'une indiquant la transmission d'une donnée (validation) par l'émetteur, l'autre indiquant que le récepteur à pris en compte cette donnée (acquittement) (Fig.I-3-3).

E/S PERIPH.

Validation

Acquittement

DONNEES

ENTREE DE DONNEES

E/S PERIPH.

Validation

Acquittement

DONNEES

SORTIE DE DONNEES

Figure I-3-3

I-3-1-3 Adressage des organes d'E/S Deux possibilités sont principalement utilisées à l'heure actuelle : - Concept "INTEL" (Fig.I-3-4-a)

-31-

Page 33: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Les organes d'E/S et la mémoire sont adressés par le même bus d'adresse, mais validés en écriture ou en lecture par des signaux distincts. L'espace d'adressage des E/S est plus petit que l'espace mémoire, ce qui n'est pas gênant, étant donné le nombre restreint de liaisons externes nécessaires à un système. Pour activer ces E/S, des instructions spéciales sont nécessaires (IN, OUT). - Concept "MOTOROLA (Fig.I-3-4-b) Les organes d'E/S sont considérés comme des positions mémoire où l'on lit (Entrée) ou écrit (Sortie) des données. L'avantage de cette approche est que l'on peut utiliser le jeu d'instructions complet de l’U.T. pour manipuler les informations provenant de ces organes. L'inconvénient est que la zone d'E/S de petite dimension "empiète" sur l'espace total adressable normalement réservé à la mémoire.

MEM

E/S

U.T.

écriturelecture

écriturelecture

a)

zonemémoire

zoneE/S

MEM

E/S

U.T.

lect/ecr

b)

zonemémoireadressable

E/S

MEM

MEM

Figure I-3-4

I-3-1-4 Adaptation du format des informations Les organes d'E/S sont également chargés de transformer les informations parallèles véhiculées sur le bus de donnée, sous une forme compatible avec celles des unités périphériques utilisées. Les 2 principaux modes de transmission sont les transmissions "parallèles" et les transmissions "séries". Dans ce dernier cas, les organes d'E/S assurent les transformations parallèle-série (sortie) ou série-parallèle (entrée).

I-3-2 Procédures d'échange La transmission d'une donnée entre un émetteur et un récepteur ne peut s'effectuer correctement que si ce dernier est prêt à la recevoir. Ceci implique que le système émetteur doit être informé de l'état de disponibilité du récepteur. La manière d'informer l'U.T. de l'état du périphérique est fonction du mode de transfert choisi.

-32-

Page 34: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Il existe 2 modes de transfert : - mode programmé utilisant les procédures de test de mot d'état ou d'interruption, - mode en "Accès Direct Mémoire (DMA)".

I-3-2-1 Mode programmé par test de mot d'état L'organe d'E/S fournit un mot d'état indiquant les informations suivantes : - le périphérique est prêt à émettre ou à recevoir (Ready), - le périphérique a envoyé une donnée, - une erreur s'est produite pendant la transmission (série). Le programme de transfert est donc une boucle dont la structure est présentée (Fig.I-3-5).

Lecture mot d'état

prêt ?

Transfert donnée

N

O

(1)

(2) et (3)

MEM

OIR

E

UT E/S

(1)

(2)(3)

Ev.

Figure I-3-5

Remarque : dans ce programme, l'U.T. teste l'état du périphérique jusqu'à ce que ce dernier soit prêt ; elle se synchronise sur la vitesse de celui-ci.

I-3-2-2 Mode programmé par interruption L'inconvénient du premier mode est le ralentissement de l'U.T. qui est "asservie" à un périphérique dont la vitesse est souvent très faible. Un mode dans lequel le périphérique informe l'U.T. qu'il est disponible semble préférable. Mais, dans ce cas, il faut pouvoir interrompre le fonctionnement de l'U.T., exécuter le programme de transfert avec l'E/S, puis reprendre le programme qui était exécuté avant l'interruption sans avoir perdu d'informations. * Mécanisme des interruptions - Définitions Si le déroulement d'un programme peut être suspendu, puis repris, ce programme est interruptible.

-33-

Page 35: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Si l'U.T. peut, par une instruction, inhiber ou autoriser la prise en compte d'interruptions, les interruptions sont masquables. - Fonctionnement avec une source d'interruption (Fig.I-3-6) Les 2 conditions suivantes sont à respecter : - l'instruction en cours ne doit pas être perturbée, - l'état de l'U.T. doit être inchangé lorsque le programme interrompu reprend son déroulement. La première condition impose de terminer l'exécution de l'instruction en cours avant la prise en compte de l'interruption. La deuxième impose une sauvegarde de l'état de l'U.T. au moment de l'interruption, et une restitution à la fin du programme d'interruption. L'état de l'U.T. est également appelé "contexte". Dans certains cas, seuls les contenus du PC et du registre d'état sont sauvegardés. La sauvegarde des registres utilisés dans le programme d'interruption doit être prise en charge dans ce programme. L'adresse de début du programme d'interruption peut être fournie de plusieurs manières : - elle peut être contenue dans un "vecteur d'interruption" situé dans une adresse fixe en mémoire : le branchement à ce programme s'effectue donc par un saut indirect, - elle peut être fournie par l'organe d'E/S au moment de la prise en compte de l'interruption. A la fin du programme d'interruption, l'U.T. revient à l'exécution du programme initial par l'exécution d'une instruction de "retour d'interruption (RTI)". Ceci est réalisé automatiquement en restituant le contexte, puisque ce dernier inclut le contenu du PC. Bien entendu, la zone mémoire de sauvegarde ne doit pas être modifiée par le programme d'interruption.

MEM

OIR

E

UT E/S

(2)(3)

Demande IT(1)

PROGRAMME

PROG. D'INTERRUPTION

RTI

Sauvegarde

Restitution

Interruption(1) (2)

(3)

Ev.

Figure I-3-6

-34-

Page 36: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Note : le programme d'interruption est assimilable à un sous-programme, le moment et donc le lieu de l'appel n'étant pas prévisibles. - Fonctionnement avec plusieurs sources d'interruption Le mécanisme de fonctionnement précédemment décrit reste valable, mais deux problèmes supplémentaires sont à résoudre : - l'U.T. doit pouvoir identifier la source d'interruption avant d'exécuter un programme d'interruption spécifique à cette source, - dans le cas où plusieurs interruptions arrivent simultanément, il faut pouvoir régler le conflit : c'est la hiérarchisation des interruptions. Plusieurs cas liés au matériel sont rencontrés : - chaque E/S est connectée à une ligne d'interruption différente (Fig.I-3-7-a). L'U.T. identifie directement l'organe demandeur ; un vecteur est affecté à chaque ligne. Lorsque plusieurs demandes ont lieu simultanément, une règle de priorité est établie de façon interne. - toutes les E/S sont connectées à une entrée d'interruption commune (Ou câblé). Plusieurs solutions peuvent être adoptées : - solution logicielle (Fig.I-3-7-b ). L'U.T. entreprend à chaque interruption une scrutation séquentielle des registres d'état des organes d'E/S émetteurs d'interruption (Polling Sequence) suivant l'ordre de priorité décroissante. Cette recherche s'arrête lorsque un émetteur est identifié ; ce dernier est nécessairement celui qui a la plus haute priorité relative. Un saut au programme correspondant à l'organe identifié réalise une vectorisation programmée. Cette méthode peut être trop lente dans certaines applications. - solution matérielle. Plusieurs variantes sont possibles : - un circuit "contrôleur d'interruption" est utilisé. Il s'apparente à un codeur de priorité. Il fournit directement le numéro du vecteur d'interruption ou bien l'adresse de l'interruption de la source la plus prioritaire (Fig.I-3-7-c). - les organes d'E/S sont connectés entre-eux (chaînage ou "daisy chain"). En cas de simultanéité d'interruption, la disposition des éléments dans la chaîne établit la priorité (Fig.I-3-7-d).

-35-

Page 37: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

U.T.

MEM

E/S

E/S

VECT1

VECT2 (c)

IT

CO

NTR

OL.D

'IT

U.T.

MEM

E/S

E/S

VECT1

VECT2 (d)

IT

acq

U.T.

MEM

E/S

E/S

IT1

VECT1

VECT2

IT2

(a)

U.T.

MEM

E/S

E/S

VECT

IT

(b)

Figure I-3-7

Lorsque un programme d'interruption a été effectué, l'U.T. doit prendre en compte les interruptions de niveau inférieur qui étaient présentes ou qui ont eu lieu depuis le traitement de la première interruption. Comme un programme d'interruption peut être lui-même interrompu, l'imbrication des interruptions est similaire à celle des sous-programmes : une pile est donc nécessaire pour sauvegarder les contextes correspondant à chaque niveau d'interruption. De façon générale, les organes d'E/S peuvent être programmés pour activer les lignes d'interruption au moment de l'apparition d’événements particuliers : - périphérique prêt à recevoir, - réception d'une donnée, - fin de transmission (pour une transmission série par ex.), - erreur dans la transmission, - etc... La désactivation de la ligne d'interruption se fait automatiquement par la prise en compte (lecture ou écriture) des données au niveau de l'organe d'E/S émetteur de la demande.

-36-

Page 38: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

* Autres types d'interruption On trouve : - les commandes d'initialisation (RESET) qui sont non masquables et de priorité maximum. Elles servent à démarrer le système en plaçant dans le PC l'adresse de la première instruction à exécuter. Ici, l'opération de sauvegarde de contexte n'est pas nécessaire. - les interruptions logicielles qui permettent la sauvegarde automatique du contexte et l'appel de fonctions prédéfinies. A chaque interruption est associé un numéro ou type désignant un vecteur (mémoire d'indirection) dans une table.

I-3-2-3 Mode en "accès direct mémoire (DMA)" Ce mode permet le transfert de blocs de données entre la mémoire et le périphérique sans passer par l'U.T (Fig.I-3-8).

Adresse de début

Adresse de fin

Bloc

Mémoire

E/SEXTERIEUR

Figure I-3-8

Pour cela, un circuit appelé contrôleur de DMA, prend en charge les différentes opérations. On distingue principalement 2 modes de transfert : - mode "adresse implicite" ou "à 1 adresse", - mode "adresse explicite" ou "à 2 adresses". Dans le premier cas, l'échange s'effectue directement entre l'organe d'E/S et la mémoire. Le contrôleur de DMA dispose de l'adresse en mémoire du bloc à transférer. Il commande directement l'organe d'E/S lors du transfert grâce à des lignes de dialogue (Fig.I-3-9-a). Dans le deuxième cas, le transfert s'effectue en 2 étapes (cas d'un transfert en entrée) : - transfert de l'organe d'E/S vers le contrôleur, - transfert du contrôleur vers la mémoire.

-37-

Page 39: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Ici le contrôleur contient les 2 adresses concernées. Dans ce cas, des transferts peuvent être effectués de mémoire à mémoire (Fig.I-3-9-b).

MEM DMA

BUS DONNEE

BUS ADRESSE

E/S

MEM DMA

BUS DONNEE

BUS ADRESSE

E/S(MEM)

BUS ADRESSE

MEM DMA

BUS DONNEE

E/S(MEM)

(a)

(b)

Figure I-3-9 Une procédure d'échange possible dans le premier mode est la suivante (entrée de données) (Fig.I-3-10) : - le circuit d'E/S informe le contrôleur de DMA qu'il a reçu une donnée (1), - le contrôleur demande à l'U.T. une mise à l'état haute impédance de ses bus (bus request) (2), - dès que l'U.T. a libéré les bus, elle avertit le contrôleur (bus grant) (3), - le contrôleur effectue alors les opérations suivantes (4): - positionnement de l'adresse mémoire, - lecture de la donnée de l'organe d'E/S, - écriture de cette donnée en mémoire.

MEM UT DMA E/S

BUS DONNEE

BUS ADRESSE

IRQ

(1)

(4)

(2)

(3)

EXT

R/W

Figure I-3-10

-38-

Page 40: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Le contrôleur dispose de registres internes programmables indiquant l'adresse de début de bloc et le nombre de transferts à effectuer. Les transferts sont réalisés à des adresses successives par incrémentation du registre d'adresse et s'arrêtent lorsque le nombre programmé est atteint. A ce moment, l'U.T. est avertie de cet événement, soit par lecture du mot d'état du contrôleur, soit par une interruption issue de celui-ci. Note : le contrôleur de DMA peut gérer des transferts de donnée avec plusieurs organes d'E/S. Pour cela, il dispose de plusieurs "canaux" (lignes de dialogue et registres). Des règles de priorité doivent être utilisées pour régler les conflits de demande de transfert (priorités fixe ou tournante). * Modes de DMA - Arrêt de l'U.T. ( Fig.I-3-11-a) Pendant tout le transfert, l'U.T. est arrêtée et ses bus sont en haute impédance. Notons que le temps d'attente pour la prise en compte des bus peut être assez long, car l'U.T. doit terminer l' instruction en cours avant de libérer les bus qu'elle commande. - Vol de cycles (Fig.I-3-11-b) Pour éviter l'arrêt complet de l'U.T., on peut lui dérober des cycles en agissant sur la forme de l'horloge associée. Durant ces cycles, on effectue des transferts DMA. Une conséquence est le ralentissement de l'exécution du programme. Note : pour certaines U.T. de structure dynamique, il existe un intervalle de temps maximum entre 2 tops horloge, ce qui limite le nombre de cycles consécutifs que l'on peut dérober et donc la vitesse de transfert DMA. - Accès multiplexé ou "transparent" (Fig.I-3-11-c) En examinant les chronogrammes d'accès de l'U.T. à la mémoire, on s'aperçoit que certaines périodes sont disponibles car l'U.T. effectue un travail interne. On peut donc en profiter pour effectuer un accès DMA. Ici la mise à l'état haute impédance ne peut être réalisée : un multiplexage des bus est nécessaire. Notons que le programme n'est pas ralenti par le transfert DMA mais que le temps d'accès des mémoires utilisées doit être réduit par rapport à une utilisation normale.

-39-

Page 41: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Demande DMA

Acquittement

U.T. U.T. DMA DMA DMA U.T.

1 cycle

1 cycle

U.T. U.T. DMA DMA U.T.DMA

Horloge

Horloge

Horloge U.T.Cycles volés

1 cycle

U.T.DMA U.T.DMA U.T.DMA U.T.DMAU.T.DMA U.T.DMA

a)

b)

c)

Horloge

Figure I-3-11

-40-

Page 42: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

CHAPITRE II

ETUDE DE MICROPROCESSEURS ET D'ORGANES D'ENTREE-SORTIE

II-1 LE MICROCONTROLEUR 8051 II-1-1 Organisation externe II-1-1-1 Chronologie des échanges avec la mémoire II-1-2 Organisation interne II-1-3 Les instructions du 8051 II-1-4 Modes d'adressage II-1-4-1 Mode implicite II-1-4-2 Mode immédiat II-1-4-3 Mode direct II-1-4-4 Mode indirect II-1-4-5 Mode indexé II-1-4-6 Mode relatif II-1-4-7 Opérations spéciales Le microcontrôleur 8051 est un microcontrôleur 8 bits ayant un bus d'adresse de 16 bits. Il appartient à une famille possédant des variantes qui diffèrent par des ressources internes diverses (ROM, RAM, organes d’E/S,...).

II-1-1 Organisation externe L’organisation externe du 8051 est présentée sur la figure II-1-1.

Figure II-1-1

-41-

Page 43: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Le 8051 est relié à son environnement par 40 broches dont le rôle est explicité ci-dessous (E : entrée, S : sortie, E/S entrée-sortie) :

Broches Sens Signification XTAL1 E entrée horloge XTAL2 S sortie horloge RESET E Initialisation ALE S Adress Latch Enable /PSEN S Program Store Enable /EA E/S CPU Memory Separate VCC E alimentation 5V VSS E masse P0.7-P0.0 E/S Port 0 P1.7-P1.0 E/S Port 1 P2.7-P2.0 E/S Port 2 P3.7-P3.0 E/S Port 3

Les broches de certains ports ont un rôle particulier dans le fonctionnement du 8051 : - le port 0 est utilisé comme bus d’adresse de poids faible A7-A0 multiplexé avec le bus de données D7-D0, - le port 2 est utilisé comme bus d’adresse de poids fort A15-A8, - le port 1 peut véhiculer les signaux suivants : - T2 entrée Timer 2 (80C154), - T2EX entrée flag Timer 2 (80C154), - le port 3 véhicule les signaux suivants : - RXD entrée série, - TXD sortie série, - /INT0 entrée d’interruption 0, - /INT1 entrée d’interruption 1, - T0 entrée Timer 0, - T1 entrée Timer 1, - /WR signal d’écriture, - /RD signal de lecture.

II-1-1-1 Chronologie des échanges avec la mémoire Le 8051 est un µP synchrone, c'est à dire que tous les échanges avec la mémoire se font en synchronisme avec une horloge. Un cycle comprend 12 périodes horloge et 6 états S1-S6. Selon la nature de l’accès, différents chronogrammes sont observables. Le chronogramme de la recherche d’une instruction en mémoire externe (fetch) est présenté (Fig.II-1-2).

-42-

Page 44: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Figure II-1-2

Le chronogramme de la lecture d’une donnée en mémoire externe est présenté (Fig.II-1-3).

Figure II-1-3

Le chronogramme de l’écriture d’une donnée en mémoire externe est présenté (Fig.II-1-4).

-43-

Page 45: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Figure II-1-4

-44-

Page 46: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

II-1-2 Organisation interne Le modèle simplifié du 8051 est présenté à la figure II-1-5.

SP

B

A

PSW

PCLPCH

ACCU

ETAT

PILE

7 0

15 8

DPLDPHINDEX

R0R1R2R3R4R5R6R7

4 bancs de 8 registres 8 bits

7 0PC

Figure II-1-5

Le 8051 possède une RAM interne de 128 octets (ou 256 selon le modèle) et un ensemble de registres appelés SFR (Special Function Register). Parmi ces registres, on distingue : - 4 registres de 8 bits : 1 accumulateur (A ou ACC), 1 registre (B), 1 registre d'état (PSW), 1 pointeur de pile (SP), - 2 registre de 16 bits : 1 compteur ordinal (PC), 1 pointeur de données (DPTR). Voici le détail des bits du registre d'état PSW :

Bit n° 7 6 5 4 3 2 1 0 CY AC F0 RS1 RS0 OV F1 P

CY : Carry Flag (retenue) AC : Auxilliary Carry Flag (retenue auxiliaire) F0 : Flag 0 (utilisateur) RS1 : Register Bank Selector bit 1 RS0 : Register Bank Selector bit 0 OV : Overflow Flag F1 : Flag 1 (utilisateur) P : Parity Flag La RAM interne possède des emplacements pouvant être utilisés comme registres. Ainsi la zone (00-1F) peut contenir 4 bancs de 8 registres (R7-R0). Chaque banc est sélectionnée par les bits RS1 et RS0 de PSW selon la table de vérité suivante :

-45-

Page 47: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

RS1 RS0 Sélection 0 0 Banc 0 (00-07) 0 1 Banc 1 (08-0F) 1 0 Banc 2 (10-17) 1 1 Banc 3 (18-1F)

Le 8051 possède en outre : - 2 registres associés aux interruptions : IP et IE, - 1 registre associé au contrôle d’alimentation : PCON, - 6 registres associés aux timer : TMOD, TCON, TH0, TL0, TH1,TL1, - 2 registres associés aux liaisons série : SCON et SBUF. L’architecture plus détaillée du 8051 est présentée sur la figure II-1-6.

Figure II-1-6

-46-

Page 48: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

La figure II-1-7 détaille le rôle des bits de IE et la figure II-1-8 celui de IP.

Figure II-1-7

Figure II-1-8

La figure II-1-9 détaille le rôle des bits de TCON.

Figure II-1-9

-47-

Page 49: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Le tableau suivant donne l’état des différents registres après un RESET.

PC 0000H A 00H B 00H PSW 00H SP 07H DPTR 0000H P0-P3 FFFFH IP XXX00000B IE 0XX00000B TMOD 00H TCON 00H TH0 00H TL0 00H TH1 00H TL1 00H SCON 00H SBUF XXH PCON 0XXXXXXXB

II-1-3 Les instructions du 8051 Le 8051 peut exécuter des instructions portant sur : - des échanges de données entre la mémoire et les registres internes, - des opérations logiques ou arithmétiques sur l'accumulateur, - des opérations booléennes au niveau de l’octet et au niveau du bit, - des manipulations sur les registres, - des ruptures de séquences (sauts inconditionnels ou conditionnels). Les instructions comprennent 1, 2 ou 3 octets successifs suivant les modes d'adressage. Le premier octet contient le code opération ; le deuxième ou les deux suivants sont des données ou des adresses.

II-1-4 Modes d'adressage Le 8051 possède 6 modes d'adressage : - le mode implicite, - le mode immédiat, - le mode direct, - le mode indirect, - le mode indexé, - le mode relatif.

II-1-4-1 Mode implicite Il comprend les instructions portant sur les registres internes du 8051. Exemple :

-48-

Page 50: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Opération Mnémonique Instruction en hexadécimal A + 1 -> A INC A 04

II-1-4-2 Mode immédiat Les instructions en mode immédiat ont 2 octets. Le premier est le code opération. Le deuxième est la donnée sur laquelle porte l'opération. Exemple : valeur->A MOV A ,#valeur 74 valeur

II-1-4-3 Mode direct Le mode direct porte sur la valeur contenue dans l’adresse fournie à la suite du code opération. Exemple : (adresse)->A MOV A ,adresse E5 adresse Remarque : l’adresse fournie concerne la RAM interne.

II-1-4-4 Mode indirect Le mode indirect porte sur la valeur désignée soit par l’adresse contenue dans un registre, soit par celle de l’adresse fournie à la suite du code opération. Exemples : - par registre ((R1))->A MOV A ,@R1 8 bits (RAM interne) ((DPTR))->A MOVX A,@DPTR 16 bits (RAM externe) - par adresse ((adresse))->A MOV A,@adresse 8 bits (RAM interne)

II-1-4-5 Mode indexé L'adresse mémoire est calculée en additionnant la valeur contenue dans l’accumulateur à l'adresse contenue dans le pointeur de donnée. ((DPTR+A))->A MOVC A,@A+DPTR

II-1-4-6 Mode relatif Les ruptures de séquence se font grâce à des sauts (jump) inconditionnels (adressage absolu) ou conditionnels (adressage relatif). Pour les sauts conditionnels, le test sur la condition exigée se fait sur certains bits du registre d'état PSW, des divers registres ou sur la valeur de l’accumulateur. Il s'agit de sauts relatifs (au PC), c'est-à-dire calculés à partir de l'adresse qui contient l'instruction de saut : Exemple :

-49-

Page 51: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Saut conditionnel si A=0 (JZ : Jump If Zero) (code opération : 60) PC JZ PC+1 OFFSET K PC+2 XX (instruction suivante) ........................ . --> PC+2+K INSTRUCTION DU SAUT K est un nombre signé en complément à 2 : de 0 à 7F K = 0 à + 127 -> saut positif ou nul de 80 à FF K = - 128 à - 1 -> saut négatif Exemples : Saut positif Saut négatif PC 60 PC-3 <-------- PC+1 03 PC-2 | PC+2 | PC-1 | PC+3 | PC 60 PC+4 | PC+1 FB (-5) PC+5 <------- PC+2 Si la condition est réalisée, le saut est effectué, sinon l'instruction suivante (PC+2) est exécutée.

II-1-4-7 Opérations spéciales Ce sont les instructions sur la pile, les appels de sous-programmes et les interruptions. Dans ces opérations, on utilise le pointeur de pile (SP) qui est un registre de 8 bits désignant une adresse de la mémoire interne. a) Instructions sur la pile Ce sont les instructions d'empilement (PUSH) et de dépilement (POP). Pour l'empilement, le SP est incrémenté de 1, puis la donnée concernée est stockée à l'endroit pointé par SP (sommet de la pile). L'exemple suivant montre l'état et la position de la pile après l’empilement successif de 2 octets A1 et A2 : SP -> 0007 xx sens de | 0008 A1 chargement | 0009 A2 de la pile v 000A xx Pour le dépilement, la donnée concernée pointée par SP est restituée, puis le SP est décrémenté de 1.

-50-

Page 52: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

b) Appel de sous-programme Lors d'un appel de sous-programme, on se déroute du programme principal pour exécuter ce sous-programme. Il est alors nécessaire de mémoriser l'adresse de l'instruction (du programme principal) qui suit immédiatement l'appel du sous-programme, pour que le PC vienne se recharger avec cette adresse lors du retour du sous-programme. * Instruction d'appel de sous-programme : CALL L'adresse suivante de l'instruction CALL est empilée dans la pile (sur 2 octets). Le PC est alors chargé avec l'adresse spécifiée par l'instruction CALL. * Instruction de retour du sous-programme : RET L'adresse contenue dans la pile est dépilée dans le PC. Exemple : CALL 0029 (code opération : 12) - programme : 1000 12 1001 00 1002 29 1003 xx (instruction suivante) - état de la pile : SP -> 0007 xx xx 0008 xx 10 0009 xx 03 <- SP - contenu du PC : 1000 1029 Avant CALL Après CALL Exemple : RET (code opération : 22) - programme : 120A 22 - état de la pile 0007 xx xx <- SP 0008 10 10 SP -> 0009 03 03 - contenu du PC : 120A 1003 Avant RET Après RET c) Interruptions Les procédures d'interruption sont similaires aux sous-programmes, mais l'instant et donc le lieu de déroutement du programme principal ne sont pas connus. Dans ce cas, l'adresse de retour est automatiquement sauvegardée dans la pile. On exécute alors un programme d'interruption à la fin duquel l'instruction RETI place l'adresse de retour dans le PC, ce qui permet de reprendre le programme à l'endroit où avait eu lieu l'interruption. On distingue les types d'interruptions suivantes : - RST : Reset (ré-initialisation : pas de sauvegarde) - INT0: Interruption 0 - TM0 : Interruption Timer 0 - INT1: Interruption 1

-51-

Page 53: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- TM1 : Interruption Timer 1 - SI0 : Interruption Série - TM2 : Interruption Timer 2 (80C154) Lorsqu'une interruption externe est demandée et si elle n’est pas masquée, le 8051 termine l'opération en cours et ayant identifié la source d’interruption, saute à l’adresse associée. Il trouve à cette adresse, soit le programme d'interruption correspondant, soit une instruction de saut à ce dernier. La table des interruptions est indiquée ci-après :

RST 0000H INT0 0003H TM0 000BH INT1 0013H TM1 001BH SI0 0023H TM2 002BH

ATTENTION : le programme d'interruption doit sauvegarder les registres utilisés autres que PC. Dans le cas où plusieurs interruptions de type différent se produisent, les registres IE et IP définissent les autorisations et règles de priorité, le registre TCON les conditions de déclenchement (niveau ou front).

-52-

Page 54: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

II-2 L'INTERFACE PARALLELE 8255 (Programmable Peripheral Interface PPI) II-2-1 Présentation du circuit II-2-2 Modes de fonctionnement

II-2-1 Présentation du circuit Le 8255 est un circuit permettant un échange de données sous forme parallèle entre le µP et l'extérieur (Fig.II-2-1).

A0A1

/CS

D7-D0

COTE MICRO COTE EXTERIEUR

/WR/RD

RESET

PA7-PA0

PB7-PB0

PC7-PC4

PC3-PC0

groupe A

groupe B

Figure II-2-1

* Liaisons avec le microprocesseur - D7-D0 : Bus de donnée - RESET : Initialisation - /WR : Write (écriture) - /RD : Read (lecture) - A1, A0 : Adresses - /CS : Chip Select (sélection de boîtier) * Liaisons avec l'extérieur Les lignes connectées sur l'extérieur sont au nombre de 24 : 3 bus (ports) de 8 bits (PA0-PA7, PB0-PB7, PC0-PC7). Les 3 ports sont associés selon 2 groupes : le groupe A associe le port A et le quartet fort de C ; le groupe B associe le port B et le quartet faible de C. L’adressage des différents ports se fait selon les tables de vérité suivantes :

-53-

Page 55: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

II-2-1 Modes de fonctionnement Les modes de fonctionnement sont déterminés par l'état d’un registre contenant le mot de contrôle : "Control Word" (CW). On distingue 3 modes qui déterminent la façon dont sont utilisés les ports d’E/S : - le mode 0 appelé : Basic Input/output, - le mode 1 appelé : Strobed Input/output, - le mode 2 appelé : Bi-Directional Bus. Dans le mode 0, les ports peuvent être programmés en entrée ou en sortie (8 bits pour Aet B, 2*4 bits pour C). Les sorties sont mémorisées dans des bascules D. Les entrées ne sont pas mémorisées. Il y a 16 configurations possibles. Aucune ligne de dialogue n’est disponible. Dans les modes 1 et 2, les ports A et B peuvent être programmés en entrée ou en sortie, le port C regroupant des lignes de dialogue et des lignes d’E/S. Certaines lignes de dialogue peuvent être utilisées comme demande d’interruption. Ceci est résumé sur la figure II-2-2.

Figure II-2-2

-54-

Page 56: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Le mot de contrôle permet de déterminer le mode choisi ainsi que le sens de transfert des données avec le monde extérieur. Le bit 7 du CW établit le mode d’accès aux différents ports. Lorsqu’il est à 1, il s’agit d’un accès normal par octets (Fig. II-2-3), lorsqu’il est à 0, il s’agit d’un accès au niveau du bit (Fig. II-2-4). Dans ce dernier cas, chaque bit du port C peut être mis sélectivement à 0 ou à 1.

Figure II-2-3

-55-

Page 57: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Figure II-2-4 On trouvera la notice de fonctionnement détaillé du 8255 en annexe.

-56-

Page 58: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

II-3 LES TRANSMISSIONS SERIE II-3-1 Généralités II-3-1-1 Communications asynchrones II-3-1-2 Communications synchrones II-3-2 Exemple d'interface série : l'ACIA MC 6850 II-3-2-1 Présentation du circuit II-3-2-2 Fonctionnement

II-3-1 Généralités

II-3-1-1 Communications asynchrones Ici la transmission s'effectue caractère par caractère. Un caractère comprend (Fig.II-3-1) : - un bit de départ (Start), - des bits de donnée selon un format variable (5,6,7,8 bits), - un bit de parité (optionnel), - un ou plusieurs bits d'arrêt (Stop).

parité(option.)

BITS DE DONNEE

STOPSTART(1 ou 2 bits)

durée d' 1 bit

0 1 N-1

Figure II-3-1

La cadence de transmission est fixée par une horloge dont la période donne le temps de transmission de 1 bit. La cadence de transmission exprimée en bit/s ou bauds est l'inverse de cette période. Au repos, la ligne de transmission est à l'état 1 (Mark). Le début de transmission est signalé par l'apparition du bit de départ qui est dans l'état logique 0 (Space). Les bits de donnée sont ensuite transmis séquentiellement. Un bit de parité est ajouté éventuellement à la suite des bits de donnée. Il permet de détecter des erreurs de transmission. La fin de transmission du caractère est signalée par un ou plusieurs bits d'arrêt à l'état 1. Le bit de départ permet au récepteur de détecter l'arrivée d'un caractère et de recaler la phase de l'horloge de réception afin d'échantillonner correctement les bits suivants (au milieu

-57-

Page 59: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

de chacun des bits). Ainsi, comme les fréquences d'émission et de réception ne sont pas strictement identiques, il suffit de garantir une précision de quelques pour-cent pour assurer une réception valide. Les bits d'arrêt permettent d'effectuer un contrôle de la réception et garantissent que le prochain mot démarrera avec une transition descendante . Les vitesses normalisées sont : 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400 bauds.

II-3-1-2 Communications synchrones Ici les données forment un flot continu de bits. Il est donc nécessaire d'effectuer la synchronisation des caractères au début du bloc de données. Cette synchronisation peut être interne ou externe. La synchronisation interne s'effectue par la détection par le récepteur d'un ou plusieurs caractères de synchronisation en tête de message. Cette détection est réalisée en cherchant une correspondance bit à bit entre un caractère de synchronisation préétabli et le train de bits arrivant. La synchronisation externe nécessite une ligne spécialisée qui fournit un top à chaque début de transmission de bloc. Dans tous les cas, une horloge cadence la transmission des bits qui ne sont donc émis qu'à des instants déterminés. A la réception, on dispose soit de l'horloge et des données séparées, soit des données seules. Dans ce dernier cas, le récepteur doit reconstituer l'horloge à partir des données (par exemple avec une boucle à verrouillage de phase). * Définition des procédures et protocoles La délimitation de l'information s'effectue dans un bloc par un en-tête et un message de contrôle d'erreur à la fin. Un bloc comprend plusieurs champs selon la structure suivante :

synchro en-tête données utiles indicateur de fin On distingue 2 types de procédure : - Byte Control Oriented Protocol (BCP), où chaque champ a une signification octet par octet, - Bit Oriented Protocol (BOP), où chaque bit d'un champ peut avoir une signification particulière. La première est de moins en moins utilisée. La seconde est utilisée dans la procédure HDLC (High Level Data Link Control).

-58-

Page 60: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

L'information est véhiculée dans des trames séparées par des caractères de synchronisation. - Délimitation Une trame débute et se termine par un fanion de synchronisation. - Contenu de la trame Une trame comprend les champs suivants : a) champ adresse 8/16 bits désigne le numéro de la station concernée (dans un réseau), b) champ de commande 8/16 bits caractérise le type de trames, c) champ d'information comprenant un nombre quelconque de bits, d) champ de contrôle d'erreur FCS (Frame Control Sequence) sur 16 bits. - synchronisation entre trames Elle est obtenue en insérant au moins un fanion entre 2 trames. - transparence Pour différencier les fanions des données reproduisant un fanion, on insère à l'émission un 0 dans les données, chaque fois que l'on rencontre cinq 1 consécutifs à l'intérieur d'une trame. A la réception, ce 0 sera enlevé lorsque les 5 bits précédents seront à 1. - Structure d'une trame

Fanion Adresse Commande Données FCS Fanion 01111110 8/16 bit 8/16 bits 16bits 01111110

II-3-2 Exemple d'interface série : l'ACIA MC 6850 A.C.I.A : Asynchronous Communication Interface Adapter (Circuit d'Interface de Communication Asynchrone)

II-3-2-1 Présentation du circuit (Fig.II-3-2) Cet organe d'entrée-sortie permet de travailler dans le mode série asynchrone. Il réalise donc les transformations parallèle-série et série parallèle, en effectuant la mise au format des informations.

-59-

Page 61: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

/IRQ

D0-D7

RS

CS0

CS1

/CS2

R/W

E

CD A

TX

/RTS

/CTS

/DCD

RXRXCK

TXCK

Figure II-3-2

L'ACIA comprend 4 registres accessibles par le microprocesseur : - un registre de commande RC, - un registre d'état RE, - un registre de transmission RT, - un registre de réception RR. * Liaisons avec le microprocesseur - CS0, CS1, /CS2 : Chip Select (sélections de boîtier). - RS : Register Select ( sélection de registre). - R/W : Read/Write (lecture-écriture). - E : Enable : activation des échanges. - /IRQ : Interrupt Request (demande d'interruption). - D7-D0 : Bus de donnée. Le tableau de sélection des différents registres est indiqué (Fig.II-3-3) :

-60-

Page 62: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

CS0*CS1*/CS2 RS R/W FONCTIONS

1 0 0 Ecriture du REGISTRE DE COMMANDE RC 1 0 1 Lecture du REGISTRE D'ETAT RE 1 1 0 Ecriture du REGISTRE TRANSMISSION RT 1 1 1 Lecture du REGISTRE RECEPTION RR 0 X X Pas d'opération

Figure II-3-3

* Liaisons avec l'extérieur - TXD : Transmit Data (ligne de transmission des informations en série). - RXD : Receive Data (ligne de réception des informations en série). - TXCK : Transmit Clock (Horloge de transmission). - RXCK : Receive Clock (Horloge de réception). - /CTS : Clear To Send (inhibition de l'émission). - /RTS : Request To Send (demande d'émission). - /DCD : Data Carrier Detect (détection de porteuse).

II-3-2-2 Fonctionnement a) Transmission La partie transmission est composée de deux registres : le registre de transmission (RT) et le registre de sérialisation (RS). Une donnée fournie par le bus donnée est d'abord introduite dans le registre RT, puis, s'il n'est pas en train de transmettre, dans le registre RS, à partir duquel elle sera transmise en série suivant le format dont les caractéristiques sont précisées dans le registre de commande RC. Lorsque RT est vide (quelque soit l'état du registre de sérialisation RS), l'ACIA positionne le bit TDRE du registre d'état à 1 et l'ACIA émet une demande d'interruption si elle est autorisée (/IRQ = 0) et positionne à 1 le bit IRQ du registre d'état. b) Réception Cette partie est composée de deux registres (RD et RR) :

-61-

Page 63: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- un registre de désérialisation (RD) transformant l'information série reçue, en information parallèle "expurgée" des bits de START, STOP et PARITE, qui sera envoyée au registre de réception RR, qui le délivrera (sur lecture) sur le bus de données. Dès que ce registre de réception RR est "plein", le bit RDRF du registre d'état est mis à 1 et l'ACIA émet une demande d'interruption /IRQ = 0 (si elle est autorisée) et positionne à 1 le bit IRQ du mot d'état. c) Programmation et utilisation A la mise sous tension, l'A.C.I.A se trouve dans un état d'attente de commande (écriture dans le registre de commande RC). - Mot de commande Ce mot de commande est le contenu du registre RC ; son rôle est : - de fixer la vitesse de transmission/réception par rapport à TXCK ou RXCK. - de fixer le format de l'information série : . nombre de bits de la donnée, . bit de parité/imparité, . nombre de bits de STOP. - d'autoriser ou d'interdire les demandes d'interruption. - de commander la sortie /RTS. Structure du mot de commande :

D7 D6 D5 D4 D3 D2 D1 D0 RIE TC2 TC1 WS3 WS2 WS1 CDS2 CDS1

On distingue les champs suivants : RIE : Receiver Interrupt Enable, TC2-TC1 : Transmitter Control WS3-WS1 : Word Select, CDS2-CDS2 : Counter Divide. Leur rôle est indiqué ci-après. Vitesse de transfert du transmetteur et du récepteur :

D1 D0 OBSERVATION 0 0 CK/1 0 1 CK/16 1 0 CK/64 1 1 RAZ

-62-

Page 64: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Format de l'information (Emission et Réception) :

D4 D3 D2 Nb. bits donnée Parité Nombre bits stop 0 0 0 7 paire 2 0 0 1 7 impaire 2 0 1 0 7 paire 1 0 1 1 7 impaire 1 1 0 0 8 sans 2 1 0 1 8 sans 1 1 1 0 8 paire 1 1 1 0 8 impaire 1

Commande de RTS et de l'interruption en transmission :

D6 D5 FONCTION 0 0 /RTS=0 Interruption transmetteur inhibée 1 0 /RTS=0 Interruption transmetteur autorisée 1 0 /RTS=1 Interruption transmetteur inhibée 1 1 /RTS=0 Interruption transmetteur inhibée

Transmission du caractère BREAK Commande de l'interruption en réception :

D7 SIGNIFICATION 0 Interruption du récepteur inhibée 1 Interruption du récepteur autorisée

- Mot d'état La lecture du registre d'état permet de connaître "l'état" interne de l'ACIA et de certaines lignes externes.

D7 D6 D5 D4 D3 D2 D1 D0 IRQ PE OVRN FE /CTS /DCD TDRE RDRF

- IRQ : Interrupt Request (demande d'interruption). Ce bit indique le complément de la sortie /IRQ. Il est positionné à 1 dans 3 cas : . si les interruptions du transmetteur sont autorisées quand le registre de transmission RT est vide (disponible), . si les interruptions du récepteur sont autorisées, quand le registre de réception RR est "plein" (donnée reçue), . lorsqu'il y a détection d'une perte de porteuse (/DCD= 1). - PE : Parity Error : erreur de parité (imparité)

-63-

Page 65: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- OVRN : Over Run (surcharge). Quand un ou plusieurs caractères ont été reçus avant la lecture du caractère précédent, ce bit est mis à 1. - FE : Framing Error (erreur de format). Ce bit à 1 indique une erreur sur la donnée reçue : . erreur de synchronisation, . absence de bit de stop, . réception d'un BREAK. - /CTS : Clear To Send (inhibition de l'émetteur). Ce bit reflète l'état de l'entrée /CTS. - /DCD : Data Carrier Detect (détection de porteuse). Ce bit reflète l'état de l'entrée /DCD. - TDRE : Transmit Data Register Empty (registre de transmission vide). Ce bit est à 1 quand RT est disponible (soit une transmission est en cours dans RS, soit elle est achevée). Il passe à 0 à la suite d'un chargement de RT. - RDRF : Receive Data Register Full (registre de réception plein). Ce bit est à 1 quand le registre de réception RR contient une donnée. Il passe à 0 à la suite de la lecture du registre RR par le microprocesseur. Remarque : une commande RAZ positionne à 0 les bits : RDRF, FE, OVRN, PE.

-64-

Page 66: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

CHAPITRE III III-1 DESCRIPTION DU MATERIEL DE TRAVAUX PRATIQUES III-2 DESCRIPTION DE LA CARTE MICR0CONTROLEUR 8051 III-3 DESCRIPTION DE LA PLAQUETTE DE TP-CNA III-4 TRAVAIL A REALISER III-4-1 Utilisation de l’environnement MUVISION III-4-2 Exercices de programmation III-4-3 Sortie d’informations III-4-4 Conversion analogique-numérique III-4-5 Acquisition de données

III-1 DESCRIPTION DU MATERIEL DE TRAVAUX PRATIQUES Le matériel utilisé comprend les éléments suivants (fig.III-1) : - un microordinateur de type PC équipé d’une carte d’E/S comprenant 2 PIA MC6821, - une carte à microcontrôleur 8051 munie de 2 interfaces parallèles (PPI) 8255, - une carte TP-CNA comprenant 2 convertisseurs numérique-analogique et une entrée pour la conversion analogique-numérique, - un oscilloscope pouvant fonctionner en mode X-Y, - un générateur BF.

Carte 8051

PC PIATP-CNA

YX

OSCILLOPPI-U

GENE BF

E

PPI-D

Figure III-1

-65-

Page 67: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

III-2 DESCRIPTION DE LA CARTE MICR0CONTROLEUR 8051 La carte 8051 comprend les éléments suivants (fig. III-2) : - un microcontrôleur 8051 fonctionnant à 12 MHZ, - une PROM de 2Koctets (2716) ou 8Koctets (27C64), - une RAM de 8Koctets, - 2 circuits d’interface parallèle (PPI) de type 8255, - une interface série RS232 (non utilisée ici). Un ensemble logique non représenté assure les fonctions de décodage et de démultiplexage d’adresse , d’initialisation,... On trouvera le schéma détaillé de la carte en annexe.

8051

RS232PROM2k*8/8k*8

RAM8k*8

PPI-D PPI-U

UtilisateurPC

Figure III-2

L’organisation mémoire de la carte est la suivante : A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 TYPE 0 0 0 -/* -/* * * * * * * * * * * * ROM 0 0 1 * * * * * * * * * * * * * RAM 0 1 0 - - - - - - - - - - - * * PPI-D 0 1 1 - - - - - - - - - - - * * PPI-U 1 0 0 - - - - - - - - - - - - - N.U. 1 0 1 - - - - - - - - - - - - - N.U. 1 1 0 - - - - - - - - - - - - - N.U. 1 1 1 - - - - - - - - - - - - - N.U. PPI-D : PPI Debug (connecté au PC) PPI-U : PPI User (utilisateur) * : connecté - : non connecté N.U. : non utilisé Soit :

Adresse (hexa) TYPE 0000-1FFF PROM (2K ou 8K) 2000-3FFF RAM (8K) 4000-5FFF PPI-DEBUG (4 oct.) 6000-7FFF PPI-USER (4 oct.)

-66-

Page 68: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

III-3 DESCRIPTION DE LA PLAQUETTE DE TP-CNA La plaquette de TP-CNA (fig.III-3) comprend un ensemble de circuits permettant d’effectuer la conversion numérique-analogique sur 8 bits de 2 bus A et B provenant d’une interface numérique.

TL081

1K

-12V

12111098765

1 2

4

1514

1K

1K

1K

+2V

3 16

+5V

13

-12V

12111098765

1 2

4

1514

1K

1K+2V

3 16

+5V

13

MC 1408

MC 1408

47pF

47pF

1K

1K

Y

+-

-+

+-

470 470

+-

10K

E (t)

COMP

741

1K

3,3K

+12V

2,2K

10K

+12V

TL081

MC1710

TL081

TL081

X

470K

Q A Q A

+5V4,7K 100nF

BT

100nF

74123CL B

+5V

CL B

+5V

47K

4,7K

+5V

T

0,1uF

2N 4858

TL081

+2V

1M

+2V

1M1uF

U9

U10

U8U7

U6U5U2

U4

U3

U1

SW1

Q1

P1

C1

PA0

PA7

PB0

PB7

Inte

rfac

e nu

mér

ique

U9

A

B

Figure III-3

Le bus A est relié à un CNA MC 1408 (U1) associé à un convertisseur courant-tension (U3). Cet ensemble constitue la voie X. Le bus B est relié à un ensemble du même type (CNA (U2) et convertisseur courant-tension (U4)) constituant la voie Y. La tension de référence des CNA est obtenue, après division de la tension d'alimentation + 12 V dans un pont résistif, par l'amplificateur opérationnel U10 monté en suiveur. Cette tension est ajustée à + 2 V.

-67-

Page 69: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A la voie Y est associé un ensemble comprenant un étage échantillonneur-bloqueur et un comparateur, utilisé pour la conversion analogique-numérique programmée d'un signal d'entrée E. Le signal d'entrée E est appliqué à U5 par une liaison continue (DC) ou alternative (AC) par l'intermédiaire de SW1. En mode (AC), une polarisation égale à Vref/2 est appliquée à U5 afin de centrer la valeur moyenne du signal à convertir sur cette valeur. L'échantillonnage est réalisé par le transistor à effet de champ Q1 et le blocage par le condensateur C1. Le signal bloqué (T) est disponible à la sortie du suiveur U6. La commande appliquée sur la grille de Q1 provient de U7 qui réalise une adaptation de niveau pour une sortie TTL (niveau 1 --> Q1 bloqué, niveau 0 --> Q1 passant). Le comparateur de type MC 1710 (U8) reçoit les signaux Y et T. Sa sortie (COMP) est à 1 si Y < T. Un oscillateur utilisant 2 monostables rebouclés de type SN 74123 (U9) fournit un signal de base de temps (BT) dont la durée à l'état haut est constante (temps de blocage), et celle à l'état bas variable par l'intermédiaire de P1. Le signal BT est envoyé à l'échantillonneur-bloqueur. Les 2 signaux COMP et BT sont envoyés vers l’interface numérique. Celle-ci peut être réalisée soit par un PPI de type 8255 (cas où l’on connecte la plaquette de TP-CNA à la carte 8051), soit par 2 PIA 6821 (cas où l’on connecte la plaquette de TP-CNA directement à la carte PIA du PC). La figure III-4 montre les connexions réalisées suivant les 2 cas.

PC7

PC4

BT

COMP

PA

PB

CA1

PA7

BT

COMP

PA

PB

PPI PIA

PIA4

PIA0

INT1

Figure III-4

C’est la première configuration (PPI) qui est utilisée ici (PPI user d’adresse de base 6000H). Il faut noter que le signal BT est envoyé simultanément sur l’entrée PC7 du PPI et sur l’entrée d’interruption INT1 du 8051.

-68-

Page 70: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

III-4 TRAVAIL A REALISER

III-4-1 Utilisation de l’environnement MUVISION Le logiciel MUVISION permet de développer des applications en assembleur ou en C pour la famille 8051. Il comprend les outils pour : - l’édition des fichiers sources, - l’assemblage ou la compilation, - la simulation. La version d’évaluation disponible est limitée : la taille du code objet ne peut dépasser 2 Koctets et celle du programme source ne peut dépasser 16 Koctets en mode édition. ETAPES DE DEVELOPPEMENT 1 Edition - assemblage - Lancer le logiciel uVision-51. - Choisir dans le menu File l’option New. Une fenêtre d’édition apparaît. - Taper le programme suivant : org 0000H LJMP DEBUT DEBUT: MOV A,#55H MOV B,#0AAH JMP $ END - Sauvegarder ce programme dans un fichier d’extension (.a51) dans le répertoire de travail, par exemple : tp1.a51. - Choisir dans le menu Project l’option : New Project. Taper le nom du projet : tp1.prj. (Le projet doit porter le même nom que le programme assembleur) - Choisir dans le menu Project l’option : Edit Project. Choisir : Add ; sélectionner le fichier source tp1.a51. Choisir : Save, puis fermer. - Choisir dans le menu Options l’option : A51 Assembler. Choisir : Object ; cocher la ligne : Include Debug Information. - Choisir dans le menu Project l’option Make Build Project. Une boîte de message affiche les différentes étapes et la présence éventuelle d’erreurs. - Choisir dans le menu File l’option Open. Sélectionner le fichier listing tp1.lst. En voici un extrait : LOC OBJ LINE SOURCE 0000 1 org 0000H

-69-

Page 71: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

0000 020003 2 LJMP DEBUT 0003 3 DEBUT: 0003 7455 4 MOV A,#55H 0005 75F0AA 5 MOV B,#0AAH 0008 80FE 6 JMP $ 7 8 END Pour simuler l’exécution du programme, il faut utiliser un autre logiciel. - Choisir dans le menu Run : dScope Debugger. Ceci lance le programme de mise au point qui contrôle maintenant les opérations. 2 Simulation - Choisir dans le menu File l’option Load Object File. Sélectionner le nom du fichier (Tp1). Une fenêtre affiche le programme source. Une autre affiche les différents registres du 8051. - Choisir dans la fenêtre programme : Stepinto (pas-à-pas). La première instruction s’exécute. Vérifier l’effet dans la fenêtre registre. - Effectuer plusieurs commandes de pas-à-pas. Observer la fenêtre registre. Pour relancer la simulation choisir dans le menu principal : Setup puis Reset. Observer la fenêtre registre. * Mise en place de point d’arrêt (Breakpoint). - Double cliquer sur la ligne n°4. La ligne passe en jaune et le mot [BR 0] s’y affiche. - Effectuer un Reset. - Lancer l’exécution par Go. Le programme s’arrête sur la ligne du BR. Le pas-à-pas peut continuer. Pour enlever le point d’arrêt, double-cliquer sur la ligne du BR. Pour modifier le programme, revenir à uVision-51. - Editer le programme. - Le sauvegarder (par File puis Save). - Choisir dans le menu Project l’option Build Project. - Revenir à dScope Debugger. - Recharger le programme par : File, puis Load Object File. La fenêtre programme peut afficher ce dernier de plusieurs manières (menu : Commands) : - High Level : source (si les informations sont disponibles dans le fichier (.obj) délivré par uVision-51). - Mixed : source et assembleur. - Assembly : assembleur.

III-4-2 Exercices de programmation Dans cette partie, on utilisera tout d’abord le simulateur dScope Debugger. Les programmes seront écrits à partir de l’adresse 0000H.

-70-

Page 72: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

On se propose de réaliser des programmes de multiplication de 2 nombres de 8 bits qui "émulent" la fonction MUL du 8051. Le multiplicande et le multiplicateur seront placés dans A et B respectivement. Le résultat final devra être dans A et B (cf. instructions du 8051). On développera tout d’abord un programme fonctionnant par "additions successives". Puis, on réalisera un programme fonctionnant par "décalages" selon le principe donné ci-après : Exemple sur 4 bits : 1010 multiplicande x 1001 multiplicateur ------ 1010 ! 0000 ! résultats 0000 ! partiels 1010 ! ------------ 01011010 produit Selon la valeur des bits successifs du multiplicateur, la multiplication des bits de différents poids conduit à prendre comme résultat partiel soit le multiplicande, soit 0. On décale les résultats partiels vers la gauche en allant du plus faible au plus fort. On testera la validité des résultats obtenus et on évaluera les temps d’exécution des opérations pour les 2 programmes réalisés. Ces programmes peuvent être exécutés sur la maquette de TP. La seule modification à leur apporter est de fixer l’adresse de départ dans la zone RAM (de 2000H à 3FFFH), par exemple 3000H. Le moniteur de mise au point décrit en annexe (CATMON32) permet le chargement (Load) et le lancement de l’exécution (Goto) des programmes assemblés par l’environnement Muvision. Vérifier le fonctionnement des logiciels réalisés sur la maquette de TP. Les programmes suivants seront chargés et testés sur la maquette de TP.

III-4-3 Sortie d’informations On se propose de commander par programme la position du spot d'un oscilloscope. Pour cela on relie les sorties X et Y de la plaquette aux entrées X et Y d'un oscilloscope. On désire réaliser un balayage "télévision" (fig.III-5).

-71-

Page 73: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Y

XO

Xmax

Ymax

Figure III-5

La vitesse de déplacement du spot peut être ajustée de deux manières : a ) par programme : c'est le microprocesseur qui impose la vitesse. Celle-ci est fonction de la fréquence de l'horloge interne (temps de cycle machine) et du nombre d'instructions élémentaires du programme. Par l'intermédiaire de "boucles de temporisation" de durée variable avant chaque sortie des valeurs X et Y, on peut uniquement ralentir la vitesse. b) par demande externe : ici 2 méthodes peuvent être utilisées : synchronisation et interruption. Dans la première méthode, le signal de base de temps (BT) étant appliqué à l’interface numérique (PC7), le microprocesseur effectue une boucle d'attente sur le front actif de BT (front montant) avant chaque sortie des valeurs X et Y. Dans la deuxième méthode, le signal /BT étant appliqué à l’entrée d’interruption INT1 du 8051, on peut déclencher une interruption sur le front descendant de /BT avant chaque sortie des valeurs X et Y. La vitesse du spot est alors "asservie" à la fréquence de BT. Réaliser des versions du programme de balayage utilisant ces différentes possibilités.

III-4-4 Conversion analogique-numérique Le principe de la conversion consiste à calculer la valeur numérique codant l'amplitude du signal à partir du signe de la différence entre la valeur inconnue à mesurer (T) et une valeur connue appliquée au CNA sur la voie Y. Deux techniques sont utilisables : la conversion par "rampe" et la conversion par "pesées successives". a) Conversion par rampe On applique à Y des valeurs croissantes en partant de la valeur 0. Après l'application de chaque valeur, on teste l'état du signal COMP disponible sur PC4 provenant du comparateur, afin de connaître le signe de (T - Y). On arrête l'incrémentation lorsque Y est supérieur à T. La valeur de Y à cet instant est la valeur par excès de T. b) Conversion par pesées successives On applique à Y des valeurs calculées de la façon suivante : 128 --> Y ; si Y>T alors Y-128 -> Y sinon Y est gardé Y+64 --> Y ; si Y>T alors Y-64 --> Y

-72-

Page 74: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

sinon Y est gardé Y+32 --> Y ; si Y>T alors Y-32 --> Y sinon Y est gardé Y+16 --> Y ; si Y>T alors Y-16 --> Y sinon Y est gardé Y+08 --> Y ; si Y>T alors Y-08 --> Y sinon Y est gardé Y+04 --> Y ; si Y>T alors Y-04 --> Y sinon Y est gardé Y+02 --> Y ; si Y>T alors Y-02 --> Y sinon Y est gardé Y+01 --> Y ; si Y>T alors Y-01 --> Y sinon Y est gardé La valeur finale de Y constitue le résultat de la conversion qui nécessite ici 8 opérations successives. Cette méthode est donc en moyenne plus rapide que la précédente (durée constante de N cycles au lieu de 2(N-1) cycles en moyenne et 2N cycles au maximum, où N est le nombre de bits). - Réaliser des programmes de conversion suivant les 2 techniques. - Tester les programmes en appliquant une tension continue comprise entre 0 et 2 V à l'entrée E de la plaquette (SW1 étant en position DC !). Vérifier le comportement des programmes pour des tensions qui sortent de la plage de conversion (inférieures à 0V et supérieures à 2V) - Observer et relever les divers signaux test à l'oscilloscope pour différentes valeurs de la tension d'entrée et mesurer les temps de conversion.

III-4-5 Acquisition de données On désire acquérir un certain nombre d'échantillons du signal d'entrée. Pour cela, il faut convertir chaque échantillon durant la période de blocage (BT=1) et donc effectuer une boucle de synchronisation sur le signal BT avant chaque phase de conversion. * Acquisition - Modifier en conséquence le programme par pesées successives. - Vérifier à l'oscilloscope que la conversion s'effectue bien durant la période de blocage et que sa durée est inférieure à celle-ci. Si cette dernière condition n'est pas remplie, il faut optimiser le programme de conversion par l'utilisation d'instructions s'exécutant plus rapidement. * Visualisation Après avoir transféré dans une zone mémoire (buffer) 256 échantillons du signal, on peut visualiser en "continu" le contenu de cette zone et donc la forme du signal "numérisé". Pour cela, on applique périodiquement sur les voies X et Y respectivement les valeurs X et Y = buffer[X] pour X variant de 0 à 255, l'oscilloscope étant en mode X-Y. - Réaliser un programme permettant d'acquérir 256 échantillons du signal et de visualiser périodiquement le signal numérisé sur l'oscilloscope.

-73-

Page 75: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

- Tester le programme en appliquant à l'entrée E (SW1 étant en position AC) un signal de quelques dizaines de hertz et d'amplitude crête à crête inférieure à 2V. - Faire varier les fréquences du signal E et de BT. Interpréter les résultats obtenus. * Couplage avec le PC Il est possible de commander la carte 8051 à partir du PC grâce à des fonctions disponibles en bibliothèque : on peut charger un programme, lancer son exécution et transférer des données en lecture ou en écriture (cf. annexe). - Développer un logiciel en C pour visualiser le signal numérisé par la carte 8051 sur l'écran du micro-ordinateur à l'aide des fonctions graphiques disponibles.

-74-

Page 76: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

BIBLIOGRAPHIE - MICROPROCESSEURS ET CIRCUITS ASSOCIES R.Dubois. Collection Editest - THEORY AND DESIGN OF DIGITAL COMPUTERS D.Lewin. Editions Nelson - COURS FONDAMENTAL DES MICROPROCESSEURS H.Lilen. Editions Radio - DU COMPOSANT AU SYSTEME - INTRODUCTION AUX MICROPROCESSEURS R.ZAKS - A.WOLFE. Editions Sybex - DU COMPOSANT AU SYSTEME - APPLICATIONS DES MICROPROCESSEURS R.ZAKS - A.WOLFE. Editions Sybex - LES ARCHITECTURES RISC J.C.Heudin - C.Panetto. Editions Dunod Informatique

-75-

Page 77: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

ANNEXES A1 - INSTRUCTIONS DU 8051 A2 - LANGAGE ASSEMBLEUR DU 8051 A3 - UTILISATION DU MONITEUR DE MISE AU POINT CATMON32 A4 - COMMANDES DU MONITEUR RESIDENT CATBUG A5 - RESSOURCES UTILISEES PAR CATBUG A6 - FONCTIONS C DE LA BIBLIOTHEQUE DE GESTION DE LA CARTE 8051 A7 - SCHEMA ELECTRIQUE CARTE 8051 1/2 A8 - SCHEMA ELECTRIQUE CARTE 8051 2/2 A9 - IMPLANTATION CARTE 8051 A10 - STRUCTURE D’UN FICHIER (.HEX) A11 - LE CODE ASCII A12 - 80C51 FAMILY ARCHITECTURE A13 - 80C51 FAMILY PROGRAMMER’S GUIDE A14 - NOTICE TECHNIQUE DU 8255

-76-

Page 78: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A1 - INSTRUCTIONS DU 8051

-77-

Page 79: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

-78-

Page 80: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

-79-

Page 81: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

-80-

Page 82: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

-81-

Page 83: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

-82-

Page 84: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A2 - LANGAGE ASSEMBLEUR DU 8051 Le langage d'assemblage permet d'écrire le programme directement exécuté par le microprocesseur sous une forme symbolique. C'est donc un traducteur d'un programme symbolique dit programme source, en données binaires correspondant aux codes machine ou programme objet. Le programme source comprend un ensemble de lignes composées chacune de plusieurs champs séparés par des espaces selon : étiquette !_! code-OP ou directive !_! opérande !_! ; commentaire * * * * !_! représente un espace au moins. * représente des champs optionnels. Nous détaillons le rôle des différents champs. 1 Etiquette Elle permet de repérer l'adresse de la ligne. Elle est composée de lettres et de chiffres (premier caractère = 1 lettre, longueur maximum =32 caractères) et doit se terminer par le caractère : . Exemples : DEBUT: FIN: BOUCLE1: Si le premier caractère de la ligne est le caractère ;, la ligne est considérée comme un commentaire. Exemple : ;*******Ceci est un commentaire******* 2 Code Opération Il représente l'instruction sous forme mnémonique. Exemples : MOV signifie MOVE (transfert ) ADD signifie ADDITION RR signifie ROTATE RIGHT (Rotation à droite) 3 Opérande L'opérande représente une donnée ou une adresse sur laquelle porte l'opération. Il regroupe d'une part le mode d'adressage, d'autre part une expression évaluable par l'assembleur. 3-1 Mode d'adressage

-83-

Page 85: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Le mode par défaut est le mode direct ou implicite. A chaque autre mode est associé un symbole particulier. Exemple : # signifie : immédiat @ signifie : indirect 3-2 Evaluation de l'opérande Elle peut être faite de deux façons : - Forme numérique Un nombre est interprété en décimal, sauf s'il est suivi d'un des caractères suivants : H signifie : nombre hexadécimal, B signifie : nombre binaire. Exemples : 80H = 128 (décimal) 10101010B = 0AAH = 170 (décimal) Un caractère ASCII est représenté de la façon suivante : ‘A’ = 41H = 65 (décimal) Remarque : si un nombre hexadécimal commence par une lettre (A-F), il faut le faire précéder par le chiffre 0. Le caractère $ est réservé pour désigner l'adresse courante de l'instruction. Exemple : JMP $ ; Boucle sans fin !!! - Forme symbolique Un symbole est constitué comme une étiquette (sans le caractère :). Sa valeur doit pouvoir être évaluée par l'assembleur. Nous verrons ultérieurement que des directives permettent les affectations de valeurs numériques aux symboles. Notons que l'opérande peut être calculé à partir d'opérations arithmétiques portant sur des combinaisons entre valeurs numériques ou symboliques. Les opérations reconnues sont : + : Addition - : Soustraction * : Multiplication / : Division entière MOD : Module (reste de la division entière) SHR : Décalage à droite SHL : Décalage à gauche NOT : Négation logique (complément) AND : Et logique OR : Ou (inclusif) XOR : Ou (exclusif) LOW : 8 bits de poids faible HIGH : 8 bits de poids fort

-84-

Page 86: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

EQ : Relation d’égalité (=) NE : Relation de non égalité (<>) GT : Relation de supériorité (>) GE : Relation de supériorité ou égalité (>=) LT : Relation d’infériorité (<) LE : Relation d’infériorité ou égalité (<=) 4 Directives Placés dans le champ "code-opération", ces pseudo-codes sont destinés à l'assembleur. On trouve les directives suivantes : EQU : permet l'affectation d'une valeur à un symbole (adresse ou donnée). Exemples : ETI EQU 0C000H DATA1 EQU 01001010B ORG : établit l'adresse à partir de laquelle est implanté le programme qui suit. END : marque la fin du programme assembleur. DB : stocke des octets en mémoire. Exemples : DB 0,45,0FFH DB ‘A’,’B’,C’ DB "ERREUR" ; l'assembleur placera ici les codes ASCII du mot ERREUR. DW : stocke des mots de 16 bits en mémoire. Exemple : DW 56FFH,1000 DS : réserve des octets en mémoire. Exemple : DS 10 ; réserve 10 octets en mémoire.

-85-

Page 87: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A3 - UTILISATION DU MONITEUR DE MISE AU POINT CATMON32 Développé au Département d’Electronique de l’ENSEEIHT, ce logiciel permet de commander la carte 8051. Ecrit en langage C++ (Borlandc 5.02), c’est une application WINDOWS 32 bits qui assure la communication avec le logiciel résident sur la PROM (CATBUG). La fenêtre suivante regroupe les différentes commandes.

- Goto : lancement de l’exécution d’un programme à partir d’une adresse de départ. - Cont : lancement de l’exécution d’un programme à partir de l’adresse courante (cf.Step). - Step : lancement de l’exécution d’un programme en pas-à-pas à partir de l’adresse courante. - Brkpt : ajout et suppression d’un point d’arrêt. - Load : chargement d’un programme objet sous forme de fichier (.hex). - Dump : affichage par blocs du contenu de la mémoire externe ou de la mémoire interne. - Reset : ré-initialisation de la carte. - Tppi : test du PPI utilisateur. On visualise et on peut modifier le contenu des différents registres du 8051 (sauf SP). L’écriture est réalisée en entrant la valeur de la donnée dans la zone d’édition du registre. On peut effectuer la consultation en lecture et écriture de la mémoire externe et de la mémoire interne. Les boutons associés permettent d’incrémenter ou de décrémenter les adresses. L’écriture est réalisée en entrant la valeur de la donnée dans la zone d’édition des données. Lorsque le fichier listing (.lst) est disponible, une fenêtre permet de suivre le déroulement du programme en pas-à-pas. L’instruction courante est repérée en bleu. La présence d’un point d’arrêt est repérée en rouge. Ceci est visible sur la fenêtre suivante.

-86-

Page 88: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Attention : l’utilisation de points d’arrêt doit s’effectuer avec précaution. En effet, le principe utilisé ici consiste à remplacer l’instruction du point d’arrêt par un appel à un sous-programme du moniteur ; cet appel occupe 3 octets. Pour éviter tout problème, il est préférable d’introduire des instructions de type NOP pour que l’instruction remplacée "occupe" elle aussi 3 octets ! La fonction Dump permet de visualiser par blocs de 256 octets le contenu de la mémoire interne ou externe. La fenêtre d’affichage est la suivante :

Le bouton I/E permet de choisir entre Interne et Externe. En mode Interne, seuls les 128 premiers octets sont significatifs. En mode Externe, on peut fixer l’adresse de début du bloc qui est arrondie à un multiple de 16. Les boutons + et - permettent de se déplacer dans la mémoire. La fonction Remp permet de remplir une zone mémoire externe entre une adresse de départ et une adresse d’arrivée par une constante.

-87-

Page 89: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A4 - COMMANDES DU MONITEUR RESIDENT CATBUG Les commandes élémentaires reconnues par CATBUG sont les suivantes : MAAAA : lecture mémoire externe (AAAA : adresse en hexadécimal) ; le moniteur renvoie DD# (DD : octet lu, # : fin de transaction). IAA : lecture mémoire interne (AA : adresse en hexadécimal) ; le moniteur renvoie DD# (DD : octet lu, # : fin de transaction). FAADD : écriture mémoire interne (AA : adresse en hexadécimal, DD : donnée en hexadécimal) ; le moniteur renvoie # (# : fin de transaction). LXXXXYYYY112233... : écriture en mémoire externe d’un bloc compris entre l’adresse de début XXXX et l’adresse de fin YYYY par les octets 112233... ; le moniteur renvoie # (# : fin de transaction). RC : lecture d’un registre (C : code du registre : A : accumulateur, B : registre B, H : DPH, L : DPL, S : PSW, 0 : R0, 1 : R1, 2 : R2, 3 : R3, 4 : R4, 5 : R5, 6 : R6, 7 : R7, P : SP) ; le moniteur renvoie DD# (DD : contenu du registre, # : fin de transaction). WCDD : écriture d’un registre avec la valeur DD (C : code du registre : A : accumulateur, B : registre B, H : DPH, L : DPL, S : PSW, 0 : R0, 1 : R1,2 : R2, 3 : R3, 4 : R4, 5 : R5,6 : R6, 7 : R7, P : SP) ; le moniteur renvoie # (# : fin de transaction). B1AAAA : Pose d’un point d’arrêt à l’adresse AAAA ; le moniteur renvoie # (# : fin de transaction). B1- : suppression du point d’arrêt ; le moniteur renvoie # (# : fin de transaction). GAAAA : lancement d’un programme à l’adresse AAAA ; le moniteur renvoie # (# : fin de transaction) si le programme utilisateur redonne le contrôle au moniteur (Point d’entrée : 0033). Si un point d’arrêt est rencontré, le moniteur renvoie BBBB# (BBBB : adresse du point d’arrêt, # : fin de transaction). SAAAA : lancement d’un programme à l’adresse AAAA en mode pas-à-pas ; le moniteur renvoie BBBB# (BBBB : adresse suivante, # : fin de transaction). Toutes ces commandes peuvent être envoyées par logiciel ou en mode émulation "terminal".

-88-

Page 90: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A5 - RESSOURCES UTILISEES PAR CATBUG Le moniteur CATBUG utilise des emplacements en mémoire interne et en mémoire externe. Le tableau suivant montre l’utilisation de la mémoire interne :

0 1 2 3 4 5 6 7 8 9 A B C D E F 00 R R R R R R R R R R R R R R R R 10 R R R R R R R R R R R R R R R R 20 30 P -> -> -> -> -> -> -> 40 50 60 M M M M M M M M 70 M M M M M M M M M M M M M M M M

R : registres, P : pile ; M : moniteur. Le tableau suivant montre l’utilisation de la mémoire externe (RAM) :

0 1 2 3 4 5 6 7 8 9 A B C D E F 2000 X X X X X X U U U 2010 U U U U U U 2020 U U U U U U 2030 P P P

X, U : vecteurs d’interruption renvoyés en RAM (correspondant à la table de vecteur du 8051), P : zone de "Patch". Remarques : - lors d’un Reset, les vecteurs modifiables par l’utilisateur (U) sont initialisés par défaut avec l’instruction RETI (23H), - le vecteur associé à l’interruption INT0 (2003H) est contrôlé par Catbug et utilisé pour le pas-à-pas. Il ne faut donc pas le modifier dans la phase de mise au point ! Lorsque l’utilisateur veut prendre le contrôle d’une interruption, il doit réaliser un programme d’initialisation chargé d’écrire à l’emplacement du vecteur correspondant (sur 3 octets), une instruction de saut vers l’adresse du programme qui prendra en charge l’interruption. Cette instruction comprend le code opération de l’instruction de saut LJMP (02H), suivi des octets d’adresse haute et d’adresse basse du début du programme d’interruption. Puis, afin d’autoriser la prise en compte des interruptions, il doit configurer correctement le contenu du registre IE et éventuellement celui de IP (pour les priorités). Remarque : Catbug utilisant l’interruption INT0, il ne faut pas modifier la configuration associée dans IE ! Le moniteur possède un certain nombre de fonctions appelables depuis une table de saut à partir de l’adresse 0030H. Les 2 premières sont des points d’entrée du moniteur. Les autres sont des sous-programmes appelables. 0030 LJMP INIT // Initialisation 0033 LJMP GETCMD // Point d’entrée de l’interpréteur de commandes du moniteur

-89-

Page 91: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

0036 LJMP DELAY // Temporisation de A * 1 ms 0039 LJMP SERIN // Entrée d’un caractère dans A 003C LJMP GETC // Entrée d’un caractère et conversion minuscule-majuscule (A) 003F LJMP PUTC // Sortie d’un caractère dans A 0042 LJMP PUTS // Sortie d’une chaîne de caractère pointée par DPTR et terminée // par 0 0045 LJMP ASC2HEX // Conversion ASCII-Hexadécimal (A) 0048 LJMP HEX2ASC // Conversion Hexadécimal-ASCII (A) 004B LJMP RDHEX // Entrée d’un octet à partir de 2 caractères hexa (A) 004E LJMP WRBYTE // Sortie d’un octet sous forme de 2 caractères hexa (A) 0051 LJMP TESTSERIN // Test de réception d’un caractère : C=0 : non ; C=1 : oui Lorsque un programme utilisateur se termine, il doit rendre le contrôle à Catbug par un saut à l’adresse 033H.

-90-

Page 92: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A6 - FONCTIONS C DE LA BIBLIOTHEQUE DE GESTION DE LA CARTE 8051 Les fonctions C sont contenues dans le fichier 8051drv.obj (version DOS) ou 8051dr32.obj (version Windows 32 bits) et leurs prototypes dans le fichier 8051drv.h (version DOS) ou 8051dr32.h (version Windows 32 bits). Les programmes appelant ces fonctions doivent comprendre la directive : #include "8051drv.h" ou #include "8051dr32.h" selon le cas. ADR_IN Fonction : Lecture d’une adresse sur deux octets de la carte 8051. Prototype : int Adr_in(unsigned int *adr) Paramètres en entrée : pointeur sur l’adresse à lire Valeur retournée : 0 : OK, ESC : erreur. BUF_OUT Fonction : Sortie du contenu d’un buffer de caractères vers la carte 8051. Prototype : int Buf_out(char buf[]) Paramètres en entrée : buffer de caractères Valeur retournée : 0 : OK, ESC : erreur. BYTE_IN Fonction : Lecture d’une donnée sur un octet de la carte 8051. Prototype : int Byte_in(unsigned int *data) Paramètres en entrée : pointeur sur la donnée à lire Valeur retournée : 0 : OK, ESC : erreur. CIN Fonction : Entrée d’un caractère émis par la carte 8051. Prototype : int Cin(void) Paramètres en entrée : aucun Valeur retournée : caractère, ESC : erreur. COUT Fonction : Sortie d’un caractère vers la carte 8051. Prototype : int Cout(int valeur) Paramètres en entrée : valeur du caractère Valeur retournée : 0 : OK, ESC : erreur. DOWNLOAD Fonction : Chargement d’un programme dans la carte 8051. Prototype : int Download(char FileName[],unsigned int *adr1) Paramètres en entrée : nom du fichier (.hex), pointeur sur l’adresse de début de chargement Valeur retournée : 0 : OK, 1 : erreur. ECR_MEMINT Fonction : Ecriture d’un octet en mémoire interne de la carte 8051. Prototype : int Ecr_memint(unsigned int adresse,unsigned int donnee) Paramètres en entrée : adresse, donnée Valeur retournée : 0 : OK, ESC : erreur.

-91-

Page 93: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

ECR_MEMEXT Fonction : Ecriture d’un octet en mémoire externe de la carte 8051. Prototype : int Ecr_memext(unsigned int adresse,unsigned int donnee) Paramètres en entrée : adresse, donnée Valeur retournée : 0 : OK, ESC : erreur. GOTO1 Fonction : Lancement d’un programme de la carte 8051. Prototype : int Goto1(unsigned int *adr) Paramètres en entrée : pointeur sur l’adresse de début du programme chargé Valeur retournée : 0 : OK, ESC : erreur. LEC_MEMINT Fonction : Lecture d’un octet en mémoire interne de la carte 8051. Prototype : int Lec_memint(unsigned int adresse,unsigned int *data) Paramètres en entrée : adresse, pointeur sur la donnée Valeur retournée : 0 : OK, ESC : erreur. LEC_MEMEXT Fonction : Lecture d’un octet en mémoire externe de la carte 8051. Prototype : int Lec_memext(unsigned int adresse,unsigned int *data) Paramètres en entrée : adresse, pointeur sur la donnée Valeur retournée : 0 : OK, ESC : erreur. RESET1 Fonction : Initialisation de la carte 8051 et des PIA de communication. Prototype : int Reset1(void) Paramètres en entrée : aucun Valeur retournée : 0 : OK, 1 : erreur. TEST_CIN Fonction : Test de disponibilité d’un caractère émis par la carte 8051. Prototype : int Test_cin(void) Paramètres en entrée : aucun Valeur retournée : 0 : pas de caractère, 1 caractère émis.

-92-

Page 94: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A7 - SCHEMA ELECTRIQUE CARTE 8051 1/2

-93-

Page 95: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A8 - SCHEMA ELECTRIQUE CARTE 8051 2/2

-94-

Page 96: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A9 - IMPLANTATION CARTE 8051

-95-

Page 97: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A10 - STRUCTURE D’UN FICHIER (.HEX) Intel 8-bit Hex File Format The 8-bit Intel Hex File Format is a printable ASCII format consisting of one or more data records followed by an end of file record. Each record consists of one line of information. Data records may appear in any order. Address and data values are represented as 4 or 2 hexadecimal digit values. Record Format :LLAAAARRDDDD......DDDDCC LL Length field. Number of data bytes. AAAA Address field. Address of first byte. RR Record type field. 00 for data and 01 for end of record. DD Data field. CC Checksum field. Two's complement of length, address, record type and data fields modulo 256. Example: :06010000010203040506E4 :00000001FF The first line in the above example Intel Hex file is a data record addressed at location 100H with data values 1 to 6. The second line is the end of file record.

-96-

Page 98: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A11 - LE CODE ASCII

-97-

Page 99: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A12 - 80C51 FAMILY ARCHITECTURE

-98-

Page 100: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

1March 1995

80C51 ARCHITECTURE

MEMORY ORGANIZATIONAll 80C51 devices have separate address spaces for program anddata memory, as shown in Figures 1 and 2. The logical separation ofprogram and data memory allows the data memory to be accessedby 8-bit addresses, which can be quickly stored and manipulated byan 8-bit CPU. Nevertheless, 16-bit data memory addresses can alsobe generated through the DPTR register.

Program memory (ROM, EPROM) can only be read, not written to.There can be up to 64k bytes of program memory. In the 80C51, thelowest 4k bytes of program are on-chip. In the ROMless versions, allprogram memory is external. The read strobe for external programmemory is the PSEN (program store enable).

Data Memory (RAM) occupies a separate address space fromProgram Memory. In the 80C51, the lowest 128 bytes of datamemory are on-chip. Up to 64k bytes of external RAM can beaddressed in the external Data Memory space. In the ROMlessversion, the lowest 128 bytes are on-chip. The CPU generates readand write signals, RD and WR, as needed during external DataMemory accesses.

External Program Memory and external Data Memory may becombined if desired by applying the RD and PSEN signals to theinputs of an AND gate and using the output of the gate as the readstrobe to the external Program/Data memory.

Program MemoryFigure 3 shows a map of the lower part of the Program Memory.After reset, the CPU begins execution from location 0000H. Asshown in Figure 3, each interrupt is assigned a fixed location inProgram Memory. The interrupt causes the CPU to jump to thatlocation, where it commences execution of the service routine.External Interrupt 0, for example, is assigned to location 0003H. IfExternal Interrupt 0 is going to be used, its service routine mustbegin at location 0003H. If the interrupt is not going to be used, itsservice location is available as general purpose Program Memory.

The interrupt service locations are spaced at 8-byte intervals: 0003Hfor External Interrupt 0, 000BH for Timer 0, 0013H for ExternalInterrupt 1, 001BH for Timer 1, etc. If an interrupt service routine isshort enough (as is often the case in control applications), it canreside entirely within that 8-byte interval. Longer service routinescan use a jump instruction to skip over subsequent interruptlocations, if other interrupts are in use.

The lowest 4k bytes of Program Memory can either be in the on-chipROM or in an external ROM. This selection is made by strapping theEA (External Access) pin to either VCC, or VSS. In the 80C51, if theEA pin is strapped to VCC, then the program fetches to addresses0000H through 0FFFH are directed to the internal ROM. Programfetches to addresses 1000H through FFFFH are directed to externalROM.

If the EA pin is strapped to VSS, then all program fetches aredirected to external ROM. The ROMless parts (8031, 80C31, etc.)must have this pin externally strapped to VSS to enable them toexecute from external Program Memory.

The read strobe to external ROM, PSEN, is used for all externalprogram fetches. PSEN is not activated for internal program fetches.

The hardware configuration for external program execution is shownin Figure 4. Note that 16 I/O lines (Ports 0 and 2) are dedicated tobus functions during external Program Memory fetches. Port 0 (P0in Figure 4) serves as a multiplexed address/data bus. It emits thelow byte of the Program Counter (PCL) as an address, and thengoes into a float state awaiting the arrival of the code byte from theProgram Memory. During the time that the low byte of the ProgramCounter is valid on Port 0, the signal ALE (Address Latch Enable)clocks this byte into an address latch. Meanwhile, Port 2 (P2 inFigure 4) emits the high byte of the Program Counter (PCH). ThenPSEN strobes the EPROM and the code byte is read into themicrocontroller.

Program Memory addresses are always 16 bits wide, even thoughthe actual amount of Program Memory used may be less than 64kbytes. External program execution sacrifices two of the 8-bit ports,P0 and P2, to the function of addressing the Program Memory.

External Interrupts

InterruptControl

CPU

Osc

4k

ROM

BusControl

128

RAM

Four I/O Ports

P0 P2 P1 P3

Address/Data

SerialPort

Timer 1

Timer 0

CounterInputs

TXD RXD

SU00458

Figure 1. 80C51 Block Diagram

Page 101: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 2

EA = 0External

EA = 1 Internal

PSEN

0000

0FFFH

FFFFH:

Program Memory(Read Only)

Data Memory(Read/Write)

RD WR

FFH:

00

Internal

External

FFFFH:

SU00459

Figure 2. 80C51 Memory Structure

InterruptLocations

Reset

0023H

001BH

0013H

000BH

0003H

0000H

8 Bytes

SU00460

Figure 3. 80C51 Program Memory

80C51

Latch

EPROM

P0

ALE

EA

P2

PSEN OE

ADDR

SU00461

Figure 4. Executing from External Program Memory

Data MemoryThe right half of Figure 2 shows the internal and external DataMemory spaces available to the 80C51 user. Figure 5 shows ahardware configuration for accessing up to 2k bytes of externalRAM. The CPU in this case is executing from internal ROM. Port 0serves as a multiplexed address/data bus to the RAM, and 3 lines ofPort 2 are being used to page the RAM. The CPU generates RDand WR signals as needed during external RAM accesses. Therecan be up to 64k bytes of external Data Memory. External Data

Memory addresses can be either 1 or 2 bytes wide. One-byteaddresses are often used in conjunction with one or more other I/Olines to page the RAM, as shown in Figure 5.

Two-byte addresses can also be used, in which case the highaddress byte is emitted at Port 2.

Internal Data Memory is mapped in Figure 6. The memory space isshown divided into three blocks, which are generally referred to asthe Lower 128, the Upper 128, and SFR space.

Page 102: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 3

Internal Data Memory addresses are always one byte wide, whichimplies an address space of only 256 bytes. However, theaddressing modes for internal RAM can in fact accommodate 384bytes, using a simple trick. Direct addresses higher than 7FHaccess one memory space, and indirect addresses higher than 7FHaccess a different memory space. Thus Figure 6 shows the Upper128 and SFR space occupying the same block of addresses, 80Hthrough FFH, although they are physically separate entities.

The Lower 128 bytes of RAM are present in all 80C51 devices asmapped in Figure 7. The lowest 32 bytes are grouped into 4 banksof 8 registers. Program instructions call out these registers as R0through R7. Two bits in the Program Status Word (PSW) selectwhich register bank is in use. This allows more efficient use of codespace, since register instructions are shorter than instructions thatuse direct addressing.

The next 16 bytes above the register banks form a block ofbit-addressable memory space. The 80C51 instruction set includesa wide selection of single-bit instructions, and the 128 bits in thisarea can be directly addressed by these instructions. The bitaddresses in this area are 00H through 7FH.

All of the bytes in the Lower 128 can be accessed by either direct orindirect addressing. The Upper 128 (Figure 8) can only be accessedby indirect addressing.

Figure 9 gives a brief look at the Special Function Register (SFR)space. SFRs include the Port latches, timers, peripheral controls,etc. These registers can only be accessed by direct addressing.Sixteen addresses in SFR space are both byte- and bit-addressable.The bit-addressable SFRs are those whose address ends in 0H or 8H.

80C51with

InternalROM

Latch

Data

P0

ALE

EA

P2RD

OE

ADDR

VCC

WR WE

RAM

P3

I/OPageBits

SU00462

Figure 5. Accessing External Data MemoryIf the Program Memory Is Internal,

the Other Bits of P2 Are Available as I/O

Accessibleby IndirectAddressing

Only

Accessibleby Direct

and IndirectAddressing

Accessibleby Direct

Addressing

FFH

80H

7FH

Upper128

Lower128

0SpecialFunctionRegisters

FFH

80H

Ports,Status and Control Bits,Timer,Registers,Stack Pointer,Accumulator(Etc.)

SU00463

Figure 6. Internal Data Memory

7FH

2FH

20H

18H

10H

08H

0

11

10

01

00

Bank SelectBits inPSW

Bit-Addressable Space(Bit Addresses 0-7F)

4 Banks of 8 RegistersR0-R7

1FH

17H

0FH

07H Reset Value ofStack Pointer

SU00464

Figure 7. Lower 128 Bytes of Internal RAM

FFH

80H

No Bit-AddressableSpaces

SU00465

Figure 8. Upper 128 Bytes of Internal RAM

Page 103: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 4

FFH

E0H

B0H

A0H

90H

80H

ACC

Port 3

Port 2

Port 0

Port 1

Register-Mapped Ports

Addresses that end in 0H or 8Hare alsobit-addressable.

- Port Pins- Accumulator- PSW

(Etc.)

.

.

.

.

.

.

.

.

.

.

.

.

SU00466

Figure 9. SFR Space

CY AC F0 RS1 RS0 OV P

PSW 7

Carry flag receives carry outfrom bit 7 of ALU operands

PSW 0

Parity of accumulator setby hardware to 1 if it containsan odd number of 1s; otherwise it is reset to 0.

PSW 1

User-definable flag

PSW 6

Auxiliary carry flag receives carry out from bit 3of addition operands.

PSW 5General purpose status flag

PSW 2Overflow flag set by arithmetic operations

PSW 3Register bank select bit 0

PSW 4Register bank select bit 1

SU00467

Figure 10. PSW (Program Status Word) Register in 80C51 Devices

80C51 FAMILY INSTRUCTION SETThe 80C51 instruction set is optimized for 8-bit control applications.It provides a variety of fast addressing modes for accessing theinternal RAM to facilitate byte operations on small data structures.The instruction set provides extensive support for one-bit variablesas a separate data type, allowing direct bit manipulation in controland logic systems that require Boolean processing.

Program Status WordThe Program Status Word (PSW) contains several status bits thatreflect the current state of the CPU. The PSW, shown in Figure 10,resides in the SFR space. It contains the Carry bit, the AuxiliaryCarry (for BCD operations), the two register bank select bits, theOverflow flag, a Parity bit, and two user-definable status flags.

The Carry bit, other than serving the function of a Carry bit inarithmetic operations, also serves as the “Accumulator” for anumber of Boolean operations.

The bits RS0 and RS1 are used to select one of the four registerbanks shown in Figure 7. A number of instructions refer to these

RAM locations as R0 through R7. The selection of which of the fouris being referred to is made on the basis of the RS0 and RS1 atexecution time.

The Parity bit reflects the number of 1s in the Accumulator: P = 1 ifthe Accumulator contains an odd number of 1s, and P = 0 if theAccumulator contains an even number of 1s. Thus the number of 1sin the Accumulator plus P is always even. Two bits in the PSW areuncommitted and may be used as general purpose status flags.

Addressing ModesThe addressing modes in the 80C51 instruction set are as follows:

Direct AddressingIn direct addressing the operand is specified by an 8-bit addressfield in the instruction. Only internal Data RAM and SFRs can bedirectly addressed.

Page 104: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 5

Indirect AddressingIn indirect addressing the instruction specifies a register whichcontains the address of the operand. Both internal and externalRAM can be indirectly addressed.

The address register for 8-bit addresses can be R0 or R1 of theselected bank, or the Stack Pointer. The address register for 16-bitaddresses can only be the 16-bit “data pointer” register, DPTR.

Register InstructionsThe register banks, containing registers R0 through R7, can beaccessed by certain instructions which carry a 3-bit registerspecification within the opcode of the instruction. Instructions thataccess the registers this way are code efficient, since this modeeliminates an address byte. When the instruction is executed, one ofthe eight registers in the selected bank is accessed. One of fourbanks is selected at execution time by the two bank select bits in thePSW.

Register-Specific InstructionsSome instructions are specific to a certain register. For example,some instructions always operate on the Accumulator, or DataPointer, etc., so no address byte is needed to point to it. The opcodeitself does that. Instructions that refer to the Accumulator as Aassemble as accumulator specific opcodes.

Immediate ConstantsThe value of a constant can follow the opcode in Program Memory.For example,

MOV A, #100loads the Accumulator with the decimal number 100. The samenumber could be specified in hex digits as 64H.

Indexed AddressingOnly program Memory can be accessed with indexed addressing,and it can only be read. This addressing mode is intended forreading look-up tables in Program Memory A 16-bit base register(either DPTR or the Program Counter) points to the base of thetable, and the Accumulator is set up with the table entry number.

The address of the table entry in Program Memory is formed byadding the Accumulator data to the base pointer.

Another type of indexed addressing is used in the “case jump”instruction. In this case the destination address of a jump instructionis computed as the sum of the base pointer and the Accumulatordata.

Arithmetic InstructionsThe menu of arithmetic instructions is listed in Table 1. The tableindicates the addressing modes that can be used with eachinstruction to access the <byte> operand. For example, the ADDA,<byte> instruction can be written as:

ADD a, 7FH (direct addressing)ADD A, @R0 (indirect addressing)ADD a, R7 (register addressing)ADD A, #127 (immediate constant)

The execution times listed in Table 1 assume a 12MHz clockfrequency. All of the arithmetic instructions execute in 1µs exceptthe INC DPTR instruction, which takes 2µs, and the Multiply andDivide instructions, which take 4µs.

Note that any byte in the internal Data Memory space can beincremented without going through the Accumulator.

One of the INC instructions operates on the 16-bit Data Pointer. TheData Pointer is used to generate 16-bit addresses for externalmemory, so being able to increment it in one 16-bit operation is auseful feature.

The MUL AB instruction multiplies the Accumulator by the data inthe B register and puts the 16-bit product into the concatenated Band Accumulator registers.

The DIV AB instruction divides the Accumulator by the data in the Bregister and leaves the 8-bit quotient in the Accumulator, and the8-bit remainder in the B register.

Oddly enough, DIV AB finds less use in arithmetic “divide” routinesthan in radix conversions and programmable shift operations. Anexample of the use of DIV AB in a radix conversion will be givenlater. In shift operations, dividing a number by 2n shifts its n bits tothe right. Using DIV AB to perform the division completes the shift in4µs and leaves the B register holding the bits that were shifted out.The DA A instruction is for BCD arithmetic operations. In BCDarithmetic, ADD and ADDC instructions should always be followedby a DA A operation, to ensure that the result is also in BCD. Notethat DA A will not convert a binary number to BCD. The DA Aoperation produces a meaningful result only as the second step inthe addition of two BCD bytes.

Table 1. 80C51 Arithmetic InstructionsMNEMONIC OPERATION ADDRESSING MODES EXECUTION

DIR IND REG IMM TIME (µs)

ADD A,<byte> A = A + <byte> X X X X 1

ADDC A,<byte> A = A + <byte> + C X X X X 1

SUBB A,<byte> A = A – <byte> – C X X X X 1

INC A A = A + 1 Accumulator only 1

INC <byte> <byte> = <byte> + 1 X X X 1

INC DPTR DPTR = DPTR + 1 Data Pointer only 2

DEC A A = A – 1 Accumulator only 1

DEC <byte> <byte> = <byte> – 1 X X X 1

MUL AB B:A = B x A ACC and B only 4

DIV AB A = Int[A/B]B = Mod[A/B] ACC and B only 4

DA A Decimal Adjust Accumulator only 1

Page 105: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 6

Logical InstructionsTable 2 shows the list of 80C51 logical instructions. The instructionsthat perform Boolean operations (AND, OR, Exclusive OR, NOT) on bytes perform the operation on a bit-by-bit basis. That is, if theAccumulator contains 00110101B and byte contains 01010011B,then:

ANL A, <byte>

will leave the Accumulator holding 00010001B.

The addressing modes that can be used to access the <byte>operand are listed in Table 2.

The ANL A, <byte> instruction may take any of the forms:ANL A,7FH (direct addressing)ANL A,@R1 (indirect addressing)ANL A,R6 (register addressing)ANL A,#53H (immediate constant)

All of the logical instructions that are Accumulator-specific executein 1µs (using a 12MHz clock). The others take 2µs.

Note that Boolean operations can be performed on any byte in theinternal Data Memory space without going through the Accumulator.The XRL <byte>, #data instruction, for example, offers a quick andeasy way to invert port bits, as in XRL P1, #OFFH.

If the operation is in response to an interrupt, not using theAccumulator saves the time and effort to push it onto the stack in theservice routine.

The Rotate instructions (RL, A, RLC A, etc.) shift the Accumulator 1bit to the left or right. For a left rotation, the MSB rolls into the LSBposition. For a right rotation, the LSB rolls into the MSB position.

The SWAP A instruction interchanges the high and low nibbleswithin the Accumulator. This is a useful operation in BCDmanipulations. For example, if the Accumulator contains a binarynumber which is known to be less than 100, it can be quicklyconverted to BCD by the following code:

MOVE B,#10DIV ABSWAP AADD A,B

Dividing the number by 10 leaves the tens digit in the low nibble ofthe Accumulator, and the ones digit in the B register. The SWAP andADD instructions move the tens digit to the high nibble of theAccumulator, and the ones digit to the low nibble.

Data Transfers

Internal RAMTable 3 shows the menu of instructions that are available for movingdata around within the internal memory spaces, and the addressingmodes that can be used with each one. With a 12MHz clock, all ofthese instructions execute in either 1 or 2µs.

The MOV <dest>, <src> instruction allows data to be transferredbetween any two internal RAM or SFR locations without goingthrough the Accumulator. Remember, the Upper 128 bytes of dataRAM can be accessed only by indirect addressing, and SFR spaceonly by direct addressing.

Note that in 80C51 devices, the stack resides in on-chip RAM, andgrows upwards. The PUSH instruction first increments the StackPointer (SP), then copies the byte into the stack. PUSH and POPuse only direct addressing to identify the byte being saved orrestored, but the stack itself is accessed by indirect addressingusing the SP register. This means the stack can go into the Upper128 bytes of RAM, if they are implemented, but not into SFR space.

The Upper 128 bytes of RAM are not implemented in the 80C51 norin its ROMless or EPROM counterparts. With these devices, if theSP points to the Upper 128, PUSHed bytes are lost, and POPedbytes are indeterminate.

The Data Transfer instructions include a 16-bit MOV that can beused to initialize the Data Pointer (DPTR) for look-up tables inProgram Memory, or for 16-bit external Data Memory accesses.

Table 2. 80C51 Logical InstructionsMNEMONIC OPERATION ADDRESSING MODES EXECUTION

DIR IND REG IMM TIME (µs)

ANL A,<byte> A = A.AND. <byte> X X X X 1

ANL <byte>,A <byte> = <byte> .AND.A X 1

ANL <byte>,#data <byte> = <byte> .AND.#data X 2

ORL A,<byte> A = A.OR.<byte> X X X X 1

ORL <byte>,A <byte> = <byte> .OR.A X 1

ORL <byte>,#data <byte> = <byte> .OR.#data X 2

XRL A,<byte> A = A.XOR. <byte> X X X X 1

XRL <byte>,A <byte> = <byte> .XOR.A X 1

XRL <byte>,#data <byte> = <byte> .XOR.#data X 2

CRL A A = 00H Accumulator only 1

CPL A A = .NOT.A Accumulator only 1

RL A Rotate ACC Left 1 bit Accumulator only 1

RLC A Rotate Left through Carry Accumulator only 1

RR A Rotate ACC Right 1 bit Accumulator only 1

RRC A Rotate Right through Carry Accumulator only 1

SWAP A Swap Nibbles in A Accumulator only 1

Page 106: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 7

Table 3. Data Transfer Instructions that Access Internal Data Memory SpaceMNEMONIC OPERATION ADDRESSING MODES EXECUTION

DIR IND REG IMM TIME (µs)

MOV A,<src> A = <src> X X X X 1

MOV <dest>,A <dest> = A X X X 1

MOV <dest>,<src> <dest> = <src> X X X X 2

MOV DPTR,#data16 DPTR = 16-bit immediate constant X 2

PUSH <src> INC SP:MOV“@SP”,<src> X 2

POP <dest> MOV <dest>,“@SP”:DEC SP X 2

XCH A,<byte> ACC and <byte> exchange data X X X 1

XCHD A,@Ri ACC and @Ri exchange low nibbles X 1

The XCH A, <byte> instruction causes the Accumulator andaddressed byte to exchange data. The XCHD A, @Ri instruction issimilar, but only the low nibbles are involved in the exchange.

To see how XCH and XCHD can be used to facilitate datamanipulations, consider first the problem of shifting an 8-digit BCDnumber two digits to the right. Figure 11 shows how this can bedone using direct MOVs, and for comparison how it can be doneusing XCH instructions. To aid in understanding how the codeworks, the contents of the registers that are holding the BCDnumber and the content of the Accumulator are shown alongsideeach instruction to indicate their status after the instruction has beenexecuted.

After the routine has been executed, the Accumulator contains thetwo digits that were shifted out on the right. Doing the routine withdirect MOVs uses 14 code bytes and 9µs of execution time(assuming a 12MHz clock). The same operation with XCHs usesonly 9 bytes and executes almost twice as fast.

To right-shift by an odd number of digits, a one-digit shift must beexecuted.

Figure 12 shows a sample of code that will right-shift a BCD numberone digit, using the XCHD instruction. Again, the contents of theregisters holding the number and of the Accumulator are shownalongside each instruction.

First, pointers R1 and R0 are set up to point to the two bytescontaining the last four BCD digits. Then a loop is executed which

leaves the last byte, location 2EH, holding the last two digits of theshifted number. The pointers are decremented, and the loop isrepeated for location 2DH. The CJNE instruction (Compare andJump if Not Equal) is a loop control that will be described later. Theloop executed from LOOP to CJNE for R1 = 2EH, 2DH, 2CH, and2BH. At that point the digit that was originally shifted out on the righthas propagated to location 2AH. Since that location should be leftwith 0s, the lost digit is moved to the Accumulator.

External RAMTable 4 shows a list of the Data Transfer instructions that accessexternal Data Memory. Only indirect addressing can be used. Thechoice is whether to use a one-byte address, @Ri, where Ri can beeither R0 or R1 of the selected register bank, or a two-byte address,@DPTR. The disadvantage to using 16-bit addresses if only a few kbytes of external RAM are involved is that 16-bit addresses use all 8bits of Port 2 as address bus. On the other hand, 8-bit addressesallow one to address a few bytes of RAM, as shown in Figure 5,without having to sacrifice all of Port 2. All of these instructionsexecute in 2 µs, with a 12MHz clock.

Note that in all external Data RAM accesses, the Accumulator isalways either the destination or source of the data.

The read and write strobes to external RAM are activated onlyduring the execution of a MOVX instruction. Normally these signalsare inactive, and in fact if they’re not going to be used at all, theirpins are available as extra I/O lines.

MOV A,2EH 00 12 34 56 78 78MOV 2EH,2DH 00 12 34 56 56 78MOV 2DH,2CH 00 12 34 34 56 78MOV 2CH,2BH 00 12 12 34 56 78MOV 2BH,#0 00 00 12 34 56 78

2A 2B 2C 2D 2E ACC

A. Using direct MOVs: 14 bytes, 9 µs

CLR A 00 12 34 56 78 00XCH A,2BH 00 00 34 56 78 12XCH A,2CH 00 00 12 56 78 34XCH A,2DH 00 00 12 34 78 56XCH A2EH 00 00 12 34 56 78

2A 2B 2C 2D 2E ACC

B. Using XCHs: 9 bytes, 5 µs

SU00468

Figure 11. Shifting a BCD Number Two Digits to the Right

MOV R1,#2EH 00 12 34 56 78 XXMOV R0,#2DH 00 12 34 56 78 XX

2A 2B 2C 2D 2E ACC

loop for R1 = 2EH:

MOV A,@R1 00 12 34 56 78 78XCHD A,@R0 00 12 34 58 78 76SWAP A 00 12 34 58 78 67MOV @R1,A 00 12 34 58 67 67DEC R1 00 12 34 58 67 67DEC R0 00 12 34 58 67 67CJNE R1,#2AH,LOOP

LOOP:

loop for R1 = 2DH: 00 12 38 45 67 4500 18 23 45 67 2308 01 23 45 67 01

loop for R1 = 2CH:loop for R1 = 2BH:

CLR A 08 01 23 45 67 00XCH A,2AH 00 01 23 45 67 08

SU00469

Figure 12. Shifting a BCD Number One Digit to the Right

Page 107: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 8

Table 4. 80C51 Data Transfer Instructions that Access External Data Memory SpaceADDRESS

WIDTHMNEMONIC OPERATION EXECUTION

TIME (µs)

8 bits MOVX A,@Ri Read external RAM @Ri 2

8 bits MOVX @Ri,A Write external RAM @ Ri 2

16 bits MOVX A,@DPTR Read external RAM @ DPTR 2

16 bits MOVX @DPTR,A Write external RAM @ DPTR 2

Table 5. 80C51 Lookup Table Read InstructionsMNEMONIC OPERATION EXECUTION TIME (µs)

MOVC A,@A+DPTR Read program memory at (A + DPTR) 2

MOVC A,@A+PC Read program memory at (A + PC) 2

Lookup TablesTable 5 shows the two instructions that are available for readinglookup tables in Program Memory. Since these instructions accessonly Program Memory, the lookup tables can only be read, notupdated.

If the table access is to external Program Memory, then the readstrobe is PSEN.

The mnemonic is MOVC for “move constant.” The first MOVCinstruction in Table 5 can accommodate a table of up to 256 entriesnumbered 0 through 255. The number of the desired entry is loadedinto the Accumulator, and the Data Pointer is set up to point to thebeginning of the table. Then:

MOVC A,@A+DPTR

copies the desired table entry into the Accumulator.

The other MOVC instruction works the same way, except theProgram Counter (PC) is used as the table base, and the table isaccessed through a subroutine. First the number of the desiredentry is loaded into the Accumulator, and the subroutine is called:

MOV A,ENTRY NUMBERCALL TABLE

The subroutine “TABLE” would look like this:TABLE: MOVC A,@A+PC

RET

The table itself immediately follows the RET (return) instruction inProgram Memory. This type of table can have up to 255 entries,numbered 1 through 255. Number 0 cannot be used, because at thetime the MOVC instruction is executed, the PC contains the addressof the RET instruction. An entry numbered 0 would be the RETopcode itself.

Boolean Instructions80C51 devices contain a complete Boolean (single-bit) processor.The internal RAM contains 128 addressable bits, and the SFRspace can support up to 128 addressable bits as well. All of the portlines are bit-addressable, and each one can be treated as aseparate single-bit port. The instructions that access these bits arenot just conditional branches, but a complete menu of move, set,clear, complement, OR, and AND instructions. These kinds of bitoperations are not easily obtained in other architectures with anyamount of byte-oriented software.

The instruction set for the Boolean processor is shown in Table 6. Allbit accesses are by direct addressing.

Bit addresses 00H through 7FH are in the Lower 128, and bitaddresses 80H through FFH are in SFR space.

Note how easily an internal flag can be moved to a port pin:MOV C,FLAGMOV P1.0,C

In this example, FLAG is the name of any addressable bit in theLower 128 or SFR space. An I/O line (the LSB of Port 1, in thiscase) is set or cleared depending on whether the flag bit is 1 or 0.

The Carry bit in the PSW is used as the single-bit Accumulator ofthe Boolean processor. Bit instructions that refer to the Carry bit asC assemble as Carry-specific instructions (CLR C, etc.). The Carrybit also has a direct address, since it resides in the PSW register,which is bit-addressable.

Note that the Boolean instruction set includes ANL and ORLoperations, but not the XRL (Exclusive OR) operation. An XRLoperation is simple to implement in software. Suppose, for example,it is required to form the Exclusive OR of two bits:

C = bit1 .XRL. bit2

The software to do that could be as follows:MOV C,bit1JNB bit2,OVERCPL C

OVER: (continue)

First, bit1 is moved to the Carry. If bit2 = 0, then C now contains thecorrect result. That is, bit1 .XRL. bit2 = bit1 if bit2 = 0. On the otherhand, if bit2 = 1, C now contains the complement of the correctresult. It need only be inverted (CPL C) to complete the operation.

This code uses the JNB instruction, one of a series of bit-testinstructions which execute a jump if the addressed bit is set (JC, JB,JBC) or if the addressed bit is not set (JNC, JNB). In the abovecase, bit2 is being tested, and if bit2 = 0, the CPL C instruction isjumped over.

JBC executes the jump if the addressed bit is set, and also clearsthe bit. Thus a flag can be tested and cleared in one operation. Allthe PSW bits are directly addressable, so the Parity bit, or thegeneral purpose flags, for example, are also available to the bit-testinstructions.

Relative OffsetThe destination address for these jumps is specified to theassembler by a label or by an actual address in Program memory.However, the destination address assembles to a relative offsetbyte. This is a signed (two’s complement) offset byte which is addedto the PC in two’s complement arithmetic if the jump is executed.The range of the jump is therefore –128 to +127 Program Memorybytes relative to the first byte following the instruction.

Page 108: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 9

Table 6. 80C51 Boolean InstructionsMNEMONIC OPERATION EXECUTION TIME (µs)

ANL C,bit C = C.AND.bit 2

ANL C,/bit C = C.AND..NOT.bit 2

ORL C,bit C = C.OR.bit 2

ORL C,/bit C = C.OR..NOT.bit 2

MOV C,bit C = bit 1

MOV bit,C bit = C 2

CLR C C = 0 1

CLR bit bit = 0 1

SETB C C = 1 1

SETB bit bit = 1 1

CPL C C = .NOT.C 1

CPL bit bit = .NOT.bit 1

JC rel Jump if C = 1 2

JNC rel Jump if C = 0 2

JB bit,rel Jump if bit = 1 2

JNB bit,rel Jump if bit = 0 2

JBC bit,rel Jump if bit = 1; CLR bit 2

Table 7. Unconditional Jumps in 80C51 DevicesMNEMONIC OPERATION EXECUTION TIME (µs)

JMP addr Jump to addr 2

JMP @A+DPTR Jump to A + DPTR 2

CALL addr Call subroutine at addr 2

RET Return from subroutine 2

RETI Return from interrupt 2

NOP No operation 1

Jump InstructionsTable 7 shows the list of unconditional jumps with execution time fora 12MHz clock.

The table lists a single “JMP addr” instruction, but in fact there arethree SJMP, LJMP, and AJMP, which differ in the format of thedestination address. JMP is a generic mnemonic which can be usedif the programmer does not care which way the jump is encoded.

The SJMP instruction encodes the destination address as a relativeoffset, as described above. The instruction is 2 bytes long,consisting of the opcode and the relative offset byte. The jumpdistance is limited to a range of –128 to +127 bytes relative to theinstruction following the SJMP.

The LJMP instruction encodes the destination address as a 16-bitconstant. The instruction is 3 bytes long, consisting of the opcodeand two address bytes. The destination address can be anywhere inthe 64k Program Memory space.

The AJMP instruction encodes the destination address as an 11-bitconstant. The instruction is 2 bytes long, consisting of the opcode,which itself contains 3 of the 11 address bits, followed by anotherbyte containing the low 8 bits of the destination address. When theinstruction is executed, these 11 bits are simply substituted for thelow 11 bits in the PC. The high 5 bits stay the same. Hence thedestination has to be within the same 2k block as the instructionfollowing the AJMP.

In all cases the programmer specifies the destination address to theassembler in the same way: as a label or as a 16-bit constant. Theassembler will put the destination address into the correct format forthe given instruction. If the format required by the instruction will notsupport the distance to the specified destination address, a“Destination out of range” message is written into the List file.

The JMP @A+DPTR instruction supports case jumps. Thedestination address is computed at execution time as the sum of the16-bit DPTR register and the Accumulator. Typically, DPTR is set upwith the address of a jump table. In a 5-way branch, for example, aninteger 0 through 4 is loaded into the Accumulator. The code to beexecuted might be as follows:

MOV DPTR,#JUMP TABLEMOV A,INDEX_NUMBERRL AJMP @A+DPTR

The RL A instruction converts the index number (0 through 4) to aneven number on the range 0 through 8, because each entry in thejump table is 2 bytes long:JUMP TABLE:

AJMP CASE 0AJMP CASE 1AJMP CASE 2AJMP CASE 3AJMP CASE 4

Page 109: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 10

Table 7 shows a single “CALL addr” instruction, but there are two ofthem, LCALL and ACALL, which differ in the format in which thesubroutine address is given to the CPU. CALL is a genericmnemonic which can be used if the programmer does not carewhich way the address is encoded.

The LCALL instruction uses the 16-bit address format, and thesubroutine can be anywhere in the 64k Program Memory space.The ACALL instruction uses the 11-bit format, and the subroutinemust be in the same 2k block as the instruction following theACALL.

In any case, the programmer specifies the subroutine address to theassembler in the same way: as a label or as a 16-bit constant. Theassembler will put the address into the correct format for the giveninstructions.

Subroutines should end with a RET instruction, which returnsexecution to the instruction following the CALL.

RETI is used to return from an interrupt service routine. The onlydifference between RET and RETI is that RETI tells the interruptcontrol system that the interrupt in progress is done. If there is nointerrupt in progress at the time RETI is executed, then the RETI isfunctionally identical to RET.

Table 8 shows the list of conditional jumps available to the 80C51user. All of these jumps specify the destination address by therelative offset method, and so are limited to a jump distance of –128to +127 bytes from the instruction following the conditional jumpinstruction. Important to note, however, the user specifies to theassembler the actual destination address the same way as the otherjumps: as a label or a 16-bit constant.

There is no Zero bit in the PSW. The JZ and JNZ instructions testthe Accumulator data for that condition.

The DJNZ instruction (Decrement and Jump if Not Zero) is for loopcontrol. To execute a loop N times, load a counter byte with N andterminate the loop with a DJNZ to the beginning of the loop, asshown below for N = 10.

MOV COUNTER,#10LOOP: (begin loop)

•••

(end loop)DJNZ COUNTER,LOOP(continue)

The CJNE instruction (Compare and Jump if Not Equal) can also beused for loop control as in Figure 12. Two bytes are specified in theoperand field of the instruction. The jump is executed only if the twobytes are not equal. In the example of Figure 12, the two bytes weredata in R1 and the constant 2AH. The initial data in R1 was 2EH.Every time the loop was executed, R1 was decremented, and thelooping was to continue until the R1 data reached 2AH.

Another application of this instruction is in “greater than, less than”comparisons. The two bytes in the operand field are taken asunsigned integers. If the first is less than the second, then the Carrybit is set (1). If the first is greater than or equal to the second, thenthe Carry bit is cleared.

CPU TimingAll 80C51 microcontrollers have an on-chip oscillator which can beused if desired as the clock source for the CPU. To use the on-chiposcillator, connect a crystal or ceramic resonator between theXTAL1 and XTAL2 pins of the microcontroller, and capacitors toground as shown in Figure 13.

Examples of how to drive the clock with an external oscillator areshown in Figure 14. Note that in the NMOS devices (8051, etc.) thesignal at the XTAL2 pin actually drives the internal clock generator.In the CMOS devices (80C51, etc.), the signal at the XTAL1 pindrives the internal clock generator. The internal clock generatordefines the sequence of states that make up the 80C51 machinecycle.

Quartz crystalor ceramicresonator

C1

C2

XTAL2

XTAL1

VSS

HMOS orCMOS

SU00470

Figure 13. Using the On-Chip Oscillator

Table 8. Conditional Jumps in 80C51 DevicesMNEMONIC OPERATION ADDRESSING MODES EXECUTION

DIR IND REG IMM TIME (µs)

JZ rel Jump if A = 0 Accumulator only 2

JNZ rel Jump if A ≠ 0 Accumulator only 2

DJNZ <byte>,rel Decrement and jump if not zero X X 2

CJNE A,<byte>,rel Jump if A ≠ <byte> X X 2

CJNE <byte>,#data,rel Jump if <byte> ≠ #data X X 2

Page 110: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 11

Externalclock

signal

XTAL2

XTAL1

VSS

a. NMOS or CMOS

Externalclock

signalXTAL2

XTAL1

VSS

b. NMOS Only

Externalclock

signal

XTAL2

XTAL1

VSS

c. CMOS Only

(NC)

SU00471

Figure 14. Using an External Clock

Machine CyclesA machine cycle consists of a sequence of 6 states, numbered S1through S6. Each state time lasts for two oscillator periods. Thus amachine cycle takes 12 oscillator periods or 1µs if the oscillatorfrequency is 12MHz.

Each state is divided into a Phase 1 half and a Phase 2 half.Figure 15 shows that fetch/execute sequences in states and phasesfor various kinds of instructions. Normally two program fetches aregenerated during each machine cycle, even if the instruction beingexecuted doesn’t require it. If the instruction being executed doesn’tneed more code bytes, the CPU simply ignores the extra fetch, andthe Program Counter is not incremented.

Execution of a one-cycle instruction (Figures 15a and 15b) beginsduring State 1 of the machine cycle, when the opcode is latched intothe Instruction Register. A second fetch occurs during S4 of thesame machine cycle. Execution is complete at the end of State 6 ofthis machine cycle.

The MOVX instructions take two machine cycles to execute. Noprogram fetch is generated during the second cycle of a MOVXinstruction. This is the only time program fetches are skipped. Thefetch/execute sequence for MOVX instructions is shown in Figure15d.

The fetch/execute sequences are the same whether the ProgramMemory is internal or external to the chip. Execution times do notdepend on whether the Program Memory is internal or external.

Figure 16 shows the signals and timing involved in program fetcheswhen the Program Memory is external. If Program Memory isexternal, then the Program Memory read strobe PSEN is normallyactivated twice per machine cycle, as shown in Figure 16a. If anaccess to external Data Memory occurs, as shown in Figure 16b,two PSENs are skipped, because the address and data bus arebeing used for the Data Memory access.

Note that a Data Memory bus cycle takes twice as much time as aProgram Memory bus cycle. Figure 16 shows the relative timing ofthe addresses being emitted at Ports 0 and 2, and of ALE andPSEN. ALE is used to latch the low address byte from P0 into theaddress latch.

When the CPU is executing from internal Program Memory, PSEN isnot activated, and program addresses are not emitted. However,ALE continues to be activated twice per machine cycle and so it isavailable as a clock output signal. Note, however, that one ALE isskipped during the execution of the MOVX instruction.

Page 111: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 12

Osc.(XTAL2)

S1

P1 P2

S2

P1 P2

S3

P1 P2

S4

P1 P2

S5

P1 P2

S6

P1 P2

S1

P1 P2

S2

P1 P2

S3

P1 P2

S4

P1 P2

S5

P1 P2

S6

P1 P2

S1

P1 P2

ALE

S1 S2 S3 S4 S5 S6

Read opcode.Read nextopcode(discard).

Read next opcode again.

a. 1-byte, 1-cycle Instruction, e.g., INC A

S1 S2 S3 S4 S5 S6

Read opcode. Read 2nd byte. Read next opcode.

b. 2-byte, 1-cycle Instruction, e.g., ADD A,#data

S1 S2 S3 S4 S5 S6

Read opcode. Read nextopcode (discard)

Read next opcode again.

S1 S2 S3 S4 S5 S6

S1 S2 S3 S4 S5 S6

Read opcode.(MOVX) Read next

opcode (discard)

Read next opcode again.

d. MOVX (1-byte, 2-cycle)

S1 S2 S3 S4 S5 S6

Nofetch.

No fetch.

ADDR DATA

No ALE

Access external memory.

c. 1-byte, 2-cycle Instruction, e.g., INC DPTR

SU00472

Figure 15. State Sequence in 80C51 Family Devices

Page 112: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 13

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6

One Machine Cycle One Machine Cycle

ALE

PSEN

RD

a. Without a MOVX

P2 PCH out PCH out PCH out PCH out PCH out PCH out

P0 PCLout

INSTin

PCLout

INSTin

PCLout

INSTin

PCLout

INSTin

PCLout

INSTin

PCL outValid

PCL outValid

PCL outValid

PCL outValid

PCL outValid

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6

Cycle 1 Cycle 2

ALE

PSEN

RD

b. With a MOVX

P2 PCH out PCH out DPH out or P2 out PCH out PCH out

P0 PCLout

INSTin

ADDRout

INSTin

PCLout

Datain

PCLout

INSTin

PCL outValid

ADDR outValid

PCL outValid

SU00473

Figure 16. Bus Cycles in 80C51 Family Devices Executing from External Program Memory

Page 113: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 14

Symbol Position Function

EA IE.7 Disables all interrupts. If EA = 0, nointerrupt will be acknowledged. If EA = 1,each interrupt source is individuallyenabled or disabled by setting or clearingits enable bit.

IE.6 Reserved.

IE.5 Reserved.

ES IE.4 Enables or disables the Serial Portinterrupt. If ES = 0, the Serial Portinterrupt is disabled.

ET1 IE.3 Enables or disables the Timer 1 Overflowinterrupt. If ET1 = 0, the Timer 1 interruptis disabled.

EX1 IE.2 Enables or disables External Interrupt 1.If EX1 = 0, External Interrupt 1 is disabled.

ET0 IE.1 Enables or disables the Timer 0 Overflowinterrupt. If ET0 = 0, the Timer 0 interruptis disabled.

EX0 IE.0 Enables or disables Exeternal Interrupt 0.If EX0 = 0, External Interrupt 0 is disabled.

(MSB) (LSB)

EA X X ES ET1 EX1 ET0 EX0

SU00474

Figure 17. Interrupt Enable (IE) Register

Symbol Position Function

IP.7 Reserved.

IP.6 Reserved.

IP.5 Reserved.

PS IP.4 Defines the Serial Port interrupt prioritylevel. PS = 1 programs it to the higherpriority level.

PT1 IP.3 Defines the Timer 1 interrupt prioritylevel. PT1 = 1 programs it to the higherpriority level.

PX1 IP.2 Defines the External Interrupt 1 prioritylevel. PX1 = 1 programs it to the higherpriority level.

PT0 IP.1 Enables or disables the Timer 0 Interruptpriority level. PT) = 1 programs it to thehigher priority level.

PX0 IP.0 Defines the External Interrupt 0 prioritylevel. PX0 = 1 programs it to the higherpriority level.

(MSB) (LSB)

X X X PS PT1 PX1 PT0 PX0

SU00475

Figure 18. Interrupt Priority (IP) Register

IE0

IE1

INT0 IT0

TF0

INT1 IT1

TF1

RI

TI

IE Register IP RegisterHigh Priority

Interrupt

Interrupt Pol-ling

Sequence

Low Priority Interrupt

Individual Enables Global

Disable

0

1

0

1

SU00476

Figure 19. Interrupt Control System

Page 114: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 Family 80C51 family architecture

March 1995 15

Interrupt StructureThe 80C51 and its ROMless and EPROM versions have 5 interruptsources: 2 external interrupts, 2 timer interrupts, and the serial portinterrupt.

What follows is an overview of the interrupt structure for the device.More detailed information for specific members of the 80C51derivative family is provided in later chapters of this user’s guide.

Interrupt EnablesEach interrupt source can be individually enabled or disabled bysetting or clearing a bit in the SFR named IE (Interrupt Enable). Thisregister also contains a global disable bit, which can be cleared todisable all interrupts at once. Figure 17 shows the IE register.

Interrupt PrioritiesEach interrupt source can also be individually programmed to one oftwo priority levels by setting or clearing a bit in the SFR named IP(Interrupt Priority). Figure 18 shows the IP register. A low-priorityinterrupt can be interrupted by a high-priority interrupt, but not byanother low-priority interrupt. A high-priority interrupt can’t beinterrupted by any other interrupt source.

If two interrupt requests of different priority levels are receivedsimultaneously, the request of higher priority is serviced. If interruptrequests of the same priority level are received simultaneously, aninternal polling sequence determines which request is serviced.Thus within each priority level there is a second priority structuredetermined by the polling sequence. Figure 19 shows how the IEand IP registers and the polling sequence work to determine which ifany interrupt will be serviced.

In operation, all the interrupt flags are latched into the interruptcontrol system during State 5 of every machine cycle. The samplesare polled during the following machine cycle. If the flag for anenabled interrupt is found to be set (1), the interrupt systemgenerates an LCALL to the appropriate location in Program Memory,unless some other condition blocks the interrupt. Several conditionscan block an interrupt, among them that an interrupt of equal orhigher priority level is already in progress.

The hardware-generated LCALL causes the contents of theProgram Counter to be pushed into the stack, and reloads the PCwith the beginning address of the service routine. As previously

noted (Figure 3), the service routine for each interrupt begins at afixed location.

Only the Program Counter is automatically pushed onto the stack,not the PSW or any other register. Having only the PC automaticallysaved allows the programmer to decide how much time should bespent saving other registers. This enhances the interrupt responsetime, albeit at the expense of increasing the programmer’s burden ofresponsibility. As a result, many interrupt functions that are typical incontrol applications toggling a port pin for example, or reloading atimer, or unloading a serial buffer can often be completed in lesstime than it takes other architectures to complete.

Simulating a Third Priority Level in SoftwareSome applications require more than two priority levels that areprovided by on-chip hardware in 80C51 devices. In these cases,relatively simple software can be written to produce the same effectas a third priority level. First, interrupts that are to have higherpriority than 1 are assigned to priority 1 in the Interrupt Priority (IP)register. The service routines for priority 1 interrupts that aresupposed to be interruptable by priority 2 interrupts are written toinclude the following code:

PUSH IEMOV IE,#MASKCALL LABEL************************(execute service routine)*************************POP IERET

LABEL: RETI

As soon as any priority interrupt is acknowledged, the InterruptEnable (IE) register is redefined so as to disable all but priority 2interrupts. Then a CALL to LABEL executes the RETI instruction,which clears the priority 1 interrupt-in-progress flip-flop. At this pointany priority 1 interrupt that is enabled can be serviced, but onlypriority 2 interrupts are enabled.

POPing IE restores the original enable byte. Then a normal RET(rather than another RETI) is used to terminate the service routine.The additional software adds 10µs (at 12MHz) to priority 1interrupts.

Page 115: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A13 - 80C51 FAMILY PROGRAMMER’S GUIDE

-99-

Page 116: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

Philips Semiconductors

80C51 family programmer’s guideand instruction set80C51 Family

11997 Sep 18

PROGRAMMER’S GUIDE AND INSTRUCTION SET

Memory Organization

Program MemoryThe 80C51 has separate address spaces for program and datamemory. The Program memory can be up to 64k bytes long. Thelower 4k can reside on-chip. Figure 1 shows a map of the 80C51program memory.

The 80C51 can address up to 64k bytes of data memory to the chip.The MOVX instruction is used to access the external data memory.

The 80C51 has 128 bytes of on-chip RAM, plus a number of SpecialFunction Registers (SFRs). The lower 128 bytes of RAM can beaccessed either by direct addressing (MOV data addr) or by indirectaddressing (MOV @Ri). Figure 2 shows the Data Memoryorganization.

Direct and Indirect Address AreaThe 128 bytes of RAM which can be accessed by both direct andindirect addressing can be divided into three segments as listedbelow and shown in Figure 3.1. Register Banks 0-3: Locations 0 through 1FH (32 bytes). The

device after reset defaults to register bank 0. To use the otherregister banks, the user must select them in software. Each

register bank contains eight 1-byte registers 0 through 7. Resetinitializes the stack pointer to location 07H, and it is incrementedonce to start from location 08H, which is the first register (R0) ofthe second register bank. Thus, in order to use more than oneregister bank, the SP should be initialized to a different locationof the RAM where it is not used for data storage (i.e., the higherpart of the RAM).

2. Bit Addressable Area: 16 bytes have been assigned for thissegment, 20H-2FH. Each one of the 128 bits of this segment canbe directly addressed (0-7FH). The bits can be referred to in twoways, both of which are acceptable by most assemblers. Oneway is to refer to their address (i.e., 0-7FH). The other way iswith reference to bytes 20H to 2FH. Thus, bits 0-7 can also bereferred to as bits 20.0-20.7, and bits 8-FH are the same as21.0-21.7, and so on. Each of the 16 bytes in this segment canalso be addressed as a byte.

3. Scratch Pad Area: 30H through 7FH are available to the user asdata RAM. However, if the stack pointer has been initialized tothis area, enough bytes should be left aside to prevent SP datadestruction.

Figure 2 shows the different segments of the on-chip RAM.

OR

60kBYTES

EXTERNAL

AND

FFFF

1000

0FFF

0000

4k BYTESINTERNAL

64kBYTES

EXTERNAL

FFFF

0000

SU00567

Figure 1. 80C51 Program Memory

Page 117: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 2

SFRsDIRECT ADDRESSING

ONLY

AND

FF

80

7F

00

64kBYTES

EXTERNAL

0FFF

0000

DRIECT AND INDIRECTADDRESSING

INTERNAL

SU00568

Figure 2. 80C51 Data Memory

SCRATCHPAD

AREA

8 BYTES

78

70

68

60

58

50

48

40

38

30

28

20

18

10

08

00

7F

77

6F

67

5F

57

4F

47

3F

37

2F

27

1F

17

0F

07

... 7F

0 ...

3

2

1

0

BITADDRESSABLE

SEGMENT

REGISTERBANKS

SU00569

Figure 3. 128 Bytes of RAM Direct and Indirect Addressable

Page 118: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 3

Table 1. 80C51 Special Function Registers

SYMBOL DESCRIPTION DIRECTADDRESS

BIT ADDRESS, SYMBOL, OR ALTERNATIVE PORT FUNCTIONMSB LSB RESET VALUE

ACC* Accumulator E0H E7 E6 E5 E4 E3 E2 E1 E0 00H

B* B register F0H F7 F6 F5 F4 F3 F2 F1 F0 00H

DPTR Data pointer (2 by-tes)

DPH Data pointer high 83H 00H

DPL Data pointer low 82H 00H

AF AE AD AC AB AA A9 A8

IE* Interrupt enable A8H EA – – ES ET1 EX1 ET0 EX0 0x000000B

BF BE BD BC BB BA B9 B8

IP* Interrupt priority B8H – – – PS PT1 PX1 PT0 PX0 xx000000B

87 86 85 84 83 82 81 80

P0* Port 0 80H AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 FFH

97 96 95 94 93 92 91 90

P1* Port 1 90H – – – – – – T2EX T2 FFH

A7 A6 A5 A4 A3 A2 A1 A0

P2* Port 2 A0H A15 A14 A13 A12 A11 A10 A9 A8 FFH

B7 B6 B5 B4 B3 B2 B1 B0

P3* Port 3 B0H RD WR T1 T0 INT1 INT0 TxD Rxd FFH

PCON1 Power control 87H SMOD – – – GF1 GF0 PD IDL 0xxxxxxxB

D7 D6 D5 D4 D3 D2 D1 D0

PSW* Program status word D0H CY AC F0 RS1 RS0 OV – P 00H

SBUF Serial data buffer 99H xxxxxxxxB

9F 9E 9D 9C 9B 9A 99 98

SCON* Serial controller 98H SM0 SM1 SM2 REN TB8 RB8 TI RI 00H

SP Stack pointer 81H 07H

8F 8E 8D 8C 8B 8A 89 88

TCON* Timer control 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TH0 Timer high 0 8CH 00H

TH1 Timer high 1 8DH 00H

TL0 Timer low 0 8AH 00H

TL1 Timer low 1 8BH 00H

TMOD Timer mode 89H GATE C/T M1 M0 GATE C/T M1 M0 00H

NOTES:* Bit addressable1. Bits GF1, GF0, PD, and IDL of the PCON register are not implemented on the NMOS 8051/8031.

Page 119: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 4

F8

F0

E8

E0

D8

D0

C8

C0

B8

B0

A8

A0

98

90

88

80

FF

F7

EF

E7

DF

D7

CF

C7

BF

B7

AF

A7

9F

97

8F

87

TCON

8 BYTES

BIT ADDRESSABLE

P0

P1

SCON

P2

IE

P3

IP

PSW

ACC

B

SBUF

TMOD TL0 TL1 TH0 TH1

SP DPL DPH PCON

SU00570

Figure 4. SFR Memory Map

Page 120: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 5

Those SFRs that have their bits assigned for various functions are listed in this section. A brief description of each bit isprovided for quick reference. For more detailed information refer to the Architecture Chapter of this book.

PSW: PROGRAM STATUS WORD. BIT ADDRESSABLE.

CY AC F0 RS1 RS0 OV – P

CY PSW.7 Carry Flag.

AC PSW.6 Auxiliary Carry Flag.

F0 PSW.5 Flag 0 available to the user for general purpose.

RS1 PSW.4 Register Bank selector bit 1 (SEE NOTE 1).

RS0 PSW.3 Register Bank selector bit 0 (SEE NOTE 1).

OV PSW.2 Overflow Flag.

– PSW.1 Usable as a general purpose flag.

P PSW.0 Parity flag. Set/cleared by hardware each instruction cycle to indicate an odd/even number of ‘1’ bus inthe accumulator.

NOTE:1. The value presented by RS0 and RS1 selects the corresponding register bank.

RS1 RS0 REGISTER BANK ADDRESS

0 0 0 00H-07H

0 1 1 08H-0FH

1 0 2 10H-17H

1 1 3 18H-1FH

PCON: POWER CONTROL REGISTER. NOT BIT ADDRESSABLE.

SMOD – – – GF1 GF0 PD IDL

SMOD Double baud rate bit. If Timer 1 is used to generate baud rate and SMOD = 1, the baud rate is doubled when the SerialPort is used in modes 1, 2, or 3.

– Not implemented, reserved for future use.*

– Not implemented reserved for future use.*

– Not implemented reserved for future use.*

GF1 General purpose flag bit.

GF0 General purpose flag bit.

PD Power Down Bit. Setting this bit activates Power Down operation in the 80C51. (Available only in CMOS.)

IDL Idle mode bit. Setting this bit activates Idle Mode operation in the 80C51. (Available only in CMOS.)

If 1s are written to PD and IDL at the same time, PD takes precedence.

* User software should not write 1s to reserved bits. These bits may be used in future 8051 products to invoke new features.

Page 121: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 6

INTERRUPTS:

To use any of the interrupts in the 80C51 Family, the following three steps must be taken.

1. Set the EA (enable all) bit in the IE register to 1.

2. Set the corresponding individual interrupt enable bit in the IE register to 1.

3. Begin the interrupt service routine at the corresponding Vector Address of that interrupt. See Table below.

INTERRUPT SOURCE VECTOR ADDRESS

IE0 0003H

TF0 000BH

IE1 0013H

TF1 001BH

RI & TI 0023H

In addition, for external interrupts, pins INT0 and INT1 (P3.2 and P3.3) must be set to 1, and depending on whether theinterrupt is to be level or transition activated, bits IT0 or IT1 in the TCON register may need to be set to 1.

ITx = 0 level activated

ITx = 1 transition activated

IE: INTERRUPT ENABLE REGISTER. BIT ADDRESSABLE.

If the bit is 0, the corresponding interrupt is disabled. If the bit is 1, the corresponding interrupt is enabled.

EA – – ES ET1 EX1 ET0 EX0

EA IE.7 Disables all interrupts. If EA = 0, no interrupt will be acknowledged. If EA = 1, each interrupt source isindividually enabled or disabled by setting or clearing its enable bit.

— IE.6 Not implemented, reserved for future use.*

— IE.5 Not implemented, reserved for future use.*

ES IE.4 Enable or disable the serial port interrupt.

ET1 IE.3 Enable or disable the Timer 1 overflow interrupt.

EX1 IE.2 Enable or disable External Interrupt 1.

ET0 IE.1 Enable or disable the Timer 0 overflow interrupt.

EX0 IE.0 Enable or disable External Interrupt 0.

* User software should not write 1s to reserved bits. These bits may be used in future 80C51 products to invoke new features.

Page 122: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 7

ASSIGNING HIGHER PRIORITY TO ONE OR MORE INTERRUPTS:

In order to assign higher priority to an interrupt the corresponding bit in the IP register must be set to 1.

Remember that while an interrupt service is in progress, it cannot be interrupted by a lower or same level interrupt.

PRIORITY WITHIN LEVEL:

Priority within level is only to resolve simultaneous requests of the same priority level.

From high to low, interrupt sources are listed below:

IE0TF0IE1TF1RI or TI

IP: INTERRUPT PRIORITY REGISTER. BIT ADDRESSABLE.

If the bit is 0, the corresponding interrupt has a lower priority and if the bit is 1 the corresponding interrupt has a higher priority.

– – – PS PT1 PX1 PT0 PX0

– IP.7 Not implemented, reserved for future use.*

– IP.6 Not implemented, reserved for future use.*

– IP.5 Not implemented, reserved for future use.*

PS IP.4 Defines the Serial Port interrupt priority level.

PT1 IP.3 Defines the Timer 1 interrupt priority level.

PX1 IP.2 Defines External Interrupt 1 priority level.

PT0 IP.1 Defines the Timer 0 interrupt priority level.

PX0 IP.0 Defines the External Interrupt 0 priority level.

* User software should not write 1s to reserved bits. These bits may be used in future 80C51 products to invoke new features.

Page 123: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 8

TCON: TIMER/COUNTER CONTROL REGISTER. BIT ADDRESSABLE.

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TF1 TCON.7 Timer 1 overflow flag. Set by hardware when the Timer/Counter 1 overflows. Cleared by hardware asprocessor vectors to the interrupt service routine.

TR1 TCON.6 Timer 1 run control bit. Set/cleared by software to turn Timer/Counter 1 ON/OFF.

TF0 TCON.5 Timer 0 overflow flag. Set by hardware when the Timer/Counter 0 overflows. Cleared by hardware asprocessor vectors to the service routine.

TR0 TCON.4 Timer 0 run control bit. Set/cleared by software to turn Timer/Counter 0 ON/OFF.

IE1 TCON.3 External Interrupt 1 edge flag. Set by hardware when External Interrupt edge is detected. Cleared byhardware when interrupt is processed.

IT1 TCON.2 Interrupt 1 type control bit. Set/cleared by software to specify falling edge/low level triggered External Interrupt.

IE0 TCON.1 External Interrupt 0 edge flag. Set by hardware when External Interrupt edge detected. Cleared byhardware when interrupt is processed.

IT0 TCON.0 Interrupt 0 type control bit. Set/cleared by software to specify falling edge/low level triggered ExternalInterrupt.

TMOD: TIMER/COUNTER MODE CONTROL REGISTER. NOT BIT ADDRESSABLE.

GATE C/T M1 M0 GATE C/T M1 M0

Timer 1 Timer 0

GATE When TRx (in TCON) is set and GATE = 1, TIMER/COUNTERx will run only while INTx pin is high (hardware control).When GATE = 0, TIMER/COUNTERx will run only while TRx = 1 (software control).

C/T Timer or Counter selector. Cleared for Timer operation (input from internal system clock). Set for Counter operation(input from Tx input pin).

M1 Mode selector bit. (NOTE 1)

M0 Mode selector bit. (NOTE 1)

NOTE 1:

M1 M0 Operating Mode

0 0 0 13-bit Timer (8048 compatible)

0 1 1 16-bit Timer/Counter

1 0 2 8-bit Auto-Reload Timer/Counter

1 1 3 (Timer 0) TL0 is an 8-bit Timer/Counter controlled by the standart Timer 0 control bits. TH0 is an8-bit Timer and is controlled by Timer 1 control bits.

1 1 3 (Timer 1) Timer/Counter 1 stopped.

Page 124: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 9

TIMER SET-UP

Tables 2 through 5 give some values for TMOD which can be used to set up Timer 0 in different modes.

It is assumed that only one timer is being used at a time. If it is desired to run Timers 0 and 1 simultaneously, in any mode, thevalue in TMOD for Timer 0 must be ORed with the value shown for Timer 1 (Tables 5 and 6).

For example, if it is desired to run Timer 0 in mode 1 GATE (external control), and Timer 1 in mode 2 COUNTER, then the valuethat must be loaded into TMOD is 69H (09H from Table 2 ORed with 60H from Table 5).

Moreover, it is assumed that the user, at this point, is not ready to turn the timers on and will do that at a different point in theprogram by setting bit TRx (in TCON) to 1.

TIMER/COUNTER 0

Table 2. As a Timer:

TMOD

MODE TIMER 0FUNCTION

INTERNAL CONTROL(NOTE 1)

EXTERNALCONTROL(NOTE 2)

0 13-bit Timer 00H 08H

1 16-bit Timer 01H 09H

2 8-bit Auto-Reload 02H 0AH

3 Two 8-bit Timers 03H 0BH

Table 3. As a Counter:

TMOD

MODE COUNTER 0FUNCTION

INTERNAL CONTROL(NOTE 1)

EXTERNALCONTROL(NOTE 2)

0 13-bit Timer 04H 0CH

1 16-bit Timer 05H 0DH

2 8-bit Auto-Reload 06H 0EH

3 One 8-bit Counter 07H 0FH

NOTES:1. The timer is turned ON/OFF by setting/clearing bit TR0 in the software.2. The Timer is turned ON/OFF by the 1-to-0 transition on INT0 (P3.2) when TR0 = 1 (hardware control).

Page 125: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 10

TIMER/COUNTER 1

Table 4. As a Timer:

TMOD

MODE TIMER 1FUNCTION

INTERNAL CONTROL(NOTE 1)

EXTERNALCONTROL(NOTE 2)

0 13-bit Timer 00H 80H

1 16-bit Timer 10H 90H

2 8-bit Auto-Reload 20H A0H

3 Does not run 30H B0H

Table 5. As a Counter:

TMOD

MODE COUNTER 1FUNCTION

INTERNAL CONTROL(NOTE 1)

EXTERNALCONTROL(NOTE 2)

0 13-bit Timer 40H C0H

1 16-bit Timer 50H D0H

2 8-bit Auto-Reload 60H E0H

3 Not available – –

NOTES:1. The timer is turned ON/OFF by setting/clearing bit TR1 in the software.2. The Timer is turned ON/OFF by the 1-to-0 transition on INT1 (P3.2) when TR1 = 1 (hardware control).

Page 126: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 11

SCON: SERIAL PORT CONTROL REGISTER. BIT ADDRESSABLE.

SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0 SCON.7 Serial Port mode specifier. (NOTE 1)

SM1 SCON.6 Serial Port mode specifier. (NOTE 1)

SM2 SCON.5 Enables the multiprocessor communication feature in modes 2 & 3. In mode 2 or 3, if SM2 is set to 1 thenRI will not be activated if the received 9th data bit (RB8) is 0. In mode 1, if SM2 = 1 then RI will not beactivated if a valid stop bit was not received. In mode 0, SM2 should be 0. (See Table 6.)

REN SCON.4 Set/Cleared by software to Enable/Disable reception.

TB8 SCON.3 The 9th bit that will be transmitted in modes 2 & 3. Set/Cleared by software.

RB8 SCON.2 In modes 2 & 3, is the 9th data bit that was received. In mode 1, if SM2 = 0, RB8 is the stop bit that wasreceived. In mode 0, RB8 is not used.

TI SCON.1 Transmit interrupt flag. Set by hardware at the end of the 8th bit time in mode 0, or at the beginning of thestop bit in the other modes. Must be cleared by software.

RI SCON.0 Receive interrupt flag. Set by hardware at the end of the 8th bit time in mode 0, or halfway through thestop bit time in the other modes (except see SM2). Must be cleared by software.

NOTE 1:

SM0 SM1 Mode Description Baud Rate0 0 0 Shift Register FOSC./12

0 1 1 8-bit UART Variable1 0 2 9-bit UART FOSC./64 or FOSC./321 1 3 9-bit UART Variable

SERIAL PORT SET-UP:

Table 6.

MODE SCON SM2 VARIATION

0123

10H50H90HD0H

Single ProcessorEnvironment

(SM2 = 0)

0123

NA70HB0HF0H

MultiprocessorEnvironment

(SM2 = 1)

GENERATING BAUD RATES

Serial Port in Mode 0:

Mode 0 has a fixed baud rate which is 1/12 of the oscillator frequency. To run the serial port in this mode none of theTimer/Counters need to be set up. Only the SCON register needs to be defined.

Baud Rate �

Osc Freq12

Serial Port in Mode 1:

Mode 1 has a variable baud rate. The baud rate is generated by Timer 1.

Page 127: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

80C51 family programmer’s guideand instruction set

Philips Semiconductors

80C51 Family

1997 Sep 18 12

USING TIMER/COUNTER 1 TO GENERATE BAUD RATES:

For this purpose, Timer 1 is used in mode 2 (Auto-Reload). Refer to Timer Setup section of this chapter.

Baud Rate �

K � Osc Freq32 � 12 � [256 � (TH1)]

If SMOD = 0, then K = 1.If SMOD = 1, then K = 2 (SMOD is in the PCON register).

Most of the time the user knows the baud rate and needs to know the reload value for TH1.

TH1 � 256 �

K � Osc Freq384 � baud rate

TH1 must be an integer value. Rounding off TH1 to the nearest integer may not produce the desired baud rate. In this case, theuser may have to choose another crystal frequency.

Since the PCON register is not bit addressable, one way to set the bit is logical ORing the PCON register (i.e., ORLPCON,#80H). The address of PCON is 87H.

SERIAL PORT IN MODE 2:

The baud rate is fixed in this mode and is 1/32 or 1/64 of the oscillator frequency, depending on the value of the SMOD bit inthe PCON register.

In this mode none of the Timers are used and the clock comes from the internal phase 2 clock.

SMOD = 1, Baud Rate = 1/32 Osc Freq.

SMOD = 0, Baud Rate = 1/64 Osc Freq.

To set the SMOD bit: ORL PCON,#80H. The address of PCON is 87H.

SERIAL PORT IN MODE 3:

The baud rate in mode 3 is variable and sets up exactly the same as in mode 1.

Page 128: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

A14 - NOTICE TECHNIQUE DU 8255

-100-

Page 129: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

October 1995 Order Number: 231256-004

82C55ACHMOS PROGRAMMABLE PERIPHERAL INTERFACE

Y Compatible with all Intel and MostOther Microprocessors

Y High Speed, ‘‘Zero Wait State’’Operation with 8 MHz 8086/88 and80186/188

Y 24 Programmable I/O Pins

Y Low Power CHMOS

Y Completely TTL Compatible

Y Control Word Read-Back Capability

Y Direct Bit Set/Reset Capability

Y 2.5 mA DC Drive Capability on all I/OPort Outputs

Y Available in 40-Pin DIP and 44-Pin PLCC

Y Available in EXPRESSÐ Standard Temperature RangeÐ Extended Temperature Range

The Intel 82C55A is a high-performance, CHMOS version of the industry standard 8255A general purposeprogrammable I/O device which is designed for use with all Intel and most other microprocessors. It provides24 I/O pins which may be individually programmed in 2 groups of 12 and used in 3 major modes of operation.The 82C55A is pin compatible with the NMOS 8255A and 8255A-5.

In MODE 0, each group of 12 I/O pins may be programmed in sets of 4 and 8 to be inputs or outputs. InMODE 1, each group may be programmed to have 8 lines of input or output. 3 of the remaining 4 pins are usedfor handshaking and interrupt control signals. MODE 2 is a strobed bi-directional bus configuration.

The 82C55A is fabricated on Intel’s advanced CHMOS III technology which provides low power consumptionwith performance equal to or greater than the equivalent NMOS product. The 82C55A is available in 40-pinDIP and 44-pin plastic leaded chip carrier (PLCC) packages.

231256–1

Figure 1. 82C55A Block Diagram

231256–31

231256–2

Figure 2. 82C55A PinoutDiagrams are for pin reference only. Packagesizes are not to scale.

Page 130: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Table 1. Pin Description

SymbolPin Number

Type Name and FunctionDip PLCC

PA3–0 1–4 2–5 I/O PORT A, PINS 0–3: Lower nibble of an 8-bit data output latch/

buffer and an 8-bit data input latch.

RD 5 6 I READ CONTROL: This input is low during CPU read operations.

CS 6 7 I CHIP SELECT: A low on this input enables the 82C55A to

respond to RD and WR signals. RD and WR are ignored

otherwise.

GND 7 8 System Ground

A1–0 8–9 9–10 I ADDRESS: These input signals, in conjunction RD and WR,

control the selection of one of the three ports or the control

word registers.

A1 A0 RD WR CS Input Operation (Read)

0 0 0 1 0 Port A - Data Bus

0 1 0 1 0 Port B - Data Bus

1 0 0 1 0 Port C - Data Bus

1 1 0 1 0 Control Word - Data Bus

Output Operation (Write)

0 0 1 0 0 Data Bus - Port A

0 1 1 0 0 Data Bus - Port B

1 0 1 0 0 Data Bus - Port C

1 1 1 0 0 Data Bus - Control

Disable Function

X X X X 1 Data Bus - 3 - State

X X 1 1 0 Data Bus - 3 - State

PC7–4 10–13 11,13–15 I/O PORT C, PINS 4–7: Upper nibble of an 8-bit data output latch/buffer and an 8-bit data input buffer (no latch for input). This port

can be divided into two 4-bit ports under the mode control. Each

4-bit port contains a 4-bit latch and it can be used for the control

signal outputs and status signal inputs in conjunction with ports

A and B.

PC0–3 14–17 16–19 I/O PORT C, PINS 0–3: Lower nibble of Port C.

PB0-7 18–25 20–22, I/O PORT B, PINS 0–7: An 8-bit data output latch/buffer and an 8-24–28 bit data input buffer.

VCC 26 29 SYSTEM POWER: a 5V Power Supply.

D7–0 27–34 30–33, I/O DATA BUS: Bi-directional, tri-state data bus lines, connected to35–38 system data bus.

RESET 35 39 I RESET: A high on this input clears the control register and all

ports are set to the input mode.

WR 36 40 I WRITE CONTROL: This input is low during CPU write

operations.

PA7–4 37–40 41–44 I/O PORT A, PINS 4–7: Upper nibble of an 8-bit data output latch/

buffer and an 8-bit data input latch.

NC 1, 12, No Connect23, 34

2

Page 131: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

82C55A FUNCTIONAL DESCRIPTION

General

The 82C55A is a programmable peripheral interfacedevice designed for use in Intel microcomputer sys-tems. Its function is that of a general purpose I/Ocomponent to interface peripheral equipment to themicrocomputer system bus. The functional configu-ration of the 82C55A is programmed by the systemsoftware so that normally no external logic is neces-sary to interface peripheral devices or structures.

Data Bus Buffer

This 3-state bidirectional 8-bit buffer is used to inter-face the 82C55A to the system data bus. Data istransmitted or received by the buffer upon executionof input or output instructions by the CPU. Controlwords and status information are also transferredthrough the data bus buffer.

Read/Write and Control Logic

The function of this block is to manage all of theinternal and external transfers of both Data andControl or Status words. It accepts inputs from theCPU Address and Control busses and in turn, issuescommands to both of the Control Groups.

Group A and Group B Controls

The functional configuration of each port is pro-grammed by the systems software. In essence, theCPU ‘‘outputs’’ a control word to the 82C55A. Thecontrol word contains information such as ‘‘mode’’,‘‘bit set’’, ‘‘bit reset’’, etc., that initializes the func-tional configuration of the 82C55A.

Each of the Control blocks (Group A and Group B)accepts ‘‘commands’’ from the Read/Write ControlLogic, receives ‘‘control words’’ from the internaldata bus and issues the proper commands to its as-sociated ports.

Control Group A - Port A and Port C upper (C7–C4)Control Group B - Port B and Port C lower (C3–C0)

The control word register can be both written andread as shown in the address decode table in thepin descriptions. Figure 6 shows the control wordformat for both Read and Write operations. Whenthe control word is read, bit D7 will always be a logic‘‘1’’, as this implies control word mode information.

Ports A, B, and C

The 82C55A contains three 8-bit ports (A, B, and C).All can be configured in a wide variety of functionalcharacteristics by the system software but each hasits own special features or ‘‘personality’’ to furtherenhance the power and flexibility of the 82C55A.

Port A. One 8-bit data output latch/buffer and one8-bit input latch buffer. Both ‘‘pull-up’’ and ‘‘pull-down’’ bus hold devices are present on Port A.

Port B. One 8-bit data input/output latch/buffer.Only ‘‘pull-up’’ bus hold devices are present on PortB.

Port C. One 8-bit data output latch/buffer and one8-bit data input buffer (no latch for input). This portcan be divided into two 4-bit ports under the modecontrol. Each 4-bit port contains a 4-bit latch and itcan be used for the control signal outputs and statussignal inputs in conjunction with ports A and B. Only‘‘pull-up’’ bus hold devices are present on Port C.

See Figure 4 for the bus-hold circuit configuration forPort A, B, and C.

3

Page 132: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

231256–3

Figure 3. 82C55A Block Diagram Showing Data Bus Buffer and Read/Write Control Logic Functions

*NOTE: 231256–4

Port pins loaded with more than 20 pF capacitance may not have their logic level guaranteed following a hardware reset.

Figure 4. Port A, B, C, Bus-hold Configuration

4

Page 133: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

82C55A OPERATIONAL DESCRIPTION

Mode Selection

There are three basic modes of operation that canbe selected by the system software:

Mode 0 Ð Basic input/outputMode 1 Ð Strobed Input/outputMode 2 Ð Bi-directional Bus

When the reset input goes ‘‘high’’ all ports will be setto the input mode with all 24 port lines held at a logic‘‘one’’ level by the internal bus hold devices (seeFigure 4 Note). After the reset is removed the82C55A can remain in the input mode with no addi-tional initialization required. This eliminates the needfor pullup or pulldown devices in ‘‘all CMOS’’ de-signs. During the execution of the system program,any of the other modes may be selected by using asingle output instruction. This allows a single82C55A to service a variety of peripheral deviceswith a simple software maintenance routine.

The modes for Port A and Port B can be separatelydefined, while Port C is divided into two portions asrequired by the Port A and Port B definitions. All ofthe output registers, including the status flip-flops,will be reset whenever the mode is changed. Modesmay be combined so that their functional definitioncan be ‘‘tailored’’ to almost any I/O structure. Forinstance; Group B can be programmed in Mode 0 tomonitor simple switch closings or display computa-tional results, Group A could be programmed inMode 1 to monitor a keyboard or tape reader on aninterrupt-driven basis.

231256–5

Figure 5. Basic Mode Definitions and Bus

Interface

231256–6

Figure 6. Mode Definition Format

The mode definitions and possible mode combina-tions may seem confusing at first but after a cursoryreview of the complete device operation a simple,logical I/O approach will surface. The design of the82C55A has taken into account things such as effi-cient PC board layout, control signal definition vs PClayout and complete functional flexibility to supportalmost any peripheral device with no external logic.Such design represents the maximum use of theavailable pins.

Single Bit Set/Reset Feature

Any of the eight bits of Port C can be Set or Resetusing a single OUTput instruction. This feature re-duces software requirements in Control-based appli-cations.

When Port C is being used as status/control for PortA or B, these bits can be set or reset by using the BitSet/Reset operation just as if they were data outputports.

5

Page 134: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

231256–7

Figure 7. Bit Set/Reset Format

Interrupt Control Functions

When the 82C55A is programmed to operate inmode 1 or mode 2, control signals are provided thatcan be used as interrupt request inputs to the CPU.The interrupt request signals, generated from port C,can be inhibited or enabled by setting or resettingthe associated INTE flip-flop, using the bit set/resetfunction of port C.

This function allows the Programmer to disallow orallow a specific I/O device to interrupt the CPU with-out affecting any other device in the interrupt struc-ture.

INTE flip-flop definition:

(BIT-SET)ÐINTE is SETÐInterrupt enable(BIT-RESET)ÐINTE is RESETÐInterrupt disable

Note:All Mask flip-flops are automatically reset duringmode selection and device Reset.

6

Page 135: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Operating Modes

Mode 0 (Basic Input/Output). This functional con-figuration provides simple input and output opera-tions for each of the three ports. No ‘‘handshaking’’is required, data is simply written to or read from aspecified port.

Mode 0 Basic Functional Definitions:

# Two 8-bit ports and two 4-bit ports.

# Any port can be input or output.

# Outputs are latched.

# Inputs are not latched.

# 16 different Input/Output configurations are pos-sible in this Mode.

MODE 0 (BASIC INPUT)

231256–8

MODE 0 (BASIC OUTPUT)

231256–9

7

Page 136: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

MODE 0 Port Definition

A B GROUP A GROUP B

D4 D3 D1 D0 PORT APORT C Ý PORT B

PORT C(UPPER) (LOWER)

0 0 0 0 OUTPUT OUTPUT 0 OUTPUT OUTPUT

0 0 0 1 OUTPUT OUTPUT 1 OUTPUT INPUT

0 0 1 0 OUTPUT OUTPUT 2 INPUT OUTPUT

0 0 1 1 OUTPUT OUTPUT 3 INPUT INPUT

0 1 0 0 OUTPUT INPUT 4 OUTPUT OUTPUT

0 1 0 1 OUTPUT INPUT 5 OUTPUT INPUT

0 1 1 0 OUTPUT INPUT 6 INPUT OUTPUT

0 1 1 1 OUTPUT INPUT 7 INPUT INPUT

1 0 0 0 INPUT OUTPUT 8 OUTPUT OUTPUT

1 0 0 1 INPUT OUTPUT 9 OUTPUT INPUT

1 0 1 0 INPUT OUTPUT 10 INPUT OUTPUT

1 0 1 1 INPUT OUTPUT 11 INPUT INPUT

1 1 0 0 INPUT INPUT 12 OUTPUT OUTPUT

1 1 0 1 INPUT INPUT 13 OUTPUT INPUT

1 1 1 0 INPUT INPUT 14 INPUT OUTPUT

1 1 1 1 INPUT INPUT 15 INPUT INPUT

MODE 0 Configurations

231256–10

8

Page 137: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

MODE 0 Configurations (Continued)

231256–11

9

Page 138: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

MODE 0 Configurations (Continued)

231256–12

Operating Modes

MODE 1 (Strobed Input/Output). This functionalconfiguration provides a means for transferring I/Odata to or from a specified port in conjunction withstrobes or ‘‘handshaking’’ signals. In mode 1, Port Aand Port B use the lines on Port C to generate oraccept these ‘‘handshaking’’ signals.

Mode 1 Basic functional Definitions:

# Two Groups (Group A and Group B).

# Each group contains one 8-bit data port and one4-bit control/data port.

# The 8-bit data port can be either input or outputBoth inputs and outputs are latched.

# The 4-bit port is used for control and status of the8-bit data port.

10

Page 139: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Input Control Signal Definition

STB (Strobe Input). A ‘‘low’’ on this input loadsdata into the input latch.

IBF (Input Buffer Full F/F)

A ‘‘high’’ on this output indicates that the data hasbeen loaded into the input latch; in essence, an ac-knowledgement. IBF is set by STB input being lowand is reset by the rising edge of the RD input.

INTR (Interrupt Request)

A ‘‘high’’ on this output can be used to interrupt theCPU when an input device is requesting service.INTR is set by the STB is a ‘‘one’’, IBF is a ‘‘one’’and INTE is a ‘‘one’’. It is reset by the falling edge ofRD. This procedure allows an input device to re-quest service from the CPU by simply strobing itsdata into the port.

INTE A

Controlled by bit set/reset of PC4.

INTE B

Controlled by bit set/reset of PC2.

231256–13

Figure 8. MODE 1 Input

231256–14

Figure 9. MODE 1 (Strobed Input)

11

Page 140: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Output Control Signal Definition

OBF (Output Buffer Full F/F). The OBF output willgo ‘‘low’’ to indicate that the CPU has written dataout to the specified port. The OBF F/F will be set bythe rising edge of the WR input and reset by ACKInput being low.

ACK (Acknowledge Input). A ‘‘low’’ on this inputinforms the 82C55A that the data from Port A or PortB has been accepted. In essence, a response fromthe peripheral device indicating that it has receivedthe data output by the CPU.

INTR (Interrupt Request). A ‘‘high’’ on this outputcan be used to interrupt the CPU when an outputdevice has accepted data transmitted by the CPU.INTR is set when ACK is a ‘‘one’’, OBF is a ‘‘one’’and INTE is a ‘‘one’’. It is reset by the falling edge ofWR.

INTE A

Controlled by bit set/reset of PC6.

INTE B

Controlled by bit set/reset of PC2.231256–15

Figure 10. MODE 1 Output

231256–16

Figure 11. MODE 1 (Strobed Output)

12

Page 141: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Combinations of MODE 1

Port A and Port B can be individually defined as input or output in Mode 1 to support a wide variety of strobedI/O applications.

231256–17

Figure 12. Combinations of MODE 1

Operating Modes

MODE 2 (Strobed Bidirectional Bus I/O).Thisfunctional configuration provides a means for com-municating with a peripheral device or structure on asingle 8-bit bus for both transmitting and receivingdata (bidirectional bus I/O). ‘‘Handshaking’’ signalsare provided to maintain proper bus flow discipline ina similar manner to MODE 1. Interrupt generationand enable/disable functions are also available.

MODE 2 Basic Functional Definitions:

# Used in Group A only.

# One 8-bit, bi-directional bus port (Port A) and a 5-bit control port (Port C).

# Both inputs and outputs are latched.

# The 5-bit control port (Port C) is used for controland status for the 8-bit, bi-directional bus port(Port A).

Bidirectional Bus I/O Control Signal Definition

INTR (Interrupt Request). A high on this output canbe used to interrupt the CPU for input or output oper-ations.

Output Operations

OBF (Output Buffer Full). The OBF output will go‘‘low’’ to indicate that the CPU has written data outto port A.

ACK (Acknowledge). A ‘‘low’’ on this input enablesthe tri-state output buffer of Port A to send out thedata. Otherwise, the output buffer will be in the highimpedance state.

INTE 1 (The INTE Flip-Flop Associated withOBF). Controlled by bit set/reset of PC6.

Input Operations

STB (Strobe Input). A ‘‘low’’ on this input loadsdata into the input latch.

IBF (Input Buffer Full F/F). A ‘‘high’’ on this outputindicates that data has been loaded into the inputlatch.

INTE 2 (The INTE Flip-Flop Associated with IBF).Controlled by bit set/reset of PC4.

13

Page 142: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

231256–18

Figure 13. MODE Control Word231256–19

Figure 14. MODE 2

231256–20

Figure 15. MODE 2 (Bidirectional)

NOTE:Any sequence where WR occurs before ACK, and STB occurs before RD is permissible.(INTR e IBF # MASK # STB # RD a OBF # MASK # ACK # WR)

14

Page 143: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

231256–21

Figure 16. MODE (/4 Combinations

15

Page 144: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Mode Definition Summary

MODE 0 MODE 1 MODE 2

IN OUT IN OUT GROUP A ONLY

PA0 IN OUT IN OUT ÝPA1 IN OUT IN OUT ÝPA2 IN OUT IN OUT ÝPA3 IN OUT IN OUT ÝPA4 IN OUT IN OUT ÝPA5 IN OUT IN OUT ÝPA6 IN OUT IN OUT ÝPA7 IN OUT IN OUT ÝPB0 IN OUT IN OUT Ð

PB1 IN OUT IN OUT Ð

PB2 IN OUT IN OUT Ð

PB3 IN OUT IN OUT ÐMODE 0

PB4 IN OUT IN OUT ÐOR MODE 1

PB5 IN OUT IN OUT ÐONLY

PB6 IN OUT IN OUT Ð

PB7 IN OUT IN OUT Ð

PC0 IN OUT INTRB INTRB I/O

PC1 IN OUT IBFB OBFB I/O

PC2 IN OUT STBB ACKB I/O

PC3 IN OUT INTRA INTRA INTRA

PC4 IN OUT STBA I/O STBA

PC5 IN OUT IBFA I/O IBFA

PC6 IN OUT I/O ACKA ACKA

PC7 IN OUT I/O OBFA OBFA

Special Mode Combination Considerations

There are several combinations of modes possible.For any combination, some or all of the Port C linesare used for control or status. The remaining bits areeither inputs or outputs as defined by a ‘‘Set Mode’’command.

During a read of Port C, the state of all the Port Clines, except the ACK and STB lines, will be placedon the data bus. In place of the ACK and STB linestates, flag status will appear on the data bus in thePC2, PC4, and PC6 bit positions as illustrated byFigure 18.

Through a ‘‘Write Port C’’ command, only the Port Cpins programmed as outputs in a Mode 0 group canbe written. No other pins can be affected by a ‘‘WritePort C’’ command, nor can the interrupt enable flagsbe accessed. To write to any Port C output pro-grammed as an output in a Mode 1 group or to

change an interrupt enable flag, the ‘‘Set/Reset PortC Bit’’ command must be used.

With a ‘‘Set/Reset Port C Bit’’ command, any Port Cline programmed as an output (including INTR, IBFand OBF) can be written, or an interrupt enable flagcan be either set or reset. Port C lines programmedas inputs, including ACK and STB lines, associatedwith Port C are not affected by a ‘‘Set/Reset Port CBit’’ command. Writing to the corresponding Port Cbit positions of the ACK and STB lines with the‘‘Set/Reset Port C Bit’’ command will affect theGroup A and Group B interrupt enable flags, as illus-trated in Figure 18.

Current Drive Capability

Any output on Port A, B or C can sink or source 2.5mA. This feature allows the 82C55A to directly driveDarlington type drivers and high-voltage displaysthat require such sink or source current.

16

Page 145: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

Reading Port C Status

In Mode 0, Port C transfers data to or from the pe-ripheral device. When the 82C55A is programmed tofunction in Modes 1 or 2, Port C generates or ac-cepts ‘‘hand-shaking’’ signals with the peripheral de-vice. Reading the contents of Port C allows the pro-grammer to test or verify the ‘‘status’’ of each pe-ripheral device and change the program flow ac-cordingly.

There is no special instruction to read the status in-formation from Port C. A normal read operation ofPort C is executed to perform this function.

INPUT CONFIGURATION

D7 D6 D5 D4 D3 D2 D1 D0

I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB

GROUP A GROUP B

OUTPUT CONFIGURATIONS

D7 D6 D5 D4 D3 D2 D1 D0

OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB

GROUP A GROUP B

Figure 17a. MODE 1 Status Word Format

D7 D6 D5 D4 D3 D2 D1 D0

OBFA INTE1 IBFA INTE2 INTRA

GROUP A GROUP B

(Defined By Mode 0 or Mode 1 Selection)

Figure 17b. MODE 2 Status Word Format

Interrupt Enable Flag Position Alternate Port C Pin Signal (Mode)

INTE B PC2 ACKB (Output Mode 1) or STBB (Input Mode 1)

INTE A2 PC4 STBA (Input Mode 1 or Mode 2)

INTE A1 PC6 ACKA (Output Mode 1 or Mode 2

Figure 18. Interrupt Enable Flags in Modes 1 and 2

17

Page 146: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

ABSOLUTE MAXIMUM RATINGS*

Ambient Temperature Under BiasÀÀÀÀ0§C to a 70§CStorage Temperature ÀÀÀÀÀÀÀÀÀb 65§C to a 150§CSupply Voltage ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀb 0.5 to a 8.0V

Operating Voltage ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀa 4V to a 7V

Voltage on any InputÀÀÀÀÀÀÀÀÀÀGNDb2V to a 6.5V

Voltage on any Output ÀÀGNDb0.5V to VCC a 0.5V

Power Dissipation ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ1 Watt

NOTICE: This is a production data sheet. The specifi-cations are subject to change without notice.

*WARNING: Stressing the device beyond the ‘‘AbsoluteMaximum Ratings’’ may cause permanent damage.These are stress ratings only. Operation beyond the‘‘Operating Conditions’’ is not recommended and ex-tended exposure beyond the ‘‘Operating Conditions’’may affect device reliability.

D.C. CHARACTERISTICSTA e 0§C to 70§C, VCC e a5V g10%, GND e 0V (TA e b40§C to a85§C for Extended Temperture)

Symbol Parameter Min Max Units Test Conditions

VIL Input Low Voltage b0.5 0.8 V

VIH Input High Voltage 2.0 VCC V

VOL Output Low Voltage 0.4 V IOL e 2.5 mA

VOH Output High Voltage 3.0 V IOH e b2.5 mA

VCC b 0.4 V IOH e b100 mA

IIL Input Leakage Current g1 mA VIN e VCC to 0V

(Note 1)

IOFL Output Float Leakage Current g10 mA VIN e VCC to 0V

(Note 2)

IDAR Darlington Drive Current g2.5 (Note 4) mA Ports A, B, C

Rext e 500XVext e 1.7V

IPHL Port Hold Low Leakage Current a50 a300 mA VOUT e 1.0V

Port A only

IPHH Port Hold High Leakage Current b50 b300 mA VOUT e 3.0V

Ports A, B, C

IPHLO Port Hold Low Overdrive Current b350 mA VOUT e 0.8V

IPHHO Port Hold High Overdrive Current a350 mA VOUT e 3.0V

ICC VCC Supply Current 10 mA (Note 3)

ICCSB VCC Supply Current-Standby 10 mA VCC e 5.5V

VIN e VCC or GND

Port Conditions

If I/P e Open/High

O/P e Open Only

With Data Bus e

High/Low

CS e High

Reset e Low

Pure Inputs e

Low/High

NOTES:1. Pins A1, A0, CS, WR, RD, Reset.2. Data Bus; Ports B, C.3. Outputs open.4. Limit output current to 4.0 mA.

18

Page 147: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

CAPACITANCETA e 25§C, VCC eGND e 0V

Symbol Parameter Min Max Units Test Conditions

CIN Input Capacitance 10 pF Unmeasured plns

returned to GNDCI/O I/O Capacitance 20 pF

fc e 1 MHz(5)

NOTE:5. Sampled not 100% tested.

A.C. CHARACTERISTICSTA e 0§ to 70§C, VCC e a5V g10%, GND e 0V

TA e b40§C to a85§C for Extended Temperature

BUS PARAMETERS

READ CYCLE

Symbol Parameter82C55A-2

UnitsTest

Min MaxConditions

tAR Address Stable Before RDv 0 ns

tRA Address Hold Time After RDu 0 ns

tRR RD Pulse Width 150 ns

tRD Data Delay from RDv 120 ns

tDF RDu to Data Floating 10 75 ns

tRV Recovery Time between RD/WR 200 ns

WRITE CYCLE

Symbol Parameter82C55A-2

UnitsTest

Min MaxConditions

tAW Address Stable Before WRv 0 ns

tWA Address Hold Time After WRu 20 ns Ports A & B

20 ns Port C

tWW WR Pulse Width 100 ns

tDW Data Setup Time Before WRu 100 ns

tWD Data Hold Time After WRu 30 ns Ports A & B

30 ns Port C

19

Page 148: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

OTHER TIMINGS

Symbol Parameter82C55A-2 Units

TestMin Max

Conditions

tWB WR e 1 to Output 350 ns

tlR Peripheral Data Before RD 0 ns

tHR Peripheral Data After RD 0 ns

tAK ACK Pulse Width 200 ns

tST STB Pulse Width 100 ns

tPS Per. Data Before STB High 20 ns

tPH Per. Data After STB High 50 ns

tAD ACK e 0 to Output 175 ns

tKD ACK e 1 to Output Float 20 250 ns

tWOB WR e 1 to OBF e 0 150 ns

tAOB ACK e 0 to OBF e 1 150 ns

tSIB STB e 0 to IBF e 1 150 ns

tRIB RD e 1 to IBF e 0 150 ns

tRIT RD e 0 to INTR e 0 200 ns

tSIT STB e 1 to INTR e 1 150 ns

tAIT ACK e 1 to INTR e 1 150 ns

tWIT WR e 0 to INTR e 0 200 ns see note 1

tRES Reset Pulse Width 500 ns see note 2

NOTE:1. INTRu may occur as early as WRv.2. Pulse width of initial Reset pulse after power on must be at least 50 mSec. Subsequent Reset pulses may be 500 nsminimum. The output Ports A, B, or C may glitch low during the reset pulse but all port pins will be held at a logic ‘‘one’’ levelafter the reset pulse.

20

Page 149: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

WAVEFORMS

MODE 0 (BASIC INPUT)

231256–22

MODE 0 (BASIC OUTPUT)

231256–23

21

Page 150: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

WAVEFORMS (Continued)

MODE 1 (STROBED INPUT)

231256–24

MODE 1 (STROBED OUTPUT)

231256–25

22

Page 151: COURS ET TRAVAUX PRATIQUES de MICROPROCESSEUR

82C55A

WAVEFORMS (Continued)

MODE 2 (BIDIRECTIONAL)

231256–26

Note:Any sequence where WR occurs before ACK AND STB occurs before RD is permissible.(INTR e IBF # MASK # STB # RD a OBF # MASK # ACK # WR)

WRITE TIMING

231256–27

READ TIMING

231256–28

A.C. TESTING INPUT, OUTPUT WAVEFORM

231256–29

A.C. Testing Inputs Are Driven At 2.4V For A Logic 1 And 0.45VFor A Logic 0 Timing Measurements Are Made At 2.0V For ALogic 1 And 0.8 For A Logic 0.

A.C. TESTING LOAD CIRCUIT

231256–30

*VEXT Is Set At Various Voltages During Testing To GuaranteeThe Specification. CL Includes Jig Capacitance.

23