Académique Documents
Professionnel Documents
Culture Documents
---------------------------------------------------------------------------------------------------------------------
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
Gnd
--------------------------------------------------------- 1 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------
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
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 Un cycle machine
ALE
ALE
PSEN
S1 S2 S3 S4 S5 S6
--------------------------------------------------------- 2 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------
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
---------------------------------------------------------------------------------------------------------------------
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.
--------------------------------------------------------- 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
---------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------- 6 ----------------------------------------------------------