Vous êtes sur la page 1sur 4

Le microcontroleur 8051

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

LES MODES D'ADRESSAGE

Adressage Immdiat
Ce n'est pas rellement un adressage mais le remplissage d'une case mmoire avec un octet.
Cette opration est caractrise par la prsence du sigle # devant la valeur de l'octet charger dans
le texte assembleur .

Exemple: MOV A,#40H Chargement de l'octet 40H dans l'accumulateur


MOV A,#40 chargerait 40 dcimal soit 28H
MOV A,#11001101B charge le mot binaire
De mme MOV P1,#80H envoie 80H sur le port P1

Toute case mmoire interne dsigne par son adresse peut tre charge :

MOV 40H,#5AH 5AH est charg dans la case 40H

Adressage direct

L'adresse n'a que 8 bits (soit 1 seul octet dans l'instruction ) Seule la RAM interne et le SFR
peuvent tre adresss de cette manire:

Exemple: MOV A,45H chargement de l'accumulateur avec le contenu de la case d'adresse 45H
(mmoire interne) ( MOV A,45H E5 45)
MOV R0,30H A8 30 Chargement du registre R0 de la banque 0 (par dfaut) avec
le contenu de la case 30H
MOV A,P1 E5 90 nous avons vu plus haut que le port 1 tait matrialis
dans la case 90H de la RAM interne. L'assembleur comprend la dnomination P1
pour dsigner le port 1
ANL A,78 55 4E (4EH=78) Une opration ET est effectue entre le contenu
de A et le contenu de la case mmoire 78 (4EH) (Interne)

Il n'existe pas d'adressage direct dans la RAM extrieure, linstruction :


MOVX A,(0A568H)
qui chargerait dans A le contenu de la case externe A568H n'existe pas.

Adressage Indirect par registre

L'instruction spcifie un registre qui contient l'adresse .Les mmoires internes et externes
peuvent tre mises en jeu par ce type d'adressage. Dans le cas d'un adressage sur 8 bits le registre
d'index peut tre l'un des 2 registres R0 ou R1 choisi dans la "banque" active,
L'adressage indirect est dsign dans l'assembleur par le signe at @

On notera que les cases du SFR ne sont pas accessibles par adressage indirect

Exemple: MOV A,@R0 Charge l'accumulateur avec le contenu de la case dont l'adresse est le
contenu du registre R0 de la banque active.
MOV @R1,P1 Lecture du port P1 et transfert de son contenu dans la case mmoire
dont l'adresse est le contenu du registre R1 de la banque active.
ANL A,@ R0 ((R0)) (A)(A) dsignant le NAND

L'adressage sur 16 bits ne concerne bien sr que la mmoire extrieure. Le registre d'index
est le Data Pointer Register DPTR localis en 82H(DPL) et 83H(DPH) dans le SFR .

Exemple: MOVX @DPTR,A Charge la mmoire dont l'adresse est le contenu du


DPTR dans l'accumulateur .Le X du mnmonique indique qu'il s'agit d'une mmoire
extrieure.

--------------------------------------------------------- 7 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

Une page de 256 octets peur tre atteinte en utilisant le registre R0 (ou R1 )

Exemple: MOVX @R1,A

Les signaux RD ou WR ( suivant le cas, ici WR) sont crs par le CPU , l'adresse A0
A7 est envoye sur P0. et mmorise dans le latch dadresses. Le port P2 nest pas touch,sil a t
pralablement charg il dfinit loctet haut dune mmoire connecte sur P2-P0 , donc une page de
256 octets.

Exemple: Si (R0)= A0
MOV P2,43H
MOVX A,@R0 Charge l'accumulateur avec le contenu de la case 43A0H

La mmoire de programme (ROM) peut tre lue par des instructions spciales MOVC.
Dans ce cas l'adresse lue est la somme du contenu initial de l'accumulateur et d'un registre de base
qui est le DPTR ou le compteur programme lui mme (PC).

Exemple: Supposons que A contienne 23H et (DPTR)=8000H alors


MOVC A,@A+DPTR
charge dans A le contenu de l'adresse 8023H

Exemple: MOVC A,@A+PC correspond aux oprations


(PC) (PC)+1 et (A) ((A)+(PC))

Adressage Implicite ou spcifique un registre


L'adressage est implicite si l'octet de programme contient lui mme les informations
dadresse. Les instructions concernant les registres R0 R7 sont de ce type, 3 bits sont rservs
dans l'octet de code pour dsigner le registre en cause.

Exemple: ADD A,R4 qui fait l'addition de (A) et du contenu du registre R4 de la bank active
a pour code machine 00101rrr ou rrr=100 numro du registre soit dans ce cas :
00101100B= 2CH

Exemple: INC R3 incrment de R3 a pour code 00001rrr soit ici 00001011 ou 0DH

Des instructions spcifiques un registre (par exemple RAZ de A ou complment de A) ne


ncessitent pas d'adresse. Ces instructions tiennent le plus souvent sur un seul octet

Exemple: DA A Ajustement dcimal pour l'addition en DCB


INC A Incrment de A

Adressage de Bits

Le 8051 possde un processeur de bits qui travaille sur des bits individuels. Pour ce
processeur l'Accumulateur est C.
Les bits de certains registres sont ainsi accessibles par une adresse sur 1 octet.
D'abord les bits de la zone rserve en dbut de RAM interne (16 octets de 20H 2FH ),
ces 128 bits ont des adresses qui vont de 00 (Bit 0 de la case 20H) 7FH (bit 7 de 2FH).
Sont galement accessibles de cette faon les bits des cases du SFR dont l'adresse en
hexa. se termine par 0 ou 8, 80H 88H 90H 98H etc...Leur adresse est constitue par:
5 bits de fort poids qui sont les mmes que ceux de l'adresse de la case
3 bits qui prcisent la position du bit dans la case.

Ainsi le bit 5 de la case 90H a pour adresse 10010 101 soit 95H Le bit 6 de la case mmoire C8 a
pour adresse 11001 110 soit 0CEH

--------------------------------------------------------- 8 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

L'un des oprandes est toujours le carry C

Exemple: MOV C,45H chargement de C avec le bit d'adresse 45H


MOV P1.3,C Le contenu de C est transfr dans le bit 3 du port P1
MOV RS0,C Le bit RS0 est dsign par son nom de code

Il n'y a pas d'adressage immdiat de bit pour lequel les seules valeurs seraient #0 ou #1
mais deux instructions de mise 0 et 1

CLR mise zro


SETB mise 1

Ainsi qu'une instruction de complmentation CPL

Exemple: CLR C Mise du bit C 0


CLR P3,6 RAZ du bit 6 de P3
SETB RS1 Mise 1 de RS1
CPL P1.1 Inversion du bit 1 de P1
SETB P3.2 Mise 1 du bit 2 du port 3

--------------------------------------------------------- 9 ----------------------------------------------------------
Le microcontroleur 8051
---------------------------------------------------------------------------------------------------------------------

Symbole Position Adresse Signification


du bit du bit
CY PSW.7 D7 Retenue
AC PSW.6 D6 Retenue intermdiaire
F0 PSW.5 D5 Flag 0
RS1 PSW.4 D4 Slection de BANK MSB
RS0 PSW.3 D3 LSB
OV PSW.2 D2 Bit de dpassement
P PSW.0 D0 Bit de parit ( 1 si nombre de bits impair)

TF1 TCON.7 8F Timer 1 bit de dpassement


TR1 TCON.6 8E Timer 1 bit RUN
TF0 TCON.5 8D Timer 0 bit de dpassement
TR0 TCON.4 8C Timer 0 bit RUN
IE1 TCON.3 8B Interruption 1 bit de controle
IT1 TCON.2 8A Interruption 1 Flag de front
IE0 TCON.1 89 Interruption 0 bit de controle
IT0 TCON.0 88 Interruption 0 flag de front
SM0 SCON.7 9F Mode srie bit de controle 0
SM1 SCON.6 9E Mode srie bit de controle 1
SM2 SCON.5 9D Mode srie bit de controle 2
REM SCON.4 9C Bit de validation de rception
TB8 SCON.3 9B Transmis 8 bits
RB8 SCON.2 9A Reu 8 bits
TI SCON.1 99 Flag d'interruption transmission
RI SCON.0 98 Flag d'interruption rception
EA IE.7 AF Validation toutes interruptions
ES IE.4 AC Validation interruption port srie
ET1 IE.3 AB Validation interruption Timer 1
EX1 IE.2 AA Validation interruption extrieure 1
ET0 IE.1 A9 Validation interruption Timer 0
EX0 IE.0 A8 Validation interruption extrieure 0
RD P3.7 B7 Signal de lecture dans RAM ext
WR P3.6 B6 Signal d'criture dans RAM ext
T1 P3.5 B5 Entre / sortie Timer 1
T0 P3.4 B4 Entre / Sortie timer 0
INT1 P3.3 B3 Entre interruption 1 (Active niveau 0)
INT0 P3.2 B2 Entre interruption 0
TXD P3.1 B1 Port srie emission
RXD P3.0 B0 Port srie rception
PS IP.4 BC Priorit interruption port srie
PT1 IP.3 BB Priorit interruption Timer 1
PX1 IP.2 BA Priorit interruption extrieure 1
PT0 IP.1 B9 Priorit interruption Timer 0
PX0 IP.0 B8 Priorit interruption extrieure 0

Adresses et symbole des bits dans le SFR


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

--------------------------------------------------------- 10 ----------------------------------------------------------