Vous êtes sur la page 1sur 121

Le Micro-contrôleur 8051

Jelassi Khaled Microcontrôleur 1


Plan Général


Organisation Générale

Compteurs/Timers

Structure Générale de la

Interface Série
mémoire 
Les interruptions

Mémoire Programme 
Norme RS232

Mémoire de Données Externe 
Présentation carte XEVA

Jeu d'instructions 
Exemples

Organisation matérielle

Ports d'Entrées/Sorties

Jelassi Khaled Microcontrôleur 2


Organisation Générale

Schéma Bloc

Jelassi Khaled Microcontrôleur 3


Structure Générale de la mémoire

Cartographie


On appelle cartographie mémoire ou
memory mapping l'organisation
géographique de la mémoire

Jelassi Khaled Microcontrôleur 4


Structure Générale de la mémoire

Accès aux données


Espaces adressables
différents pour le
programme et les
données

Jelassi Khaled Microcontrôleur 5


Structure Générale de la mémoire

Accès aux données


Cela permet un accès
aux données en 8 bits
plus rapide

Cependant, des
adresses d’accès 16
bits aux données
peuvent être générés
grâce au registre DPTR

Jelassi Khaled Microcontrôleur 6


Structure Générale de la mémoire

Mémoire Programme


Elle constituée de ROM ou d’EPROM

Taille maximale : 64kOctets

Sur le 80C51 : les 4kOctets sont sur le chip

En version romless toute la mémoire est
externe dans ce cas, le signal de validation de
la mémoire s’appelle PSEN (Program Store
Enable)

Jelassi Khaled Microcontrôleur 7


Structure Générale de la mémoire

Mémoire de Données

Les RAM, interne et externe, occupent des
espaces différents de la mémoire programme

Les 128 octets inférieurs (80C51) de RAM
interne, sont sur le chip

Jusqu’à 64kOctets de RAM externe peuvent
être adressés

Le CPU génère les signaux de lecture (RD) et
d’écriture (WR) pour la gestion de la mémoire
externe

Jelassi Khaled Microcontrôleur 8


Structure Générale de la mémoire

Particularité pour les


! systèmes de développement


Sous certaines conditions, la RAM externe
(mémoire de données externe) et la ROM
externe (mémoire de programme externe)
peuvent être combinées en appliquant RD et
PSEN sur les entrées d'une fonction ET et en
reliant sa sortie à l'entrée de lecture des
mémoires RAM et ROM externes.

Jelassi Khaled Microcontrôleur 9


Structure de la Mémoire Programme

Vecteurs d'interruptions


Après un RESET, le 80C51 commence son
exécution à l'adresse 0000h

Chaque interruption possède un emplacement
fixe dans la mémoire programme

Une interruption provoque un saut à cet
emplacement qui contient une routine de
service d'interruption

Par exemple, l'interruption externe 0 est
assignée à l'adresse 0003h
Jelassi Khaled Microcontrôleur 10
Structure de la Mémoire Programme

Vecteurs d'interruptions

Chaque emplacement
possède une taille de 8
octets.

Si le programme est
suffisamment court, il
peut être contenu
entièrement dans cette
zone.

Sinon, une instruction de
saut sera utilisée
Jelassi Khaled Microcontrôleur 11
Structure de la Mémoire Programme

ROM interne et ROM externe



Les 4kOctets inférieurs de la mémoire
programme sont soit sur le chip soit à l'extérieur.

Une sélection est faite en plaçant l'entrée EA
(External Acces) à 1 (Vcc) ou à 0 (GND).

Si EA = Vcc, la ROM interne est utilisée pour
les adresses allant de 0000h à 0FFFh. Les
versions sans ROM doivent avoir cette broche à 0

La sortie PSEN n'est active que pour la lecture
de ROM externe (et non interne)
Jelassi Khaled Microcontrôleur 12
Structure de la Mémoire Programme

ROM externe

16 lignes d'entrées/sorties (Ports 0 et 2) sont
utilisées pour les fonctions de bus :

P0 : bus multiplexé données/adresses poids
faibles

le signal ALE (Adress Latch Enable) est à 1
pendant que P0 contient les poids faibles
d'une adresse

P2 : poids forts de l'adresse

Jelassi Khaled Microcontrôleur 13


Structure de la Mémoire Programme

ROM externe

Les adresses en mémoire programme sont
toujours de 16 bits même lorsqu'on utilise
moins de 64kOctets.

L'utilisation de
ROM externe
sacrifie 2 ports
de 8 bits aux
fonctions
d'adressage

Jelassi Khaled Microcontrôleur 14


Structure de la Mémoire de Données Externe

RAM externe

Le CPU génère RD et WR

Le bus d'adresses, pour l'accès aux données peut
être de 1 ou 2 octets :

On peut utiliser un adressage sur 1 octet
avec une ou plusieurs lignes d'E/S pour
paginer la RAM

2 octets d'adresses peuvent être utilisés.
Dans ce cas les poids forts sont sur P2

Jelassi Khaled Microcontrôleur 15


15
Structure de la Mémoire de Données Externe

RAM externe

Jelassi Khaled Microcontrôleur 16


Structure de la Mémoire de Données Interne

L'espace mémoire interne est divisé en 3 blocs



128 octets inférieurs, 128 octets supérieurs et espace SFR

Les adresses de la
RAM interne sont
toujours d'un octet
 espace adressable
de 256 octets


Cependant, il y a en réalité 256 + 128 octets

Jelassi Khaled Microcontrôleur 17


Structure de la Mémoire de Données Interne

Adressage en
RAM interne : mode direct
uniquement

Une adresse dite
"directe" supérieure à
7Fh permet d'accéder à
un espace mémoire

Une adresse dite
"indirecte" supérieur à
7Fh permet d'accéder à
un autre espace mémoire
 Adressage en Adressage en
mode direct mode indirect
ou indirect. uniquement
Jelassi Khaled Microcontrôleur 18
Structure de la Mémoire de Données Interne

Les 128 octets inférieurs



Les 32 octets inférieurs sont
groupés en 4 banques de 8
registres appelés R0 à R7. Les
bits RS0 et RS1 du PSW fixent
la banque

Les 16 octets suivants
contiennent un bloc d'espace
mémoire adressable par bit.

Le jeu d'instruction du 80C51


comporte de nombreuses instructions
dites "single-bit" et les 128 bits de
cette zone (16*8) sont adressables directement par ces instructions à
des adresses allant de 00h à 7Fh
Jelassi Khaled Microcontrôleur 19
Structure de la Mémoire de Données Interne

SFR : Special Function Register



Cette zone comporte :

les verrous des ports d'E/S

les timers

les contrôleurs de périphériques

etc.

Zone adressable uniquement en mode
direct

16 emplacements adressables par
bit : ce sont ceux dont les adresses se
terminent par 0h ou 8h

Jelassi Khaled Microcontrôleur 20


Structure de la Mémoire de Données Interne

PSW : Program Status Word



Contient différents bits de statut reflétant l'état
du CPU

Il réside en mémoire SFR et contient :

CY : bit de retenue. Utilisé dans les fonctions
arithmétiques comme retenue et dans
certaines fonctions booléennes comme 9ème bit
d'accumulateur

AC : retenue auxiliaire utilisée dans les
opérations en BCD

Jelassi Khaled Microcontrôleur 21


Structure de la Mémoire de Données Interne

PSW : Program Status Word



Il contient également :

RS0 et RS1 : bits de sélection des banques
de registres

OV : indicateur de dépassement

P : indicateur de parité. Il reflète la parité du
nombre de 1 de l'accumulateur. Lorsque P =
1, il s'agit d'un nombre impair de 1

F0 : bit laissé libre au programmeur

Jelassi Khaled Microcontrôleur 22


Le Jeu d'Instruction

Modes d'adressage

Adressage direct :

L'opérande est spécifié par un champ
d'adresse exprimé sur 8 bits dans l'instruction

Seules la RAM interne et la mémoire SFR
peuvent être adressées ainsi

Par exemple :
mov A,26h 25h : 12
: A = (26h)
add A,25h : A = A + (25h)26h : 64
mov 27h,A : (27h) = 27h
A : ?

Jelassi Khaled Microcontrôleur 23


Le Jeu d'Instruction

Modes d'adressage

Adressage Indirect :

Dans ce mode, l'instruction spécifie un registre qui
contient l'adresse de l'opérande.

Les RAM internes et externes peuvent être
adressées ainsi. Par exemple :
mov R1,#25h : R1 = 25h
mov A,@R1 : A = (@R1)
inc R1 : R1 = R1 + 1
add A,@R1 : A = A + (@R1) 25h : 12
inc R1 : R1 = R1 + 1 26h : 64
mov @R1,A : (@R1) = A
27h : ?

Jelassi Khaled Microcontrôleur 24


Le Jeu d'Instruction

Registres d'adresses


Les registres d'adresses, pour l'adressage au
format 8 bits, peuvent être R0 ou R1 de la
banque sélectionnée ou le pointeur de pile SP

Pour l'adressage 16 bits, seul le registre DPTR
est employé

Jelassi Khaled Microcontrôleur 25


Le Jeu d'Instruction

Instructions de registres


Les instructions utilisant les registres R0 à R7
comportent, dans leur code opératoire, 3 bits
désignant le numéro du registre.

Elles sont donc plus compactes que celles
utilisant un adressage direct nécessitant un
octet supplémentaire

Jelassi Khaled Microcontrôleur 26


Le Jeu d'Instruction

Adressage indexé

On ne peut atteindre que la mémoire
programme avec ce type d'adressage.

Il est destiné à la lecture de tables

un registre 16 bits (DPTR ou PC) pointe
la base (le début) de la table et
l'accumulateur contient l'indice dans cette
table

Jelassi Khaled Microcontrôleur 27


Le Jeu d'Instruction

Adressage indexé

L'adresse dans la table est donc
constituée de l'addition de l'accumulateur
au pointeur

Un autre type d'adressage indexé est
utilisé dans le cas du saut : la
destination est calculée à partir de la
somme du pointeur et de
l'accumulateur.
Jelassi Khaled Microcontrôleur 28
Le Jeu d'Instruction

Adressage immédiat

L'opérande est ici une constante.

Par exemple :
mov A,#100 : A = 100
add A,#25h : A = A + 25h
anl A,#10110110b : A = A &
10110110b

Jelassi Khaled Microcontrôleur 29


Le Jeu d'Instruction

Instructions Arithmétiques

Les durées correspondent à


une horloge à 12Mhz
Jelassi Khaled Microcontrôleur 30
Le Jeu d'Instruction

Instructions Arithmétiques

La mémoire RAM interne peut être incrémentée
sans passer par l'accumulateur

L'instruction d'incrément inc peut s'appliquer
au registre 16 bits DPTR

L'instruction mul AB multiplie A par B, le résultat
de 16 bits est contenu dans B:A

L'instruction div AB divise A par B, le quotient
est dans A et le reste dans B

L'instruction da A ajuste le résultat d'opération
en code BCD (ce n'est pas une conversion)
Jelassi Khaled Microcontrôleur 31
Le Jeu d'Instruction

Instructions Arithmétiques : exemples

add A,#127 : A = A + 127


add A,7FH : A = A + (7Fh)
add A,R7 : A = A + R7
add A,@R0 : A = A + (@R0)

Jelassi Khaled Microcontrôleur 32


Le Jeu d'Instruction

Instructions Logiques

Jelassi Khaled Microcontrôleur 33


Le Jeu d'Instruction

Instructions Logiques

Les opérations combinatoires (AND, OR, XOR
et NOT) sont effectuées bit-à-bit

Les opérations peuvent être appliquées à
n'importe quel octet de RAM interne sans
passer par l'accumulateur ce qui est important
pour la commande des ports d'E/S

De plus, lors d'interruptions, cela économise
la sauvegarde de A sur la pile

Jelassi Khaled Microcontrôleur 34


Le Jeu d'Instruction

Instructions Logiques : exemples


mov
 A,#45h : A = 45h A = 0100 0101
anl A,#0EBh & EBh = 1110 1011
: A = A & EBh
= 0100 0001

mov A,#7DH : A = 7Dh A = 0111 1101


xrl A,#0F0h  0F0h = 1111 0000
: A = A  F0h
= 1000 1111

Jelassi Khaled Microcontrôleur 35


Le Jeu d'Instruction

Instructions Logiques

Rotations

Droite

Droite avec CY
CY

Gauche

Gauche avec CY
CY

Echange poids forts/ports faibles de A
Jelassi Khaled Microcontrôleur 36
Le Jeu d'Instruction

Instructions Logiques : exemples


mov
 A,#45h : A = 45h
swap A : A = 54h

mov A,#7DH : A = 7Dh = 0111 1100b


rl A : A = F8h = 1111 1000b
rl A : A = F1h = 1111 0001b

Jelassi Khaled Microcontrôleur 37


Le Jeu d'Instruction

Instructions Logiques : exemples

Application

à la conversion en BCD d’un nombre
 inférieur à 100 contenu dans A

mov A,#16 : A = 16
mov B,#10 : B = 10
div AB : A/B  A = 1, B = 6
swap A : A = 10h
add A,B : A = A + B = 16h

Jelassi Khaled Microcontrôleur 38


Le Jeu d'Instruction

Transferts de données en RAM interne

Jelassi Khaled Microcontrôleur 39


Le Jeu d'Instruction

Transferts de données

L ’opération mov <dest>,<src> permet
d ’effectuer un transfert sans passer par
l ’accumulateur

Adressage direct avec la pile :

push : incrémente SP puis copie un octet
sur la pile

pop : prend un octet sur la pile puis
décrément la pile

Jelassi Khaled Microcontrôleur 40


Le Jeu d'Instruction

Transferts de données

La pile est adressée par rapport à SP : c’est
de l’indirect  les 128 octets supérieurs,
! lorsqu’ils existent, sont accessibles

Lorsque la limite de la RAM interne est
dépassée, les valeurs « pushées » sont
perdues et les valeurs « popées » sont
indéterminées.

Jelassi Khaled Microcontrôleur 41


Le Jeu d'Instruction

Transferts de données

Il existe une opération au format 16 bits pour
l’initialisation du DPTR

L’instruction XCH A,<byte> échange les
contenus de A et de l’octet adressé

XCHD est similaire mais n’échange que les
quartets de poids faibles

Jelassi Khaled Microcontrôleur 42


Le Jeu d'Instruction

Transferts de données : exemples

Décalage d'un nombre BCD de 2 digits vers la droite


Jelassi Khaled Microcontrôleur 43
Le Jeu d'Instruction

Transferts de données en RAM externe


Seul l'adressage indirect est utilisé avec :

soit 1 octet d'adresse : @R0 ou @R1

soit 2 octets d'adresse : @DPTR

Dans le cas de 2 octets : monopolisation du port 2 ce
qui n'est pas indispensable lorsque la RAM externe est petite

Jelassi Khaled Microcontrôleur 44


Le Jeu d'Instruction

Transferts de données en ROM


Utilisation en lecture seule

Le signal PSEN est activé et utilisé comme signal
de lecture

movc A,@A+DPTR : charge dans le contenu de
l'adresse A+DPTR

Jelassi Khaled Microcontrôleur 45


Le Jeu d'Instruction

Transferts de données en ROM : exemple


mov A,debut_table
call table

Doit être > 0
table:
movc A,@A+PC
ret
• La table est placée après l'instruction RET
• Sa taille est de 255 octets au maximum
Lecture d'une table
Jelassi Khaled Microcontrôleur 46
46
Le Jeu d'Instruction

Instructions Booléennes

Jelassi Khaled Microcontrôleur 47


Le Jeu d'Instruction

Instructions Booléennes

Traitement d'un bit à la fois

Zone de 128 bits en RAM interne et
registres adressables par bit en zone SFR.

Tous les ports sont adressables par bit

Types d'instructions :

5 fonctions combinatoires : ET, OU,
forçages à 0 et à 1, complément à 1

Transfert de bit

Test de bits simple ou avec RAZ
Jelassi Khaled Microcontrôleur 48
Le Jeu d'Instruction

Instructions Booléennes : exemples


un bit adressable dans
mov C,flag la zone SFR
mov P1.0,C
Forçage d'un bit de port

mov C,bit1 bit1 bit2 C


jnb bit2,suite
cpl C
suite: …

Réalisation d'un OU Exclusif


Jelassi Khaled Microcontrôleur 49
Le Jeu d'Instruction

Instructions Booléennes : sauts relatifs


La destination du saut n'est pas une adresse
mais un déplacement (offset) signé.

Exprimé sur 1 octet, il est donc compris entre
-128 et +127

Jelassi Khaled Microcontrôleur 50


Le Jeu d'Instruction

Instructions de sauts
Existe sous 3 formes :
• SJMP,
• LJMP,
• AJMP

Existe sous 2 formes :


• LCALL,
• ACALL
Jelassi Khaled Microcontrôleur 51
Le Jeu d'Instruction

Instructions de sauts

SJMP : saut relatif. Le déplacement est
compris entre -128 et +127

LJMP : saut absolu. Un adresse sur 16 bit est
spécifiée

AJMP : saut absolu dans le bloc courant. La
taille d'un bloc est de 2kOctets. L'adresse est
codée sur 11 bits (211 = 2k) et constitue les
poids faibles de l'adresse 16 bits à atteindre

JMP @A+DPTR : saut dont l'adresse est la
somme de A et DPTR
Jelassi Khaled Microcontrôleur 52
Le Jeu d'Instruction
DPTR contient
l'adresse de
Instructions de sauts la table

Équivalent
à x2
Compris ici
entre 0 et 4

Chaque ajmp
est codé sur
2 octets
Jelassi Khaled Microcontrôleur 53
Le Jeu d'Instruction

Instructions de sauts : sous-programmes



LCALL : adresse absolue sur 16 bits

ACALL : adresse sur 11 bits

La seule différence entre RET et RETI est que la
seconde indique au 8051 que le traitement de
l'interruption est terminé.

Jelassi Khaled Microcontrôleur 54


Le Jeu d'Instruction

Instructions de sauts relatifs


Tous les sauts utilisent un déplacement
compris entre -128 et +127

Bien qu'il n'existe pas de flag zéro, les
instructions JZ et JNZ comparent A à zéro

Jelassi Khaled Microcontrôleur 55


Le Jeu d'Instruction

Instructions de sauts relatifs



DJNZ : permet de réaliser une boucle de N
passages :

Jelassi Khaled Microcontrôleur 56


Le Jeu d'Instruction

Instructions de sauts relatifs : exemples

Décalage d'un nombre BCD de 1 digit vers la droite


Jelassi Khaled Microcontrôleur 57
Organisation matérielle du 80C51

Jelassi Khaled Microcontrôleur 58


Organisation matérielle

Registres à fonctions spéciales (SFR)



Les adresses non-utilisées n'existent pas physiquement.

Accumulateur :

"A" lorsqu'il est
utilisé de manière
spécifique dans les
instructions (DA A).

On peut également
l'adresser en mode
direct en utilisant le
nom de variable
"ACC"
Jelassi Khaled Microcontrôleur 59
Organisation matérielle

Registres à fonctions spéciales (SFR)



Registre B : utilisé uniquement dans les instructions de division et de multiplication

PSW : Registre d'état


SP : pointeur de
pile (valeur initiale :
07h)

DPTR : registre
pointeur de 16 bits
(DPH et DPL)
Jelassi Khaled Microcontrôleur 60
Organisation matérielle

Registres à fonctions spéciales (SFR)



P0 à P3 sont les verrous (latches) correspondants
aux ports 0 à 3 (8 bits chacun)

Port en sortie : l'écriture dans le verrou d'un 1
ou d'un 0 place le port correspondant dans le
même état

Port en entrée : la valeur externe appliquée au
port est lue dans le verrou

Jelassi Khaled Microcontrôleur 61


Organisation matérielle

Registres à fonctions spéciales (SFR)



Port série : deux registres séparés permettent
l'émission (transmit buffer) et la réception
(receive buffer).

SBUF :

l'écriture dans ce registre transmet la valeur au
buffer d'émission qui est alors prêt à l'envoi

la lecture de ce registre réalise la lecture du
buffer de réception

Jelassi Khaled Microcontrôleur 62


Organisation matérielle

Registres à fonctions spéciales (SFR)



THL0/TL0 et THL/TL1 : paires de registres
8 bits constituant les registres 16 bits des
compteurs/timers 0 et 1.

IP, IE, TMOD, TCON, SCON, PCON :
Registres de contrôle et d'état pour les
interruptions, les compteurs/timers et le port
série.

Jelassi Khaled Microcontrôleur 63


Cycles Machine


Un cycle machine = 6 états nommés S1 à S6

Durée d'un état : deux impulsions d'horloge
 un cycle machine = 12 impulsions d'horloge

Jelassi Khaled Microcontrôleur 64


Cycles Machine


En principe deux états de recherche (read) sont
générés par cycle même si le second n'est pas
nécessaire

Jelassi Khaled Microcontrôleur 65


Ports d'Entrées/Sorties

Structure

4 ports bidirectionnels constitués chacun :

d'un verrou (latch)

d'un driver de sortie

d'un driver d'entrée

Les drivers de sortie des ports 0 et 2 et le driver d'entrée
du port 0 sont également utilisés pour la gestion de la
mémoire externe. Dans ce cas, les poids faibles de
l'adresse externe sont placés sur le port 0 et
multiplexés temporellement avec l'octet de données. Le
port 2 est utilisé pour les poids forts d'adresses 16 bits

Jelassi Khaled Microcontrôleur 66


Ports d'Entrées/Sorties

Structure

Chaque bit du port 3, outre l'utilisation normale de port d'E/S, possède une
autre fonction :

Jelassi Khaled Microcontrôleur 67


Ports d'Entrées/Sorties

Inactif en Borne du
Configurations des E/S mode port port
Verrou
correspondant au
registre SFR

Bus interne

Validation
de l'écriture Commutation entre mode port
(signal interne) et mode bus

En lecture, la valeur issue


de l'entrée est placée sur le
bus interne
Jelassi Khaled Microcontrôleur 68
Ports d'Entrées/Sorties

Configurations des E/S Borne du port


Verrou
correspondant au
registre SFR

Bus interne

Validation
de l'écriture
(signal interne) Multiplexage des adresses
et des données
En lecture, la valeur issue
de l'entrée est placée sur le bus interne
Jelassi Khaled Microcontrôleur 69
Ports d'Entrées/Sorties

Configurations des E/S



Les ports 1, 2 et 3 possèdent des résistances de
rappel alors que le port 0 est de type drain ouvert

Chaque ligne peut être placée en entrée ou en
sortie indépendamment des autres

Pour que le bit de port soit utilisé en entrée, un 1
doit être placé dans le latch qui bloque alors le
transistor FET de sortie.

Dans ce cas, la borne est placé au niveau 1 par la
résistance de rappel et peut être forcée à 0 par
le signal externe
Jelassi Khaled Microcontrôleur 70
Ports d'Entrées/Sorties

Configurations des E/S



Le FET de polarisation à +Vcc du port 0 n'est pas
actif pendant le fonctionnement normal du port

L'écriture d'un 1 bloque le second FET : le port 0
est alors en haute-impédance

P1, P2 et P3, lorsqu'ils sont placés en entrées, sont
polarisés au niveau logique 1 alors que P0 est
flottant.

Après un RESET, un 1 est écrit dans tous les
latches de port ce qui signifie qu'ils sont placés en
entrée.
Jelassi Khaled Microcontrôleur 71
Ports d'Entrées/Sorties

Configurations des E/S


Verrou
correspondant au Borne du port
registre SFR

Bus interne

Validation
de l'écriture
(signal interne)
En lecture, la valeur issue
de l'entrée est placée sur le
bus interne
Jelassi Khaled Microcontrôleur 72
Le Micro-contrôleur 8051
Ports d'Entrées/Sorties

Configurations des E/S Borne du port


Verrou
correspondant au
registre SFR

Bus interne

Fonctions
Validation alternatives :
de l'écriture la sortie du latch
(signal interne) doit être à 1

En lecture, la valeur issue de l'entrée


est placée sur le bus interne

Jelassi Khaled Microcontrôleur 73


73
Ports d'Entrées/Sorties

Ecriture dans un port



L'écriture dans un port n'est effective qu'après
l'état 1 du cycle machine suivant.

Charges TTL LS :

4 pour les ports 1, 2 et 3

8 pour le port 0

Jelassi Khaled Microcontrôleur 74


Ports d'Entrées/Sorties

Lecture d'un port



Parmi les instructions qui lisent la valeur d'un port,
certaines lisent directement l'état de la broche alors que
d'autres lisent le contenu du latch.


Ces dernières sont
également celles qui
peuvent modifier la
valeur lue et ré-
écrire dans le latch

Instructions "Read-Modify-Write"
Jelassi Khaled Microcontrôleur 75
Compteurs/Timers


Deux compteurs/timers 16 bits : Timer 0 et Timer 1

Mode Timer : le registre interne est incrémenté à chaque cycle machine donc à
1/12 de la fréquence de l'oscillateur

Mode compteur : le registre est incrémenté à chaque transition négative sur son
entrée (T0 ou T1). La transition est prise en compte pendant l'état S5 du cycle machine. La valeur apparaît dans le
registre pendant l'état S3 du cycle suivant. Puisqu'il faut 2 cycles machine pour prendre en compte une transition, cela
signifie que la fréquence de travail maximale du compteur est 1/24 de la fréquence de l'oscillateur

Jelassi Khaled Microcontrôleur 76


Compteurs/Timers

Jelassi Khaled Microcontrôleur 77


Compteurs/Timers

Jelassi Khaled Microcontrôleur 78


Compteurs/Timers

Modes
TMOD


Fonctionnement en compteur ou en timer :
précisé par le bit C/T du registre TMOD

4 modes de fonctionnement : M0/M1

Les modes 0, 1 et 2 sont identiques pour les
deux compteurs/timers. Seul le mode 3
diffère.

Jelassi Khaled Microcontrôleur 79


Compteurs/Timers

Mode 0*
TCON


Compteur 8 bit + pré-diviseur par 32

Le registre timer fonctionne sur 13 bits

Le passage de la valeur maximale à 0 place le
flag d'interruption TF1 (TF0) à 1

L'entrée de comptage est validée pour TR1
(TR0) à 1 et GATE = 0 ou INT1 = 1
*
: ce mode existe pour assurer une compatibilité avec le timer du 8048,
ancêtre du 8051
Jelassi Khaled Microcontrôleur 80
Compteurs/Timers

Mode 0
TCON

13 bits de comptage :

TH1 sur 8bits

TL1 sur les 5 bits de poids faibles. Les 3 bits de poids forts sont
ignorés

Le lancement du comptage par TR1 n'efface pas les registres TH1
et TL1

Jelassi Khaled Microcontrôleur 81


Compteurs/Timers

Mode 0

Jelassi Khaled Microcontrôleur 82


Compteurs/Timers

Mode 1
TCON

Idem mode 0 mais sur 16 bits au lieu de 13.

Mode 2

Compteur 8 bits (TL1) avec rechargement
automatique en fin de décomptage

C'est la valeur contenu dans TH1 qui est
recopiée dans TL1

Jelassi Khaled Microcontrôleur 83


Compteurs/Timers

Mode 2

Jelassi Khaled Microcontrôleur 84


Compteurs/Timers

Mode 3 : Compteur/Timer 1

à l'arrêt (la valeur contenu dans TH1/TL1 est
maintenue
Mode 3 : Compteur/Timer 0

TH0 et TL0 sont deux compteurs distincts.

TH0 : Timer 8 bits. Il utilise TR1 et TF1 du
timer 1

TL0 : compteur ou timer 8 bits.
Jelassi Khaled Microcontrôleur 85
Compteurs/Timers

Mode 3

Jelassi Khaled Microcontrôleur 86


Interface Série


"Full duplex" : émission et réception sont
simultanées

Registre SFR pour l'émission et la réception : SBUF

Registre SFR pour la configuration : SCON

4 modes de fonctionnement

RxD : réception, P3.0

TxD : émission, P3.1

Jelassi Khaled Microcontrôleur 87


Interface Série

Jelassi Khaled Microcontrôleur 88


Interface Série

Jelassi Khaled Microcontrôleur 89


Interface Série

Mode 0

Les données entrent et sortent par RxD.

L'horloge série est sortie sur TxD.

Le format est de 8 bits

La vitesse en Bauds est de 1/12 de la fréquence
d'horloge du 8051

Il s'agit d'un mode de fonctionnement synchrone

Jelassi Khaled Microcontrôleur 90


Interface Série

Mode 0

Jelassi Khaled Microcontrôleur 91


91
Interface Série

Mode 1

Données sur 8 bits encadrées d'un bit de START et
un bit de STOP

Fréquence : fixée par le timer 1

Emission sur TxD et réception sur RxD

Le bit de poids le plus faible est transmis en
premier.

A la réception, le bit stop va vers le flag RB8
(SCON)

Jelassi Khaled Microcontrôleur 92


Interface Série

Mode 1

Le timer 1 est utilisé en mode 2 : ainsi il n'est pas
nécessaire de le recharger

Vitesse de transfert :
SMOD
2 Fosc
Débit  *
32 12 * (256  TH 1)

Exemple : 9600 Bauds avec un quartz de 12Mhz
et SMOD = 0 2 SMOD * Fosc
 TH 1  256   FDh
32 *12 * Débit
Jelassi Khaled Microcontrôleur 93
Interface Série

Vitesses de transfert

Jelassi Khaled Microcontrôleur 94


Interface Série

Mode 1

Jelassi Khaled Microcontrôleur 95


Interface Série

Mode 2

Données sur 11 bits : 1 start, 8 données, 1 bit au
choix (parité le plus souvent), 1 stop

Le 9ème bit de données est TB8 à l'émission et RB8 à
la réception

L'émission est déclenchée par l'écriture dans
SBUF

La réception est déclenchée par lorsqu'apparaît
un bit start à condition que REN = 1

Vitesse de transmission de 1/32 ou 1/64 de la
fréquence de l'oscillateur du 8051 : SMOD
Jelassi Khaled Microcontrôleur 96
Interface Série

Mode 2

Jelassi Khaled Microcontrôleur 97


Interface Série

Mode 3


Identique au mode 2 sauf en ce qui concerne la
vitesse de transfert qui est réglable comme en
mode 1

Jelassi Khaled Microcontrôleur 98


Interface Série

Mode 3

Jelassi Khaled Microcontrôleur 99


Les interruptions

Activation sur état


5 sources d'interruptions

Activation sur front


Interruptions
Externes

Interruptions
Timers

Interruptions
Série
Jelassi Khaled Microcontrôleur 100
Les interruptions

Activation des interruptions



Les sources d'interruptions externes INT0 et INT1
peuvent être activées sur état ou sur front

Les bits IT0 et IT1 de TCON sélectionnent le type
d'activation

Les bits IE0 et IE1 de TCON sont positionnés à 1
lorsqu'une demande d'interruption arrive respectivement
sur INT0 et INT1

Ces bits sont positionnés à 0 par le service de
traitement de l'interruption lorsque l'activation est
le front

Jelassi Khaled Microcontrôleur 101


Les interruptions

Interruptions Timers


Les timers 0 et 1 positionnent à 1 les bits TF0 et
TF1 de TCON lorsque que leur contenu passe de
111…11 à 000…00

Ces bits sont ensuite positionnés à 0 par le
service de traitement de l'interruption

Jelassi Khaled Microcontrôleur 102


Les interruptions

Interruption Série


L'interruption est générée par un OU logique entre
RI et TI du registre SCON

RI et TI sont positionnés par la réception ou
l'émission d'une donnée

Ces deux bits ne sont pas remis à 0 par le
service d'interruption

Jelassi Khaled Microcontrôleur 103


Les interruptions

Validation des Interruptions


Tous les bits d'interruptions peuvent être
positionnés (à 1 ou à 0) par programme ce qui
permet de générer ou de suspendre une
demande d'interruption

Chaque source d'interruption peut être autorisée
ou interdite individuellement grâce au registre
IE.

L'ensemble des sources d'interruptions peuvent
être interdites par le bit EA de IE
Jelassi Khaled Microcontrôleur 104
Les interruptions

Validation des Interruptions

Jelassi Khaled Microcontrôleur 105


Les interruptions

Priorité des Interruptions



Deux niveaux de priorité peuvent être choisis
pour chaque source d'interruption

Si deux demandes d'interruptions apparaissent
en même temps, c'est la priorité la plus haute qui
sera traitée

Si les deux demandes
ont même priorité,
alors une priorité
interne est utilisée

Jelassi Khaled Microcontrôleur 106


Les interruptions

Priorité des Interruptions

Jelassi Khaled Microcontrôleur 107


Les interruptions

Priorité des Interruptions


Le niveau de priorité interne n'est utilisé que
pour le cas de demandes simultanées

Les demandes d'interruptions sont prises en
compte pendant l'état S5 du cycle machine.

Jelassi Khaled Microcontrôleur 108


Les interruptions

Réponse à une interruption



Lorsqu'une interruption est prise en compte,
c'est l'équivalent d'une instruction LCALL qui est
générée sauf si:

une interruption de priorité égale ou
supérieure est en cours

L'instruction en cours est RETI ou une écriture
dans IE ou IP

Le sous-programme doit se terminer par RETI

Une instruction en cours se termine avant l'appel
de la routine de traitement
Jelassi Khaled Microcontrôleur 109
Les interruptions

Vectorisation des Interruption



Les adresses des routines de traitement
d'interruptions sont fixées :

Jelassi Khaled Microcontrôleur 110


Les interruptions

Cas du RESET

RST : borne d'entrée

Les registres sont initialisés

La RAM interne n'est pas
effacée

Le programme démarre à
l'adresse 0000h

Jelassi Khaled Microcontrôleur 111


Norme RS232

Valeurs des tensions


0 logique : tension allant de +8 à +40V

1 logique : tension allant de -8 à -40V

Signaux généralement compris entre -12 et +
12V

Liaison série au repos : on observe un 1
logique. Ceci permet de distinguer l'état de hors
tension du récepteur de son état d'attente de
réception.

Jelassi Khaled Microcontrôleur 112


Norme RS232

Format

Asynchrone : données envoyées de l'émetteur vers
le récepteur sans négociation préalable. C'est au
récepteur de se synchroniser sur l'émetteur.

L'émetteur doit envoyer :

un bit de START

ses données(de 5 à 8 bits)

un bit de parité optionnel

1 ou plusieurs bits de stop.

Emetteur et récepteur doivent être configurés de
la même manière
Jelassi Khaled Microcontrôleur 113
Norme RS232

Nombre de fils


Echange de données bidirectionnel entre 2
liaisons séries RS232C : 3 fils minimum .

Un pour les données qui circulent dans un
sens.

Un pour les données qui circulent dans l'autre
sens.

Un pour la masse électrique des signaux.

Jelassi Khaled Microcontrôleur 114


Norme RS232

Protocoles de communication

Protocole XON XOFF : ne nécessite qu'une liaison
sur 3 fils.

La négociation entre l'émetteur et le récepteur pour
échanger des données se fait par logiciel.

Basé sur les caractères XON (ASCI 11H) et XOFF
(ASCI 13H).

Jelassi Khaled Microcontrôleur 115


Norme RS232

Protocole XON-XOFF

Lorsque le buffer de réception est plein à 80%,
le récepteur envoie le caractère XOFF.

Lorsqu'il reçoit le caractère XOFF, l'émetteur doit
immédiatement suspendre son émission.

Lorsque le récepteur a vidé son buffer à 50%, il
envoie un caractère XON à l'émetteur.

A la réception de XON, l'émetteur peut
reprendre son émission.

Jelassi Khaled Microcontrôleur 116


Norme RS232

Protocole XON-XOFF

Il est possible que l'émetteur ne reçoive pas
ou perde les caractères XON/XOFF.

Pour pallier à ces problèmes, lorsque l'émetteur
n'a pas reçu de caractères depuis un certain
temps, ce dernier peut reprendre de sa propre
initiative le transfert.

Si le récepteur n'est pas d'accord, ce dernier
pourra toujours ré-émettre un XOFF.

Jelassi Khaled Microcontrôleur 117


Norme RS232

Protocole Matériel

Lorsque l'émetteur veut émettre ses données,
il doit positionner la ligne RTS pour demander au
récepteur s'il est prêt à accepter ces données.

Le récepteur, lorsqu'il est prêt à recevoir les
données, va envoyer le signal DSR de l'émetteur
pour lui indiquer qu'il est prêt.

Jelassi Khaled Microcontrôleur 118


Norme RS232

Brochage connecteur 9 points


1DCD Détection de porteuse. Indique que la porteuse est présente
2RX Réception des signaux
3TX Transmission des données
4DTR Terminal prêt. Sortie positionnée par l'émetteur pour signaler au récepteur
qu'il est libre
5SG Masse Electrique
6DSR Emetteur prêt. Entrée indiquant qu'une donnée est prête
7RTS Demande de Transmission. Sortie indiquant au récepteur que
l'émetteur est prêt à envoyer des données 8CTS Prêt à émettre. Entrée
indiquant que le récepteur est prêt à recevoir des données

9RI Indicateur de sonnerie.

Jelassi Khaled Microcontrôleur 119


Norme RS232

Branchement Branchement
Protocole Matériel Protocole Xon/Xoff

RX RX RX RX
TX TX TX TX
RTS RTS RTS RTS
CTS CTS CTS CTS
DSR DSR DSR DSR
DCD DCD DCD DCD
DTR DTR DTR DTR
SG SG SG SG
Jelassi Khaled Microcontrôleur 120
Liaison RS232: Protocole de communication
 Exemple d’une trame:

Jelassi Khaled Microcontrôleur 121

Vous aimerez peut-être aussi