Intel 8051
Intel 8051
Intel 8051
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
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
RAM externe
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 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
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
96 --9E SM1
95 --9D SM2
94 ---
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
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
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,
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.
11
12
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
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
14
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
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
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
SETB
SETB <bit> : met un bit 1
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
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
(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
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
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
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
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)
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
Horloge systme
/12
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)
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 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
Horloge systme
/12
TH0
TF1
T1OI
Horloge systme
/12
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.
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.
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
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.
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 :
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 =