Vous êtes sur la page 1sur 6

Le microcontroleur 8051

---------------------------------------------------------------------------------------------------------------------

LE MICROCONTROLEUR 8051
------------------------------------------------
Le 8051 est un microcontroleur 8 bits c'est à dire un microprocesseur associé
dans un même boîtier avec tous les éléments nécessaires au pilotage d'un système; CPU,
RAM, ROM, borniers d'entrée sortie, timers, circuits pour liaison série.
Il existe en 3 versions essentielles :
- Le 8051 proprement dit avec ROM interne, inutilisable pour de petites
séries .
Le 8751 identique au précédent mais avec PROM programmable et effaçable UV
Le 8031 sans ROM interne

Le boîtier 40 broches comprend:


- 32 broches constituant 4 ports de 8 bits P0 P1 P2 P3 programmables en entrée
ou sortie.
Les 2 bornes d'alim 0 et 5v
- 2 bornes pour le quartz (12 Mhz typiquement )
-3 bornes essentielles dont le rôle sera précisé plus loin PSEN EA/VPP et
ALE/Prog
-1 RESET
+5V
P1.0 1 40 VCC
P1.1 2 39 P0.0 AD0
P1.2 3 38 P0.1 AD1
P1.3 4 37 P0.2 AD2
P1.4 5 36 P0.3 AD3
P1.5 6 35 P0.4 AD4
P1.6 7 34 P0.5 AD5
P1.7 8 33 P0.6 AD6
RST 9 8051 32 P0.7 AD7
RXD P3.0 10 8031 31 EA / Vpp
TXD P3.1 11 30 ALE /prog
INT0 P3.2 12 29 PSEN
INT1 P3.3 13 28 P2.7 A15
T0 P3.4 14 27 P2.6 A14
T1 P3.5 15 26 P2.5 A13
WR P3.6 16 25 P2.4 A12
RD P3.7 17 24 P2.3 A11
XTAL2 18 23 P2.2 A10
XTAL1 19 22 P2.1 A9
VSS 20 21 P2.0 A8

Gnd

RXD réception de l'UART interne


TXD Emission de l'UART Interne
INTO Interruption 0 Active au niveau bas
INT1 Interruption 1
T0 Entrée de commande du Timer 0
T1 Entrée de commande du Timer 1
WR Signal d'écriture dans la RAM externe
RD Signal de lecture dans la RAM externe

Le 8051 peut adresser :


- 64 kO de RAM où sont stockées essentiellement des données auxquels il faut
ajouter 64 kO de ROM contenant le programme .
-Il contient en plus 2 Timers 16 bits et un UART pour transmission série.

--------------------------------------------------------- 1 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

LES SIGNAUX SUR LE BUS

Le signal de l’oscillateur interne est divisé par 12 .Chaque cycle machine dure 12
périodes d’horloge et est divisé en 6 périodes S1 à S6 , chacune d’elle comprenant deux phases
d’horloge P1 et P2 (Figure ci contre ) .
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2

Une instruction faisant appel à une mémoire interne


dure un cycle machine soit 1µS pour une horloge à 12Mhz
.Dans ce cas les signaux sur le bus ont la chronologie S1 S2 S3 S4 S5 S6
représentée ci dessous .

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 Un cycle machine

ALE
ALE

PSEN
S1 S2 S3 S4 S5 S6

P2 PCH A8 A15 PCH A8 A15 PCH A8 A15 PCH A8 A15

L’octet bas de l’adresse est


P0 PCL PCL présentée sur le port P0 entre
PCL PCL

Code S1P2 et S2P2 pour la saisie du


Code Code

premier octet du code machine puis


entre S4P2 et S5P2 pour la saisie
du second octet du code machine s’il existe .La lecture du code en ROM est effectuée grace à
l’activation de PSEN en S3 ainsi qu’en S6
L’utilisateur à rarement besoin de connaître exactement ces signaux sauf pour un
dépannage èventuel à l’oscilloscope ou pour analyser finement le déroulement des interruptions .

--------------------------------------------------------- 2 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

ORGANISATION DU PLAN MEMOIRE

ROM
Les 4 premiers kO de ROM peuvent être internes au boîtier (8051 8751 ) ou externes .
La broche EA permet de choisir l'option:
Si EA=0 la mémoire interne ,si elle existe ,est ignorée . A la mise sous tension le µP lit
le programme à partir de 0000 dans la ROM externe. ( Un 8051 dont la ROM interne est
programmée ,récupéré sur un montage peut être utilisé comme un 8031 en mettant la broche
EA au niveau bas )
Si EA=1 le début de programme est lu dans la ROM interne. Au delà de l'adresse 0FFFH
le µP se commute automatiquement sur la ROM externe.
Le signal de lecture pour les ROM externes est fourni par la broche PSEN Les
données transitent par le port P0 qui est réservé à cet usage et cesse d'être utilisable pour des
entrées sortie .
Par ce même port P0 transitent aussi les 8 bits de plus faible poids des adresses (A0-A7)
que l'on "latche" au vol grâce au signal ALE actif au niveau haut (Comme dans le cas du 8085).
L'octet haut des adresses apparaît sur P2 . Les adresses dans le plan mémoire sont
toujours définies sur 16 bits, les 2 ports P0 et P2 sont donc inutilisables comme entrée-sortie si le
programme est en ROM externe (8031).
D0
La figure ci contre montre comment P0
PO Data
une ROM extérieure doit être reliée au CPU . D7
- EA* A0
CPU Latch A7
ALE ROM
8051/31 Externe
RAM PSEN /OE et /CS
A8
Le µP peut adresser 64kO mais il P2
A15
existe de plus 256 octets internes
* Voir texte
Ces 256 cases internes sont
considérablement privilégiées par le logiciel, le Liaison du CPU avec une ROM ou PROM externe
programmeur doit les utiliser au maximum, leur
accès est facile et rapide. La majorité des instructions de l'assembleur concerne ces octets internes,
les instructions arithmétiques et logiques ne sont exécutables qu'entre eux .
Les mémoires vives extérieures ne sont mises en jeu que par un nombre très limité
d'instructions (MOVX), une instruction de saut et des déplacements .Dans ce cas les signaux
d'écriture WR et de lecture RD utilisent les fils 6 et 7 du bornier P3 .Comme plus haut les données
transitent sur P0 ainsi que l'octet bas de l’adresse. Suivant le type d'adressage utilisé le port P2 est
réservé ou non pour l'octet haut .La figure suivante montre comment câbler une RAM dans le cas
d'un adressage absolu
sur 16 bits. D0
PO
P0 Data Adressage
/CS D7
Les
adresses des cases A0
mémoire internes sont CPU Latch A7 RAM
ALE Externe
toujours présentées sur 8 8051/31
bits .Il coexiste 256 R/W
octets ayant les mêmes P3 A8 /OE
P3.6 P2 A15
adresses dans les RAM P3.7
internes et externes, mais RD
WR
ils ne sont pas
accessibles par les Liaison du CPU avec une RAM externe
mêmes instructions. Les
instructions MOV concernent la RAM interne alors que les MOVX s'adressent aux RAM externes
accessibles par les signaux RD et WR sur P3.6 et P3.7 .

--------------------------------------------------------- 3 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

La RAM interne est partagée en 2 parties distinctes:


- 128 Octets de 00 à 7FH
- De 00 à 1F (32 premiers octets) les cases mémoire sont organisées en 4 groupes
(banque ) de 8 registres utilisés pour l'adressage.
Dans chaque groupe (Banque) les 8 registres s'appellent R0...R7.
Par logiciel on pourra utiliser l'un de ces 4 groupes.
Les 16 octets suivants constituent une zone laquelle le µP peut accèder bit à bit. Chaque bit a une
adresse qui peut varier de 00 pour le bit de plus faible poids de l'octet d'adresse 20h à 7F (Bit 7 de
l'octet d'adresse 2FH )
Au delà de 30H se trouve une zone libre utilisable pour tout stockage temporaire, elle
accueille en particulier la pile pointée par le "stack".

Les 128 octets suivants de 80 à FFH constituent le SFR (Special Function Register) Y sont
placés tous les registres internes du µP. Par exemple, les cases mémoire 80H 90H A0H et B0H
constituent les latches associes aux ports P0 ..P3 . E0H n'est pas autre chose que l'accumulateur.

65536=FFFF
RAM ROM
ext ext
Interne

MOVX MOVC
MOV
255

SFR

128
127 1000H
0FFH
ROM int
8051
48
32 Adress Bit EA=1 EA=0
Banques
0 0 0 0
WR PSEN
RD
Champ mémoire du 8031 / 51
A la position D0H dans le SFR on trouve le registre d'état ou PSW qui contient les bits
d'état.

Contenu du PSW (D0H)

PSW.7 CY Retenue Carry


PSW.6 AC Retenue intermédiaire
PSW.5 F0 Utilisable pour usage général définissable par l'utilisateur
PSW.4 RS1 Les 2 bits définissant la banque de registres active
PSW.3 RS0 son numéro est RS1RS0 en binaire
PSW.2 OV Dépassement lors d'un calcul
PSW.1 Non utilisé
PSW.0 P Bit de parité du contenu de l'accumulateur 1 si nombre de 1 impair

--------------------------------------------------------- 4 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

Le registre d’état est modifié lors de l’exécution de certaines instructions. Il est important de
connaître lesquelles de façon à sauver si c’est nécessaire ce PSW lors d’un appel à sous
programme .
Ces informations sont groupées dans le tableau suivant :

Instructions Cy OV AC Instructions Cy OV AC
ADD X X X SETB 1
ADDC X X X CLR C 0
SUBB X X X CPL C X
MUL 0 X ANL C,Bit X
DIV 0 X ANL C,/Bit X
DA X ORL C,Bit X
RRC X ORL C,/Bit X
RLC X MOV C,Bit X
CJNE X X
X indique que le bit est positionné à 1 ou 0 après exécution .

Le contenu du SFR est détaillé dans la figure suivante. On notera que les cases de la
première colonne sont les seules a être accessibles bit par bit .

F8 F9 FA FB FC FD FE FF
F0 (B) F7
E8 EF
E0(ACC) E7
D8 DF
D0 (PSW) D7
C8 TL2 TH2 CF
C0 C7
B8 (IP) BF
B0 (P3) B7
A8 (IE) AF
A0 (P2) A7
98 (SCON) SBUF 9F
90 (P1) 97
88 (TCON) TMOD TL0 TL1 TH0 TH1 8F
80 (P0) 81 (SP) DPL DPH 87 (PCON)

Note: Le bit 0 de la case 80H (12810) a pour adresse bit 128 (soit 80H) , 80.1 a pour
adresse bit 81H etc.. le bit 0 de 88H a donc comme adresse bit 88H et ainsi de suite. Ainsi le bit 0
des cases du SFR adressables par bit à pour adresse bit le numéro de la case mémoire .Par
exemple ACC.0 a pour adresse bit E0H

Le tableau ci dessous indique le contenu des cases les plus importantes après un Reset .
On notera en particulier la position du Stack Pointer immédiatement en dessus de la première banque,
elle peut naturellement être modifiée .Il faut noter cependant que la pile étant nécessairement située
en mémoire interne à une taille maximale de 120 octets,( Si l’on conserve les 8 octets de la banque 0
il ne reste alors aucun autre octet disponible pour les données ) (jusqu’à 248 pour un 8052 qui
possède 256 octets de RAM interne.)

--------------------------------------------------------- 5 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

Initialisation des cases du SFR

Symbole Fonction Valeur initiale au Adresse


chargement Hexa
P0 Port 0 FF 80H
SP Stack Pointer 7 81H
DPL Pointeur d'adresse octet bas 0 82H
DPH Pointeur d'adresse octet haut 0 83H
PCON Power control HMOS 0XXXXXXX 87H
NMOS 0XXX0000
TCON Controle des compteurs timers 0 88H
TMOD Mode de fonctionnement des timers 0 89H
TL0 Chargement compteur 0 Octet bas 0 8AH
TL1 Chargement compteur 1 Octet bas 0 8BH
TH0 Chargement compteur 0 Octet Haut 0 8CH
TH1 Chargement compteur 1 Octet Haut 0 8DH
P1 Port 1 FF 90H
SCON Controle du port série FF 98H
SBUF Buffer associé au port série Indéterminé 99H
P2 Port 2 FF A0H
IE Validation des interruptions 0XX00000 A8H
IP Controle parité interruptions XXX00000 B8H
P3 Port 3 FF B0H
PSW Mot d'état 0 D0H
ACC Accumulateur 0 E0H
B Registre B pour multiplication 0 F0H

--------------------------------------------------------- 6 ----------------------------------------------------------