You are on page 1of 27

1

Le Microcontrleur 8051/8052

A. Oumnad

2 I II Introduction.........................................................................................................3 Prsentation de la famille MCS 51 :........................................................................3 II.1 Caractristiques principales du 8051................................................................3 II.2 Brochage du 8051..........................................................................................5 II.2.1 Le port P0 ..............................................................................................5 II.2.2 Le port P2 ..............................................................................................5 II.2.3 Le port P1 ..............................................................................................5 II.2.4 Le port P3 ..............................................................................................5 II.2.5 Les autre E/S ..........................................................................................5 II.3 Organisation de la mmoire ............................................................................6 II.3.1 La mmoire programme...........................................................................6 II.3.2 La mmoire RAM.....................................................................................6 II.3.3 Organisation de la RAM interne ................................................................6 II.3.4 Les registres spciaux SFR .......................................................................7 III Modes d'adressage.......................................................................................... 12 III.1 Adressage Immdiat .................................................................................... 12 III.2 Adressage Registre ...................................................................................... 12 III.3 Adressage direct .......................................................................................... 12 III.4 Adressage Indirect (index) .......................................................................... 12 III.5 Adressage de Bits ........................................................................................ 13 IV Jeux d'instruction du 8051 .................................................................................. 13 IV.1 Instructions de transfert de donnes ............................................................. 14 IV.2 Instructions arithmtiques ............................................................................ 15 IV.3 Instructions logiques et boolennes............................................................... 16 IV.4 Les instruction de branchement .................................................................... 16 IV.5 Les instruction de branchement conditionnels ................................................ 17 IV.6 Instruction Diverses ..................................................................................... 18 V Les interruptions ................................................................................................ 21 V.1 Gestion des interruptions.............................................................................. 21 V.2 Droulement d'une interruption .................................................................... 21 VI Les timers.......................................................................................................... 22 VI.1 Le TIMER2 du 8052 ..................................................................................... 24 VI.1.1 TIMER2 en mode Auto-Reload................................................................ 24 VI.1.2 TIMER2 en mode capture ...................................................................... 24 VI.1.3 Les drapeau de l'interruption TIMER2 ..................................................... 25 VII Le port srie ................................................................................................... 25 VII.1 Modes de fonctionnement ......................................................................... 26 VII.2 Transmission d'un Octet............................................................................ 27 VII.3 Rception d'un octet ................................................................................. 27 VII.4 Dfinition de la vitesse de communication par Timer ................................... 27

Introduction

Bien que le 8051 soit un circuit assez ancien, il reste aujourd'hui un des microcontrleurs les plus populaire. Fin 1979, INTEL commercialise la famille de microcontrleurs MCS 51 qui correspond au dpart trois types de microcontrleurs ; le 8051 ( mmoire ROM), le 8751 ( mmoire EPROM) et le 8031 (ROMLESS). Le succs de la famille 8051 a amen la fabrication de ce microcontrleur et de ses drivs par de nombreux constructeurs de CI : PHILIPS, DALLAS, ATMEL, SIEMENS pour ne citer que les plus importants. On trouve aussi des cur de 8051 (en VHDL) vendu en proprit industrielle. Tous ses produits sont compatibles, avec des vitesses dhorloges diffrentes, des nouvelles fonctionnalits (contrleur I2C, CAN, watchdog ). De nouvelle forme de programmation (programmation ISP pour ATMEL), taille de mmoires plus grandes, nombre de ports E/S plus grands. Le 8051 et ses produits drivs reste le microcontrleur 8 bits le plus vendu dans le monde. Il est alors important de s'intresser l'architecture du 8051 car elle commune tous les microcontrleurs de la famille.

II

Prsentation de la famille MCS 51 :

Les caractristiques principales de quelques chantillons de la famille MCS 51 sont donnes dans le tableau ci-dessous : DEVICE 8031 8051 8751 8032 8052 8752 mmoire de programme ROMLESS 4K ROM 4K EPROM ROMLESS 8 K ROM 8 K EPROM RAM de donnes 128 o 128 o 128 o 256 o 256 o 256 o vitesse 12 MHz 12 MHz 12 MHz 12 MHz 16 MHz 20 MHz ports dE/S 4 x 8 bits 4 x 8 bits 4 x 8 bits 4 x 8 bits 4 x 8 bits 4 x 8 bits timers/ compteurs 2 2 2 3 3 3 UART 1 1 1 1 1 1

Tableau II.1 : 8051 et 8052 avec leurs version ROMLESS et EEPROM

II.1 Caractristiques principales du 8051


Le microcontrleur possde les caractristiques suivantes: un CPU 8 bits conu pour la commande d'applications diverses, 32 entres/sorties bidirectionnelles qui peuvent tre adresses individuellement rparties en 4 ports : P0, P1, P2, P3. 128 octets de RAM interne utilisation gnrale 21 registres spcialiss un port srie en full duplex 5 sources d'interruptions avec 2 niveaux de priorit 2 Compteurs/Timers sur 16 bits T0 et T1 fonctionnant suivant 4 modes un oscillateur interne ncessitant un quartz externe : la frquence d'oscillation maximale admise est de 12 MHz Adressage de 64 Ko de mmoire de donnes Adressage de 64 Ko de mmoire de programme un jeu d'instructions assez dvelopp

Figure II.1 : Architecture simplifie du 8051

Figure II.2 : Architecture dtaille du 8051

II.2 Brochage du 8051


II.2.1 Le port P0 C'est un port 8 bits bidirectionnel usage gnral sorties drain ouverts. Il a la fonction secondaire de port multiplex transportant les 8 bits infrieurs des bus de donnes et adresse permettant d'accder une mmoire externe de type RAM de donnes ou EEPROM programme, dans ce cas les sorties sont dotes de rsistances de pullup internes. II.2.2 Le port P2 C'est un port 8 bits bidirectionnel usage gnral avec des rsistances de pull-up internes avec la fonction secondaire de port multiplex transportant les 8 bits suprieurs des bus de donnes et d'adresse. II.2.3 Le port P1 C'est un port 8 bits bidirectionnel usage gnral avec rsistances de pull-up internes avec les fonctions secondaires (8052) : P1.0 sert aussi comme horloge externe pour le Timer 2, P1.1 sert aussi comme entre de control du Timer 2, II.2.4 Le port P3 C'est un port 8 bits bidirectionnel usage gnral avec rsistances de pull-up internes avec les fonctions secondaires : P3.0 = RxD : Entre de l'interface srie P3.1 = TxD : Sortie de l'interface srie P3.2 = /INT0 : entre d'interruption P3.3 = /INT1 : entre d'interruption P3.4 = T0 : entre horloge du timer 0 P3.5 = T1 : entre horloge du timer 1 P3.6 = /WR : sortie criture de la mmoire externe P3.7 = /RD : sortie lecture de la mmoire externe II.2.5 Les autre E/S /EA : (External Access) si EA=0, les instructions sont recherches dans la mmoire programme externe. RST : Entre d'initialisation. Un tat haut pendant deux cycles machines sur cette broche entrane une initialision du microcontrleur. /PSEN : (Programm Store ENable) passe 0 lorsque le micro va rechercher une instruction en mmoire programme externe. ALE : (Adress Latch Enable) prvue pour commander le dmultiplexage du port P0. o ALE = 1, P0 transporte la partie basse du bus d'adresse : A0 A7 o ALE = 0, P0 sert de bus de donne XTAL1 et XTAL2 : Placer le quartz entre ces deux broches avec deux condensateurs de 22pF entre ces deux broches et la masse

II.3 Organisation de la mmoire


Les microcontrleurs de la famille 8051 manipulent plusieurs types de mmoire comme indiqu sur la Figure II.3. On distingue : La mmoire interne (on chip memory), constitue d'une RAM de donnes, de registre de contrle (SFR : Special Function Registers), et d'une mmoire programme qui est en gnral une ROM ou de prfrence une EEPROM, La mmoire externe constitue d'une RAM de donnes et d'une mmoire programme en gnral de type EEPROM

8051 RAM interne Registres spciaux SFR mmoire programme interne

RAM externe

mmoire programme externe

Figure II.3 : organisation mmoire du 8051

II.3.1 La mmoire programme Sur le 8051, il y a une mmoire programme interne de type ROM de 4ko, il peut toutefois adresser jusqu' 64 ko de mmoire externe. La ligne EA permet de distinguer l'accs la mmoire interne ou externe. Le 8031 n'a pas de mmoire programme interne. II.3.2 La mmoire RAM Le 8051 dispose 128 octets de RAM interne et peut adresse jusqu' 64 ko de RAM externe. la RAM interne est bien plus rapide que la RAM externe, par exemple : pour incrmenter une position RAM interne il faut un cycle machine, alors que pour incrmenter une position RAM externe, il faut 7 cycles machine, dans ce cas, la RAM externe est 7 fois plus lente que la RAM interne. II.3.3 Organisation de la RAM interne Le 8051 possde RS1 RS0 128 octets de RAM interne adressable de 00 R0 R1 R2 R3 R4 R5 R6 R7 Bank 0 0 0 00 7F. Cette mmoire est 08 R0 R1 R2 R3 R4 R5 R6 R7 Bank 1 0 1 organise en 3 zones 10 R0 R1 R2 R3 R4 R5 R6 R7 bank 2 1 0 :

Les banks de

Les 32 premier octets sont utilise soit comme position mmoire pour les donns utilisateurs soit comme registres de travail appels aussi registres universels. Les registres portent les noms de R0 R7. Si on observe la figure, on s'aperoit que les 8 registres sont reproduits 4 fois. Cela signifie qu'un registre Rx correspond 4 positions mmoire diffrentes, comment faire alors la distinction. Chaque range de 8 octets est appele bank, et pour passer d'un bank l'autre il faut positionner les deux bits 3 et 4 (RS0, RS1) du registre de contrle PSW. Au RESET c'est le bank0 qui est slectionn.

18 R0 R1 R2 R3 R4 R5 R6 R7 bank 3 1 20 Zone de 16 octets adressable 27 bits par bits 28 2F 30 37 38 3F 40 47 48 4F Zone de 80 octets pour 50 57 les donnes utilisateur 58 sans fonctions spciales 5F particulires 60 67 68 6F 70 77 7F 78

registres :

7 Si on veut crire la donne 34 dans la position d'adresse 05, les deux instructions suivantes sont quivalentes : MOV 05,#34 ou MOV R5,#34 Si on veut crire la donne 34 dans la position d'adresse 12, les deux instructions suivantes sont quivalentes : MOV PSW,xxx01xxxb MOV 0Ch,#34 ou MOV R4,#34

La mmoire adressable par bits


Les 16 octets suivants constituent une zone adressable bit par bit. (L'adressage par octet reste videmment valable) l'aide d'instructions du genre SETB ou CLR. La zone contient 128 bits adressables de 0 7Fh (0 127). Si on dsire positionner 1 le LSB de la position mmoire 22h, on peut crire : SETB 10h ou ORL 22h,#01h

La pile :

A la mise sous tension (RESET), le processeur place le dbut de la pile l'adresse 07h (SP=07h), ce qui signifie que l'criture dans la pile commencera l'adresse 08h. Dans le cas ou l'on dsire utiliser les banks de registres, il est prfrable de placer la pile dans un autre endroit en changeant la valeur su SP. (60h par exemple) II.3.4 Les registres spciaux SFR Le 8051 possde 21 registres spciaux ncessaire au fonctionnement et la configuration du microcontrleur, on y trouve aussi des registres pour accder aux ports d'E/S et aux timers. Les registres sont accessibles comme des positions mmoire sauf que leurs adresses se situent dans l'espace 80h FFh. Certains SFRs sot adressables bit par bit (Tableau II.3)
80 88 90 98 A0 A8 B0 B8 C0 C8 D0 D8 E0 E8 F0 F8 P0 TCON P1 SCON P2 IE P3 IP T2CON PSW ACC B
Tableau II.2 : cartographie des registres SFR 8051

Adr 20h 21h 22h 23h 24h 25h 26h 27h 28h 29h 2Ah 2Bh 2Ch 2Dh 2Eh 2Fh

b7 07 0F 17 1F 27 2F 37 3F 47 4F 57 5F 67 6F 77 7F

b6 06 0E 16 1E 26 2E 36 3E 46 4E 56 5E 66 6E 76 7E

b5 05 0D 15 1D 25 2D 35 3D 45 4D 55 5D 65 6D 75 7D

b4 04 0C 14 1C 24 2C 34 3C 44 4C 54 5C 64 6C 74 7C

b3 03 0B 13 1B 23 2B 33 3B 43 4B 53 5B 63 6B 73 7B

b2 02 0A 12 1A 22 2A 32 3A 42 4A 52 5A 62 6A 72 7A

b1 01 09 11 19 21 29 31 39 41 49 51 59 61 69 71 79

b0 00 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78

SP TMOD SBUF

DPL TL0

DPH TL1

PCON TH0 TH1

RCAP2L

RCAP2L

TL2

TH2

87 8F 97 9F A7 AF B7 BF C7 CF D7 DF E7 EF F7 FF

Registres de travail :
A: Accumulateur B: Accumulateur auxiliaire R0 R7 : Registres usage gnral et adressage

Ports d'E/S :
P0 P1 P2 P3 : : : : Port Port Port Port 0 1 0 1

Port srie :
SCON : SBUF : Configuration du port srie Lecture/Ecriture dans le port srie

Timers :
TCON : T2CON : TMOD : TH0 : TL0 : TH1 : TL1 : TH2 : TL2 : RCAP2H : RCAP2L : Configuration des Timers 0 et 1 Configuration du Timer 2 Configuration des modes de fonctionnement des Timers Octet haut de TIMER0 Octet bas de TIMER0 Octet haut de TIMER1 Octet bas de TIMER1 Octet haut de TIMER2 Octet bas de TIMER2 Octet haut du registre de chargement/capture de TIMER2 Octet bas du registre de chargement/capture de TIMER2

Interruptions :
IE : IP : Validation d'interruption Priorit des interruptions

Pointeurs d'adressage :
DPH : DPL : SP : Octet haut du registre DPTR (adressage mmoire externe) Octet bas du registre DPTR (adressage mmoire externe) Pointeur de pile

Configuration gnrale :
PCON : PSW : Contrle de consommation Registre d'tat, slection de bank

9
Symbole P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 P1 SCON SBUF P2 IE P3 IP T2CON* Fonction Port P0 Pointeur de pile poids faible de DPTR Poids fort de DPTR Mode de consommation Contrle de T1 et T2 Modes pour T0 et T1 poids faible du T0 poids faible du T1 Poids fort du Timer 0 Poids fort du Timer 1 Port P1 Contrle du port srie Donnes du port srie Port P2 Validation des int. Port P3 priorit des interruptions Contrle de T2 Adr. 80h 81h 82h 83h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 90h 98h 99h A0h A8h B0h B8h C8h CBh CCh CDh CEh D0h E0h F0h 87 AD7 86 AD6 Adresse au niveau du bit 85 84 83 82 AD5 AD4 AD3 AD2 81 AD1 80 AD0 Etat initial 11111111 00000111 00000000 00000000 0xxxxxxxx 00000000 00000000 00000000 00000000 00000000 00000000 11111111 00000000 00000000 11111111 0x000000 11111111 xx000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

-------SMOD 8F TF1 -------GATE

--------------GF1 GF0 8E 8D 8C 8B TR1 TF0 TR0 IE1 -----------------C/T M1 M0 GATE

---PD 8A IT1 ----C/T 89 IE0 ---M1

----IDL 88 IT0 ---M0

97 --9F SM0 A7 A15 AF EA B7 RD BF --CF TF2

96 --9E SM1

95 --9D SM2

94 ---

93 92 ----9C 9B REN TB8

91 90 T2EX* T2* 9A 99 98 RB8 TI RI

A6 A5 A4 A3 A2 A1 A0 A14 A13 A12 A11 A10 A9 A8 AE AD AC AB AA A9 A8 --ET2 ES ET1 EX1 ET0 EX0 B6 B5 B4 B3 B2 B1 B0 WR T1 T0 INT1 INT0 TxD RxD BE BD BC BB BA B9 B8 --PT2 PS PT1 PX1 PT0 PX0 CE CD CC CB CA C9 C8 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2

RCAP2L* Capture/rech du T2(bas) RCAP2H* Capture/rech du T2 (haut) TL2* poids faible du Timer 2 TH2* Poids fort du Timer 2 PSW registre d'tat et slection de bank ACC Accumulateur A B Usage gnral Obligatoire pour mul. et div.

D7 CY E7 F7

D6 AC E6 F6

D5 F0 E5 F5

D4 RS1 E4 F4

D3 RS0 E3 F3

D2 0V E2 F2

D1 --E1 F1

D0 P E0 F0

Tableau II.3 : cartographie dtaille des registres SFR du 8051/8052

Accumulateur A (E0h)
Il est rfrenc par ACC sur le tableau, cependant dans les instructions on le dsigne par A

Accumulateur B (F0h)
Il est utilis tout particulirement pour l'excution des multiplications et divisions. Mais il peut tre considr aussi comme un registre quelconque.

P0 : Port 0 (80h)
Registre d'accs au port P0
87 AD7 86 AD6 85 AD5 84 AD4 83 AD3 82 AD2 81 AD1 80 AD0

10

P1 : Port 1 (90h)
Registre d'accs au port P1
97 --96 --95 --94 --93 --92 --91 T2EX* 90 T2*

P2 : Port 2 (A0h)
Registre d'accs au port P2
A7 A15 A6 A14 A5 A13 A4 A12 A3 A11 A2 A10 A1 A9 A0 A8

P3 : Port 3 (B0h)
Registre d'accs au port P3
B7 RD B6 WR B5 T1 B4 T0 B3 INT1 B2 INT0 B1 TxD B0 RxD

PSW : Program Status Word (D0h)


PSW est un registre d'tat qui contient les drapeaux positionns aprs les instruction ainsi que les bits de slection de banks
D7 CY D6 AC D5 F0 D4 RS1 D3 RS0 D2 0V D1 --D0 P

P : parit de l'accumulateur = 1 si le nombre de 1 dans l'accu est impair (odd) OV : Overflow RS0, RS1 : pour slectionner un bank de registres FO : drapeau usage gnral AC : Carry auxiliaire pour les calculs en BCD CY : Carry

SP(81h)
Pointeur de pile. Lors d'un reset le pointeur est initialis 07H, et par consquent la pile dbute l'adresse 08H. L'utilisateur peut changer la valeur de SP pour placer la pile dans une autre zone de la RAM,

DPL, DPH (82h,83h)


Partie basse et partie haute du pointeur de donne DPTR utilis avec certaines instructions d'accs la RAM externe

SBUF (99h)
C'est le buffer d'entre sortie du port srie. Tout octet crit dans SBUF et transmis en srie sur TxD et tout octet reu sur RxD peut tre lu dans SBUF.

TL0, TH0 (90h, 92h)


Partie basse et haute du registre double qui permet d'accder au Timer T0

TL1, TH1 (91h, 93h)


Partie basse et haute du registre double qui permet d'accder au Timer T1

11

SCON : Serial Control (98h)


Ce registre adressable par bits sert la configuration du port srie
9F SM0 9E SM1 9D SM2 9C REN 9B TB8 9A RB8 99 TI 98 RI

Nous reviendrons sur le fonctionnement du port srie dans un prochain paragraphe

TCON : Timer Control (88h)


Ce registre adressable par bits permet le contrle des timers T0 et T1. Il contient aussi certains bits relatifs l'utilisation des interruptions externes.
8F TF1 8E TR1 8D TF0 8C TR0 8B IE1 8A IT1 89 IE0 88 IT0

TMOD : Timer mode (89h)


Ce registre permet de dfinir le mode de fonctionnement des timers T0 et T1
GATE C/T M1 M0 GATE C/T M1 M0

IE : Interrupt Enable (A8h)


Ce registre permet la validation ou l'interdiction des interruptions. Les premiers 7 bits permettent de valider les interruptions individuellement alors que le 8me bit permet une validation globale de toutes les interruptions.
AF EA AE --AD ET2 AC ES AB ET1 AA EX1 A9 ET0 A8 EX0

IP : Interrupt Priority (B8h)


Ce registre permet de dfinir la priorit relative pour chaque interruption. Sur le 8051 une interruption peut avoir deux niveaux de priorit, basse (0) et Haute (0). Une interruption ne peut tre interrompue que par une interruption de priorit suprieure.
BF --BE --BD PT2 BC PS BB PT1 BA PX1 B9 PT0 B8 PX0

PCON : Power Control (87h)


Registre de contrle de la consommation du 8051

TL2, TH2 (CDh, CEh) (8052)


Partie basse et haute du registre double qui permet d'accder au Timer T2

RCAP2L, RCAP2H (CBh, CCh) (8052)


Partie basse et partie haute du registre de capture qui permet sous certaine condition de faire une recopie du timer 2

T2CON : Timer Control (C8h)


Ce registre adressable par bits permet le contrle de TIMER2.
CF TF2 CE EXF2 CD RCLK CC CB TCLK EXEN2 CA TR2 C9 C/T2 C8 CP/RL2

12

III Modes d'adressage


III.1 Adressage Immdiat
Ce n'est pas rellement un adressage car la donne constituant l'oprande est prcise dans l'instruction. Dans l'criture en assembleur, on place un signe # devant la donne pour la diffrentier d'une adresse.

Exemples: MOV A,#40h : Chargement de l'octet 40h dans l'accumulateur MOV A,#40 : charger la valeur 40 dcimal dans l'accumulateur MOV A,#11001101B : charger la valeur binaire dans l'accumulateur MOV P1,#80H : envoie la valeur 80h sur le port P1 MOV 40h,#5AH : Charger la valeur 5Ah dans la case mmoire d'adresse 40h

III.2 Adressage Registre


L'oprande est contenu dans un registre ADD A,R4 INC A INC R3

III.3 Adressage direct


C'est l'adresse de l'oprande qui est prcise dans l'instruction. L'adresse n'a que 8 bits, Seule la RAM interne et les SFRs peuvent tre adresss de cette manire. Il n'existe pas d'adressage direct pour la RAM externe, il faut passer par le registre DPTR.

Exemple: MOV A,45h MOV R0,30h MOV A,P1 ANL A,78


: : : : Charger l'accumulateur avec le contenu de la case mmoire 45h Charger le registre R0 avec le contenu de la case mmoire 30h Charger l'accumulateur avec le mot en entre sur le port P1 Une opration ET logique est effectue entre le contenu de A et le contenu de la case mmoire 78 (4Eh)

III.4 Adressage Indirect (index)


L'instruction spcifie un registre qui contient l'adresse de l'oprande. Les mmoires internes et externes sont accessibles par ce type d'adressage (sauf les registres SFR). 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 le bank actif. Dans le cas de l'adressage 16 bits, qui ne concerne que la mmoire externe, le registre d'index est le DPTR (16 bits). L'adressage indirect est dsign dans l'assembleur par le signe @.

Exemple:

MOV A,@R0

: Charger l'accumulateur avec le contenu de la case dont l'adresse est contenue dans registre R0 du bank actif MOV @R1,P1 : Transfrer le contenu du port P1 dans la case mmoire dont l'adresse est le contenu du registre R1 du bank actif.

13 : ET logique entre l'accumulateur et la case mmoire dont l'adresse est le contenu du registre R0 du bank actif MOVX @DPTR,A : Charge la mmoire dont l'adresse est contenue dans DPTR dans l'accumulateur. Le X du mnmonique indique qu'il s'agit d'une mmoire extrieure. L'utilisation des registres d'index R0 et R1 avec la mmoire externe peut s'avrer assez souple, mais elle permet seulement l'adressage l'intrieur d'une page mmoire de 256 octets. L'adresse de la page doit tre prcise l'aide du port P2. Les 3 instructions suivantes permettent de charger l'accumulateur avec le contenu de la case mmoire externe d'adresse 43A0h ANL A,@R0

MOV P2,#43h MOV R0,#A0h MOVX A,@R0

III.5 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 en dbut de RAM interne (16 octets de 20H 2FH ). Ces 128 bits qui commencent Bit 0 de la case 20h et se terminent au bit 7 de la case 2F ont des adresses qui vont de 00 7Fh. Sont galement accessibles de cette faon les bits des cases du SFR dont l'adresse en hexadcimal se termine par 0 ou 8, 80H 88H 90H 98H etc... L'un des oprandes est toujours le carry C : MOV C,45h MOV P1.3,C MOV RS0,C CLR C CLR P3,6 SETB RS1 CPL P1.1 SETB P3.2 : : : : : : : : Chargement de C avec le bit d'adresse 45h Le contenu de C est transfr dans le bit 3 du port P1 Le bit C est plac dans le bit RS0 du Registre PSW mise zro de C mise zro du bit 6 de P3 mise 1 de RS1 Inversion du bit 1 de P1 Mise 1 du bit 2 du port 3

IV Jeux d'instruction du 8051


Signification des symboles utiliss: Rn direct @Ri #data #data16 bit rel addr11 addr16 Un des registres actifs R0 R7 Adresse d'un octet de RAM interne, d'un port, ou SFR Adressage indirect par registre R0 ou R1 Donne 8 bits Donne 16 bits Adresse au niveau du bit dplacement 8 bits sign relatif au PC : de -128 +127 Adresse limite au bloc de 2Ko dans lequel figure l'instruction Adresse sur l'espace de 64Ko

14

IV.1 Instructions de transfert de donnes


Les transferts affectant l'accumulateur s'effectuent en 1S, les autres en 2s.

MOV : dplacement de donne dans la mmoire interne


MOV Dest,Source : recopie Source dans Dest, aucun drapeau n'est positionn. Notons que l'on peut transfrer des donnes directement d'une case mmoire interne dans une autre sans passer par l'accumulateur. Les instruction du genre MOV Rn,Rn ne sont pas autoris. Pour raliser M0V R2,R4 avec le bank 0 actif, il faut faire MOV 02,04. Si c'est le bank 1 qui est actif, pour raliser MOV R2,R4 il faut faire MOV 0Ah,0Ch Syntaxe MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data MOV Rn, A MOV Rn, direct MOV Rn, #data MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, @Ri MOV direct, #data MOV @Ri, A MOV @Ri, direct MOV @Ri, #data MOV DPTR, #data16 MOV bit, C MOV C, bit Code Octets cycles Flags E8+n 1 1 E5 2 1 E6+i 1 1 74 2 1 F8+n 1 1 A8+n 2 2 78+n 2 1 F5 2 1 88+n 2 2 85 3 2 86+i 2 2 75 3 2 F2+i 1 1 A6+i 2 2 76+i 2 1 90 3 2 92 2 2 A2 2 1 C

PUSH et POP

Sauvegarder ou rcuprer une valeur dans la pile. PUSH incrmente SP puis crit l'oprande dans la case point par ce dernier POP lit la valeur pointe par SP avant de dcrmenter ce dernier

XCH
XCH A,<byte> : change les donnes de l'accumulateur A et de l'octet adress.

XCHD
XCHD A,@Ri : change les quartets de poids faible entre l'accu A et l'octet adress. Syntaxe PUSH direct POP direct XCH A, Rn XCH A, direct XCH A, @Ri XCHD A, @Ri Code Octets cycles C0 2 2 D0 2 2 C8+n 1 1 C5 2 1 C6+i 1 1 D6+i 1 1

MOVX
MOVX <dest>, <source> permet la lecture ou l'criture d'un octet en RAM externe en passant toujours par l'accumulateur. L'adressage indirect est utilis

15

MOVC
MOVC A, @A+<base-reg> permet de lire un octet dans la mmoire programme. Syntaxe Code Octets cycles MOVX A,@Ri E2+i 1 2 MOVX A,@DPTR E0 1 2 MOVX @Ri,A F2+i 1 2 MOVX @DPTR,A F0 1 2 MOVC A,@A+DPTR 93 1 2 MOVC A,@A+PC 83 1 2

IV.2 Instructions arithmtiques


ADD
ADD A, <byte> : additionne un octet avec l'accu A, rsultat dans A. Syntaxe ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data ADDC A, Rn ADDC A, direct ADDC A, @Ri ADDC A, #data SUBB A, Rn SUBB A, direct SUBB A, @Ri SUBB A, #data INC @Ri INC A INC direct INC Rn INC DPTR DEC @Ri DEC A DEC direct DEC Rn MUL AB DIV AB DA A Code Octets cycles Flags 28+n 1 1 C, AC, O 25 2 1 C, AC, O 26+i 1 1 C, AC, O 24 2 1 C, AC, O 38+n 1 1 C, AC, O 35 2 1 C, AC, O 36+i 1 1 C, AC, O 34 2 1 C, AC, O 98+n 1 1 C, AC, O 95 2 1 C, AC, O 96+i 1 1 C, AC, O 94 2 1 C, AC, O 06+i 1 1 04 1 1 05 2 1 08+n 1 1 A3 1 2 16+i 1 1 14 1 1 15 2 1 18+n 1 1 A4 1 4 C, O 84 1 4 C, O D4 1 1 C

ADDC
ADDC A, <byte> : additionne un octet, l'accu A et la retenue, rsultat dans A.

SUBB
SUBB A, <byte> : soustrait un octet et la retenue du contenu de A, rsultat dans A.

INC
INC <byte> : octet ou DPTR. incrmente un

DEC
DEC <byte> octet. : dcrmente un

MULL

MUL AB : multiplie l'accu A et l'accu B, rsultat : octet faible dans A et octet fort dans B

DIV
DIV AB : divise le contenu de A par le contenu de B, quotient dans A et reste dans B.

DA
DA A : ajustement dcimal de A.

16

IV.3 Instructions logiques et boolennes ANL


ANL <dest>, <source> : ralise un ET logique entre source et dest, rsultat dans dest.

ORL
ORL <dest>, <source> : ralise un OU logique entre source et dest, rsultat dans dest.

XRL
XRL <dest>, <source> : ralise un OU exlusif entre source et dest, rsultat dans dest.

CLR
met l'accumulateur ou un bit 0

CPL
Complmente l'accumulateur ou un bit

RL, RLC, RR, RRC, SWAP


RL A : rotation vers la gauche du contenu de A RLC A : rotation vers la gauche du contenu de A travers la retenue RR A : rotation vers la droite du contenu de A RRC A : rotation vers la droite du contenu de A travers la retenue SWAP A : change le quartet de poids faible avec celui de poids fort de A

SETB
SETB <bit> : met un bit 1

IV.4 Les instruction de branchement


ACALL

ANL A, #data ANL A, @Ri ANL A, direct ANL A, Rn ANL direct, #data ANL direct, A ANL C, /bit ANL C, bit ORL A, #data ORL A,@Ri ORL A, direct ORL A, Rn ORL direct, #data ORL direct, A ORL C, /bit ORL C, bit XRL A, #data XRL A, @Ri XRL A, direct XRL A, Rn XRL direct, #data XRL direct, A CLR A CLR bit CLR C CPL A CPL bit CPL C RL A RLC A RR A RRC A SWAP A SETB bit SETB C

54 56+i 55 58+n 53 52 B0 82 44 46+i 45 48+n 43 42 A0 72 64 66+i 65 68+n 63 62 E4 C2 C3 F4 B2 B3 23 33 03 13 C4 D2 D3

2 1 2 1 3 2 2 2 2 1 2 1 3 2 2 2 2 1 2 1 3 2 1 2 1 1 2 1 1 1 1 1 1 2 1

1 1 1 1 2 1 2 2 1 1 1 1 2 1 2 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1

C C C C C=0 C C C -

ACALL addr11 : ralise un saut absolu inconditionnel vers un sous programme commenant l'adresse addr11. Les 11 bits de addr11 sont substitus au 11 bits de poids faible du PC, ce qui signifie que la destination reste dans le mme bloc de 2K que l'instruction courante. Le codage se fait d'une faon particulire : les 3 bits de poids fort de addr11 compltent le code Opration dont les 5 bits bas sont gaux 11h Ad10 Ad9 Ad8 Code opration Ad7 Ad6 Ad5 Ad4 Ad3 Ad2 Ad1 Ad0

17 Si on note Ad10 Ad9 Ad8 = page = P On obtient le code instruction : et Ad7 Ad6 Ad5 Ad4 Ad3 Ad2 Ad1 Ad0 = Addr8

11h+20hxP Addr8 AJMP

(P variant entre 0 et 7)

AJMP addr11 : ralise un saut absolu inconditionnel vers l'instruction d'adresse addr11. La diffrence avec ACALL est que ici on ne saute pas vers un sous programme, il n'est pas ncessaire d'empiler le PC pour pouvoir retourner aprs l'excution du sous programme. Le codage se fait de la mme faon que ACALL sauf que COL = 01h : 01h+20hxP Addr8 (P variant entre 0 et 7)

LCALL
LCALL addr16 : ralise un saut long absolu inconditionnel vers un sous programme commenant l'adresse addr16. Pour reprer la position de retour, le PC est incrment de 3 puis empil. Il sera dpil au retour du sous programme.

LJMP
LJMP addr16 : ralise un saut long absolu inconditionnel vers la position d'adresse addr16.

SJMP
SJMP rel : ralise un saut court relatif au PC. On peut donc sauter dans l'intervalle : [PC-128, PC+127]

JMP
JMP @A+DPTR : ralise un saut long absolu inconditionnel vers la position d'adresse A+DPTR. (Adressage indirect) Syntaxe Code instruction Octets cycles ACALL adr11 11h+20hxP Addr8 2 2 AJMP addr11 01h+20hxP Addr8 2 2 LCALL addr16 12h addr16 3 2 LJMP addr16 02h addr16 3 2 SJMP rel 80h rel 2 2 JMP @A+DPTR 73h 1 2

IV.5 Les instruction de branchement conditionnels


JZ JNZ JC JNC JB JNB JBC

rel : saut si A=0 rel : saut si A<>0 rel : saut si retenue 1 rel : saut si retenue 0 bit,rel : saut si bit 1 bit,rel : saut si bit 0 bit,rel : saut si le bit est 1 et mise zero de celui-ci

18

CJNE <byte1>, <byte2>, <rel> : saut si byte1 et byte2 sont diffrents DJNZ <byte>, rel : dcrmente byte et saut si rsultat diffrent de 0 JZ rel 60 22 JNZ rel 70 22 JC rel 40 22 JNC rel 50 22 JB bit, rel 20 32 JNB bit, rel 30 32 JBC bit,rel 10 32 CJNE @Ri, #data, rel B6+i 3 2 CJNE A, #data, rel B4 32 CJNE A, direct, rel B5 32 CJNE Rn, #data, rel E8+n 3 2 DJNZ direct, rel D5 32 DJNZ Rn, rel D8+n 2 2

IV.6 Instruction Diverses


RET : Retour de sous programme RETI : Retour d'interruption NOP : No Operation
Syntaxe CO Octets cycles RET 22h 1 2 IRET 32h 1 2 NOP 00 1 1

19
Syntaxe Description Octets cycles Flags Instruction de Transfert MOV A, Rn Copier le contenu du registre dans l'Acc. 1 1 MOV A, direct Copier le contenu de la case adresse dans l'Acc. 2 1 MOV A, @Ri Copier le contenu de la case adresse par Ri dans l'Acc. 1 1 MOV A, #data Copier la donne dans l'Acc. 2 1 MOV Rn, A Copier l'Acc dans le registre 1 1 MOV Rn, direct Copier la mmoire adresse dans le registre 2 2 MOV Rn, #data Copier la donne dans le registre 2 1 MOV direct, A Copier l'Acc. dans la mmoire adresse 2 1 MOV direct, Rn Copier le registre dans la mmoire adresse 2 2 MOV direct, direct Copier mmoire dans mmoire 3 2 MOV direct, @Ri Copier mmoire dans mmoire 2 2 MOV direct, #data Copier donne dans mmoire 3 2 MOV @Ri, A Copier l'Acc. dans mmoire 1 1 MOV @Ri, direct Copier mmoire dans mmoire 2 2 MOV @Ri, #data Copier donne dans mmoire 2 1 MOV DPTR, #data16 Copier la donne 16bits dans DPTR 3 2 PUSH direct Empiler la mmoire adresse 2 2 POP direct Dpiler un octet dans la mmoire adress 2 2 XCH A, Rn Echanger l'Acc. avec le registre 1 1 XCH A, direct Echanger A avec la mmoire 2 1 XCH A, @Ri Echanger A avec la mmoire 1 1 XCHD A, @Ri Echange le digit bas de A avec celui de la mmoire 1 1 MOVX A,@Ri Copier la mmoire externe dans A 1 2 MOVX A,@DPTR Copier la mmoire externe adresse par DPTR dans A 1 2 MOVX @Ri,A Copier A dans la mmoire externe 1 2 MOVX @DPTR,A Copier A dans la mmoire externe pointe par DPTR 1 2 MOVC A,@A+DPTR Copier la mmoire externe pointe par A+DPTR dans A 1 2 MOVC A,@A+PC Copier la mmoire externe pointe par A+PC dans A 1 2 Instruction Arithmtiques ADD A, Rn A = A + Rn 1 1 C, AC, O ADD A, direct A = A + [direct] 2 1 C, AC, O ADD A, @Ri A = A + [Ri] 1 1 C, AC, O ADD A, #data A = A + donne immdiate 2 1 C, AC, O ADDC A, Rn A = A + Rn + C 1 1 C, AC, O ADDC A, direct A = A + [direct] + C 2 1 C, AC, O ADDC A, @Ri A = A + [Ri] + C 1 1 C, AC, O ADDC A, #data A = A + donne immdiate + C 2 1 C, AC, O SUBB A, Rn A = A (Rn + C) 1 1 C, AC, O SUBB A, direct A = A - ([direct] + C) 2 1 C, AC, O SUBB A, @Ri A = A - ([Ri] + C) 1 1 C, AC, O SUBB A, #data A = A (donne immdiate + C) 2 1 C, AC, O INC @Ri Incrmenter la mmoire pointe par Ri 1 1 INC A Incrmenter A 1 1 INC direct Incrmenter mmoire adresse 2 1 INC Rn Incrmenter registre 1 1 INC DPTR Incrmenter le registre DPTR 1 2 DEC @Ri Dcrmenter la mmoire pointe par Ri 1 1 DEC A Dcrmenter A 1 1 DEC direct Dcrmenter mmoire adresse 2 1 DEC Rn Dcrmenter registre 1 1 C, O MUL AB 1 4 A x B B:A (non sign) C, O DIV AB 1 4 A / B A , reste B (non sign) DA A Ajustement dcimal de A aprs une addition 1 1 C Instructions logiques ANL A, #data A = A ET donne 2 1 ANL A, @Ri A = A ET mmoire 1 1 ANL A, direct A = A ET mmoire 2 1 -

20
ANL A, Rn A = A ET registre ANL direct, #data Mmoire = mmoire ET donne ANL direct, A Mmoire = mmoire ET A ORL A, #data A = A OU donne ORL A,@Ri A = A OU mmoire ORL A, direct A = A OU mmoire ORL A, Rn A = A OU registre ORL direct, #data Mmoire = mmoire OU donne ORL direct, A Mmoire = mmoire OU A XRL A, #data A = A XOR donne XRL A, @Ri A = A XOR mmoire XRL A, direct A = A XOR mmoire XRL A, Rn A = A XOR registre XRL direct, #data Mmoire = mmoire XOR donne XRL direct, A Mmoire = mmoire XOR A CLR A Mettre A zro CPL A Complmenter A RL A Rotation gauche de A RLC A Rotation gauche de A travers le Cy RR A Rotation droite de A RRC A Rotation droite de A travers Cy SWAP A Echange les digits de A Instructions boolennes sur bits CLR bitadr Clear bit CLR C Clear Cy CPL bitadr Complmenter bit CPL C Complmenter Cy SETB bitadr Positionner bit SETB C Positionner Cy ANL C, /bitadr C = C ET /bit ANL C, bitadr C = C ET bit ORL C, /bit C = C OR /bit ORL C, bit C = C OR bit MOV bitAdr, C Copier l'indicateur Cy dans le bit adress MOV C, bit Adr Copier le bit adress dans l'indicateur Cy Instructions de branchement AJMP addr11 Saut avec adresse absolue sur 11 bits LJMP addr16 Branchement inconditionnel adresse 16 bits SJMP rel Branchement court avec adressage relatif JMP @A+DPTR Saut l'instruction d'adresse par A+DPTR JZ rel Saut relatif si A= 0 JNZ rel Saut relatif si A 0 JC rel Saut relatif si Cy = 1 JNC rel Saut relatif si Cy = 0 JB bitadr, rel Saut relatif si bit = 1 JNB bitadr, rel Saut relatif si bit = 0 JBC bitadr,rel Saut relatif si bit = 1 puis RAZ le bit CJNE @Ri, #data, rel Comparer mmoire et donne et saut si diffrent CJNE A, #data, rel Comparer A et donne et saut si diffrent CJNE A, direct, rel Comparer A et mmoire et saut si diffrent CJNE Rn, #data, rel Comparer registre et donne et saut si diffrent DJNZ direct, rel Dcrmenter mmoire et saut si diffrent de zro DJNZ Rn, rel Dcrmenter registre et saut si diffrent de zro Instruction d'appel et de retour de procdure ACALL adr11 Appel procdure avec adresse absolue sur 11 bits LCALL addr16 Appel de procdure adresse 16 bits RET Retour de procdure IRET Retour de procdure d'interruption Autre NOP Ne fait rien 1 3 2 2 1 2 1 3 2 2 1 2 1 3 2 1 1 1 1 1 1 1 2 1 2 1 2 1 2 2 2 2 2 2 2 3 2 1 2 2 2 2 3 3 3 3 3 3 3 3 2 2 3 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 C C C=0 C C C C C C

21

Les interruptions
Le 8051 possde 5 sources d'interruption, le 8052 en possde une de plus : Evnement externe sur l'entre INT0 (P3.2) Evnement externe sur l'entre INT1 (P3.3) Dbordement du TIMER0 Dbordement du TIMER1 Emission ou rception d'u caractre sur le port srie Dbordement du Timer 2 ou dclenchement du mode chargement/capture de ce dernier par l'entre T2EX (P1.1)

V.1

Gestion des interruptions

D'une manire gnrale, chaque interruption est gre par 3 bits situs dans des registres SFR : Un drapeau, qui est un bit positionn quant l'vnement dclencheur intervient, Un bit de validation : Quand l'vnement dclencheur intervient si le bit de validation est positionn, l'interruption peut avoir lieu sinon elle est ignore, Un bit de priorit : Avec un bit, chaque interruption a 2 niveaux de priorit, (0=basse), (1=haute). Quand l'vnement dclencheur intervient, mme si l'interruption en question est valide, si une interruption de mme ou de niveau suprieur est en train d'tre excute, alors notre l'interruption devra attendre.

Le bit EA situ la position 7 du registre SFR IE permet la validation/inhibition globale de toutes les interruptions.

V.2

Droulement d'une interruption

Quand un vnement dclencheur d'une interruption se produit, le drapeau correspondant est positionn (voir tableau ci-dessous), si le bit de validation est positionn et l'interruption est prioritaire alors l'interruption est dclenche et les taches suivantes sont ralises : - La valeur du Program Counter est empile - Les interruptions de mme ou de priorit infrieures sont masques - Dans le cas des interruptions INT0/1 ou TIMER0/1, le drapeau correspondant est remis zro. Pour les autre interruptions, le programmeur doit remettre lui mme ce drapeau zro au dbut de la routine d'interruption. - Le PC est charge par l'adresse du vecteur d'interruption correspondant ce qui transfert l'excution au dbut de ce vecteur ou doit rsider la routine d'interruption. - A l'excution de l'instruction RETI qui doit terminer chaque routine d'interruption, le processeur dpile le PC pour retrouver sa place dans le programme principal et remet le statut des interruptions dans l'tat o il l'a trouv avant de commencer cette interruption

22
d'interruption INT0 (P3.2) INT1 (P3.3) TIMER0 Overflow TIMER1 Overflow PORT SERIE TIMER2 Overflow TIMER2 capture/reload Flag IE0 (TCON.1) IE1 (TCON.3) TF0 (TCON.5) TF1 (TCON.7) RI ou TI (SCON 0 et 1) TF2 (T2CON.7) EXF2 (T2CON.6) Validation EX0 (IE.0) EX1 (IE.2) ET0 (IE.1) ET1 (IE.3) ES (IE.4) ET2 (IE.5) EXEN2(T2CON.3) ET2(IE.5) EA (IE.7) vecteur 0003H 0013H 000BH 001BH 0023H 002BH Priorit PX0 (IP.0) PX1 (IP.2) PT0 (IP.1) PT1 (IP.3) PS (IP.4) PT2 (IP.5) EDG IT0 (TCON.0) IT1 (TCON.2)

sur T2EX(P1.1)

Validation globale de toutes les interruptions

Tableau V.1 : Interruptions du 8051/8052

VI Les timers
Le 8051 possde deux timers 16 bits TIMER0 et TIMER1 dont le fonctionnement est dtermin par les registres de configuration TMOD et TCON. Les signaux horloges de ces circuits proviennent soit de l'horloge interne du systme (mode Timer) soit des entres externes T0 (P3.4) et T1 (P3.5) (mode Compteur). Le dbordement de ces timers positionne les drapeaux TF0 ou TF1 qui dclenchent les interruptions correspondantes si elles ne sont pas masques. Les deux Timers ont un fonctionnement identique. il sont accessibles par l'intermdiaire des registres 8 bits TLx et THx qui constituent leurs parties basse et haute
SFR TH0 TL0 TH1 TL1 TCON TMOD Description Timer 0 High Byte Timer 0 Low Byte Timer 1 High Byte Timer 1 Low Byte Timer Control Timer Mode Adresse 8Ch 8Ah 8Dh 8Bh 88h 89h

Horloge systme

/12

C/T0 TH0 TL0

Horloge systme

/12

C/T1 TH1 TL1

T0 (P3.4) TR0 INT0 (P3.2) gate0 TCON (88h)


Bit 7 6 5 4 Nom TF1 TR1 TF0 TR0 Adr. 8Fh 8Eh 8Dh 8Ch Ce Ce Ce Ce

T1 (P3.5) TF0 T0OI TR1 INT1 (P3.3) gate1 TF1 T1OI

description drapeau est positionn par le microcontrleur quand le TIMER1 dborde bit permet de dmarrer/arrter (1/0) le TIMER 1 (voir aussi le bit GATE1 de TMOD) drapeau est positionn par le microcontrleur quand le TIMER 0 dborde bit permet de dmarrer/arrter (1/0) le TIMER 0 (voir aussi le bit GATE0 de TMOD)

23 TMOD (89h) SFR


Bit Nom description 7 GATE1 Quand ce bit est positionn, TIMER1 ne peut fonctionner que si l'entre INT1 (P3.3) est haute. Quand il est zro, TIMER1 peut fonctionner indpendamment de l'entre INT1 6 C/T1 Si bit est positionn, TIMER1 fonctionne en compteur d'vnements sur l'entre T1 (P3.5). Si ce bit est zro, TIMER1 est incrment par l'horloge systme 5 T1M1 Timer1 mode (voir ci-dessous) 4 T1M0 Timer1 mode (voir ci-dessous) 3 GATE0 Quand ce bit est positionn, TIMER0 ne peut fonctionner que si l'entre INT0 (P3.2) est haute. Quand il est zro, TIMER0 peut fonctionner indpendamment de l'entre INT0 2 C/T0 Si bit est positionn, TIMER0 fonctionne en compteur d'vnements sur l'entre T0 (P3.4). Si ce bit est zro, TIMER0 est incrment par l'horloge systme 1 T0M1 Timer0 mode (voir ci-dessous) 0 T0M0 Timer0 mode (voir ci-dessous) TxM1 TxM0 Mode Description 0 0 0 13-bit Timer. 0 1 1 16-bit Timer 1 0 2 8-bit auto-reload 1 1 3 Split timer mode

Mode 0 : 13 bits
Ce mode sert surtout garder la compatibilit avec le 8048, le prdcesseur du 8051. Il est peut utilis dans les nouveaux dveloppements. Seuls les bits 0 4 de TLx sont utiliss.

Mode 1 : 16 bits
C'est le mode le plus utilis. Avec 16 bits, on a une priode de comptage de 65536 cycles machine.

Mode 2 : 8 bits auto-reload


Dans ce mode c'est TLx qui fonctionne en Timer/compteur, Quand il dborde, au lieu d'tre charg par 0, il est charg par la valeur contenue dans THx. Ce mode est souvent utilis pour dfinir la vitesse de communication du port srie.

Mode 3 : Split-Timer
Dans ce mode Les deux registres TL0 et TH0 du Timer 0 fonctionnent comme deux timers 8 bits indpendants. TL0 utilisent tous les bits de contrle de TIMER0 et dclanche (quand il dborde) l'interruption T0OI : TIMER0 Overflow interrupt. TH0 emprunte les bits TR1 et TF1 TIMER1 et dclanche (quand il dborde) l'interruption T1OI : TIMER1 Overflow interrupt . Plac en mode 3, TIMER1 est arrt exactement comme si on a fait TR1 = 0. Par contre, Si TIMER0 est en mode 3, TIMER1 peut tre utilis en mode 0,1 ou 2 mais il ne peut tre contrl par le bit TR1 car il est affecte TH0 et il ne dclenche pas d'interruption quand il dborde.

24 Horloge systme

/12

C/T0 TL0 TF0 T0OI

T0 (P3.4) TR0 INT0 (P3.2) gate0 TR1


Figure VI.1 : TIMER0 en mode 3

Horloge systme

/12

TH0

TF1

T1OI

Horloge systme

/12

C/T1 TH1 TL1

T1 (P3.5) INT1 (P3.3) gate1


Figure VI.2 : TIMER1 quand TIMER0 est en mode 3

VI.1 Le TIMER2 du 8052


description Le 8052 contient 3 timers; TIMER0, TIMER1 et SFR T2CON Contrle de T2 TIMER2. Les deux premiers fonctionnent exactement TL2 poids faible du Timer 2 comme ceux du 8051. TIMER2 est gr par les registres TH2 Poids fort du Timer 2 SFR suivants, RCAP2L Capture/recharge de TL2 adr C8h CDh CEh CBh RCAP2H Capture/recharge du TH2 CCh

VI.1.1 TIMER2 en mode Auto-Reload A la diffrence de TIMER0 et TIMER1, TIMER2 possde un mode de recharge (autoreload) compltement 16 bits. Quand un auto-reload intervient, TL2 est charg par le contenu du registre RCAP2L et TH2 est charg par la valeur du registre RCAP2H. Un auto-reload intervient soit aprs dbordement soit aprs un front descendant sur T2EX (P1.1), voir tableau ci-dessus. VI.1.2 TIMER2 en mode capture Quand une capture intervient, le contenu de TIMER2 (TH2/TL2) est recopi dans la paire de registre RCAP2H/RCAP2L. Une capture intervient au front descendant sur T2EX (P1.1), voir tableau ci-dessus.

25 T2CON BIT NOM


7 ADR DESCRIPTION Timer 2 Overflow. Ce bit est le drapeau de l'interruption T2OI (TIMER2 Overflow Interrupt), il positionn quand TIMER2 dborde, si l'interruption est valide par ET2 TF2 CFh (IE.5), elle sera dclenche. Quand TIMER2 est utilis comme gnrateur de rythme pour le port srie, TF2 n'est pas positionn au dbordement. Timer 2 External Flag. C'est le drapeau extrieur de l'interruption T2CRI (TIMER2 Capture Reload Interrupt). Si le bit EXEN2 = 1, EXF2 sera positionn par un front EXF2 CEh descendant sur l'entre T2EX (P1.1) qui provoque une recharge ou une capture de TIMER2. Si l'interruption est valide par ET2 (IE.5), elle sera dclenche. T2OI et T2CRI on le mme vecteur d'interruption. (Voir Tableau V.1 : page22) Timer 2 Receive Clock. Quand ce bit est positionn, TIMER2 est utilis pour dterminer RCLK CDh le rythme de rception du port srie. S'il n'est pas positionn, c'est TIMER1 qui joue ce rle. Timer 2 Transmit Clock. Quand ce bit est positionn, TIMER2 est utilis pour TCLK CCh dterminer le rythme de transmission du port srie. S'il n'est pas positionn, c'est TIMER1 qui joue ce rle. Timer 2 External Enable. Si ce bit est positionn, un front descendant sur T2EX (P1.1) EXEN2 CBh dclenche une recharge ou une capture de TIMER2. Le drapeau EXF2 est lev et l'interruption T2CRI sera dclenche si elle est valide. TR2 CAh Timer 2 Run. Ce bit de dmarrer ou d'arrter TIMER2. Timer 2 Counter/Interval Timer. Si bit est positionn, TIMER2 fonctionne en compteur C/T2 C9h d'vnements (front descendant) sur l'entre T2 (P1.0). Si ce bit est zro, TIMER2 fonctionne en mode TIMER, il est incrment par l'horloge systme Timer 2 Capture/Reload. Si ce bit est zro, un auto-reload intervient au dbordement CP/RL2 C8h de TIMER2 ou au front descendant sur T2EX (P1.1). Si ce bit est positionn il y a capture de TIMER2 au front descendant sur T2EX (P1.1)
Tableau VI.1 : T2CON ; registre de control de TIMER2

5 4 3 2 1 0

VI.1.3 Les drapeau de l'interruption TIMER2 Les deux interruptions T2OI et T2CRI de TIMER2 ont chacune son drapeau mais elle ont le mme vecteur d'interruption. Pour ce fait Quand une interruption intervient, le processeur se branche au vecteur d'interruption mais ne touche pas aux drapeaux afin que le programmeur puisse dterminer de quelle interruption il s'agit. Il revient alors au programme utilisateur de baisser le drapeau avant de quitter la routine d'interruption pour viter que l'interruption ne soit dclenche de nouveau, en effet, durant l'excution de l'instruction "RETI", le processeur revalide les interruptions de mme priorit.

VII Le port srie


Le 8051 dispose d'un port srie qui permet de communiquer avec l'exterieur sur les bornes RxD (P3.0) et TxD (P3.1). La configuration du port se fait par le registre SCON et la lecture criture dans le port se fait par le registre SBUF. Le registre SBUF est une passerelle vers deux registres physiquement spars, un pour la rception et l'autre pour la transmission. A la rception, le port possde un buffer de 1 octet, il en rsulte que le port peut commencer recevoir un nouvel octet avant que l'octet prsent dans le registre de rception ne soit lu. Nanmoins, la fin de la rception du nouvel octet, celui-ci est copi dans le registre de rception en crasant l'ancien octet.

26 Bit Name Adr Description 7 SM0 9Fh Dtermine le mode de fonctionnement (voir tableau ci-dessous) 6 SM1 9Eh Dtermine le mode de fonctionnement (voir tableau ci-dessous) 5 SM2 9Dh Validation du mode multiprocesseur 4 REN 9Ch Validation de rception 3 TB8 9Bh 9me bit transmettre en mode UART 9 bits 2 RB8 9Ah 9me bit reu en mode UART 9 bits 1 TI 99h Drapeau de fin de transmission 0 RI 98h Drapeau de fin de rception
Tableau VII.1 : SCON : registre de configuration du port srie

SM0 SM1 Mode Explanation Baud Rate 0 0 0 Registre dcalage 8 bits Oscillator / 12 0 1 1 8-bit UART Set by Timer 1 (*) 1 0 2 9-bit UART Oscillator / 32 (*) 1 1 3 9-bit UART Set by Timer 1 (*)
Tableau VII.2 : mode de fonctionnement --- (*) vitesse double si SMOD = 1

VII.1 Modes de fonctionnement


Le port srie peut fonctionner selon 4 modes diffrents. Le choix des modes se fait par les bits SM0 et SM1 du registre SCON :

Mode 0 : 8 bit Shift Register


8 bits sont transmis sur TxD ou reus sur RxD. La vitesse de transmission est Fosc/12

Mode 1 : 8 bit UART


10 bits sont transmis sur TxD ou reus sur RxD : - Un bit de start (toujours 0) - 8 bits de donne (LSB d'abord) - Un bit de stop (toujours 1) En rception le bit de stop copi la position RB8 du registre SCON Pour le 8051, la vitesse de transmission est fixe par TIMER1. Pour le 8052 on peut utiliser soit TIMER1 soit TIMER2. Attention, le bit SMOD (TCON.7) double la vitesse.

Mode 2 : 9 bit UART


11 bits sont transmis sur TxD ou reus sur RxD : - Un bit de start (toujours 0) - 8 bits de donne (LSB d'abord) - Un bit programmable appel 9me bit - Un bit de stop (toujours 1) En transmission, le bit TB8 de SCON est transmis comme 9me bit, En rception, le 9me bit est recopi dans le bit RB8 de SCON. Le stop bit est ignor. La vitesse de transmission est fosc/64 ou fosc/32 selon la valeur du bit SMOD

Mode 3: 9 bit UART


Le mode 3 est identique au mode 2 part le fait que la vitesse de transmission est fixe

27 par TIMER1 ou TIMER2 Les modes 2 et 3 sont utiliss essentiellement en mode multiprocesseur o le 9me bit est utilis pour adresser un processeur parmi 2 lors d'une communication multipoints.

VII.2 Transmission d'un Octet


Dans tous les modes, une transmission commence aprs chaque criture dans le registre SBUF. La transmission se fait en srie, elle n'est donc pas instantane, le processeur nous informe de la fin de transmission en positionnant le flag TI. Ce bit peut dclencher l'interruption du port srie si son bit de validation ES (IE.4) est positionn, il ne faut pas oublier de le remettre zro avant de commencer une nouvelle transmission.

VII.3 Rception d'un octet


Pour pouvoir recevoir des donnes, il faut que le bit de validation de rception REN soit positionn. - En mode 0, une rception est initie par la mise 1 du flag RI - Dans les autres mode, la rception dmarre l'arriv du start bit sur l'entre RxD - Dans tous les modes, la rception se termine par la mise un du drapeau RI

VII.4 Dfinition de la vitesse de communication par Timer


Pour le 8051, la vitesse de communication est dfinie par le rythme de dbordement de TIMER1. Pour le 8052, on peut utiliser soit TIMER1 soit TIMER2 soit les deux, un pour la rception l'autre pour la transmission.

Utilisation de TIMER1 :

Vitesse de Frquence de SMOD TH1 Dans le cas de TIMER1, la vitesse de communication l'oscillateur communication est dfinie par : 19200 11.059 MHz 1 FDh 2 SMOD 9600 11.059 MHz 0 FDh VC = frquence de dbordement 32 4800 11.059 MHz 0 FAh D'une manire gnrale, TIMER1 est utilis 2400 11.059 MHz 0 F4h en mode Auto-Reload, dans ce cas, la vitesse 1200 11.059 MHz 0 E8h de communication est dfinie par :

2 SMOD fosc VC = 32 12 (256 - TH1)


Le tableau ci-contre donne la valeur de TH1 pour les vitesses de communication couramment utilises et ceci pour un quartz de 10.059 MHz

Utilisation de TIMER2 :
La configuration de TIMER2 en gnrateur de rythme est ralise l'aide des bits RCLK et TCLK du registre T2CON. La vitesse de communication est donne par : frquence de dbordement VC = 16 D'une manire gnrale, TIMER2 est utilis en mode Auto-Reload, dans ce cas, la vitesse de transmission est dfinie par :

VC =

fosc 32 (65536 - RCAP2)