Transcript Voir PPS

Le Micro-contrôleur 8051
Jelassi Khaled
Microcontrôleur
1
Plan Général







Organisation Générale
Structure Générale de la
mémoire
Mémoire Programme
Mémoire de Données Externe
Jeu d'instructions
Organisation matérielle
Ports d'Entrées/Sorties
Jelassi Khaled
Microcontrôleur

Compteurs/Timers
Interface Série
Les interruptions
Norme RS232
Présentation carte XEVA

Exemples




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
RAM interne :


Adressage en
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
Adressage en
mémoire
mode direct
ou indirect.

Jelassi Khaled
Microcontrôleur
Adressage en
mode indirect
uniquement
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
add
mov
Jelassi Khaled
A,26h
A,25h
27h,A
: A = (26h)
: A = A + (25h)
: (27h) = A
Microcontrôleur
25h : 12
26h : 64
27h : ?
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
mov
inc
add
inc
R1,#25h
A,@R1
R1
A,@R1
R1
:
:
:
:
:
mov
@R1,A
: (@R1) = A
Jelassi Khaled
R1 = 25h
A = (@R1)
R1 = R1 + 1
A = A + (@R1)
R1 = R1 + 1
Microcontrôleur
25h : 12
26h : 64
27h : ?
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
add
add
add
A,#127
A,7FH
A,R7
A,@R0
Jelassi Khaled
:
:
:
:
Microcontrôleur
A
A
A
A
=
=
=
=
A
A
A
A
+
+
+
+
127
(7Fh)
R7
(@R0)
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

anl
A,#45h
A,#0EBh
A
= 0100 0101
: A = 45h
: A = A & EBh & EBh = 1110 1011
= 0100 0001
mov
xrl
A,#7DH
A,#0F0h
A
= 0111 1101
: A = 7Dh
: A = A  F0h  0F0h = 1111 0000
= 1000 1111
Jelassi Khaled
Microcontrôleur
35
Le Jeu d'Instruction
Instructions Logiques

Rotations

Droite

Droite avec CY

Gauche

Gauche avec CY

CY
Echange poids forts/ports faibles de A
Jelassi Khaled
Microcontrôleur
CY
36
Le Jeu d'Instruction
Instructions Logiques : exemples

mov
A,#45h

swap A
: A = 45h
: A = 54h
mov
rl
rl
: A = 7Dh = 0111 1100b
: A = F8h = 1111 1000b
: A = F1h = 1111 0001b
A,#7DH
A
A
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
mov B,#10
div AB
swap A
add A,B
Jelassi Khaled
:
:
:
:
:
A =
B =
A/B
A =
A =
16
10
 A = 1, B = 6
10h
A + B = 16h
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
call
A,debut_table
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
jnb
cpl
suite:
C,bit1
bit2,suite
C
…
bit1 bit2
C
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
Instructions de sauts
DPTR contient
l'adresse de
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
Configurations des E/S
Verrou
correspondant au
registre SFR
Borne du
port
Inactif en
mode port
Bus interne
Validation
de l'écriture
(signal interne)
Jelassi Khaled
Commutation entre mode port
et mode bus
En lecture, la valeur issue
de l'entrée est placée sur le
bus interne
Microcontrôleur
68
Ports d'Entrées/Sorties
Configurations des E/S
Verrou
correspondant au
registre SFR
Borne du port
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
registre SFR
Borne du port
Bus interne
Validation
de l'écriture
(signal interne)
Jelassi Khaled
Le Micro-contrôleur
8051
En lecture, la valeur issue
de l'entrée est placée sur le
bus interne
Microcontrôleur
72
Ports d'Entrées/Sorties
Configurations des E/S
Verrou
correspondant au
registre SFR
Borne du port
Bus interne
Fonctions
alternatives :
la sortie du latch
doit être à 1
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
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
Fosc
Débit 
*
32 12 * (256  TH1)
2

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
5 sources d'interruptions
Activation sur état
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
2RX
3TX
4DTR
Détection de porteuse. Indique que la porteuse est présente
Réception des signaux
Transmission des données
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
Protocole Matériel
RX
TX
RTS
CTS
DSR
DCD
DTR
SG
Jelassi Khaled
RX
TX
RTS
CTS
DSR
DCD
DTR
SG
Branchement
Protocole Xon/Xoff
RX
TX
RTS
CTS
DSR
DCD
DTR
SG
Microcontrôleur
RX
TX
RTS
CTS
DSR
DCD
DTR
SG
120
Liaison RS232: Protocole de communication
 Exemple d’une trame:
Jelassi Khaled
Microcontrôleur
121