Sunteți pe pagina 1din 29

Curs 8

Familia de microcontrolere MCS 51. Caracteristici, structur HW i funcionare


Intel MCS 51 - standard n categoria microcontrolerelor de 8 bii 8.1. Caracteristicile generale ale familiei MCS 51 - UCP de procesare de 8 bii, optimizat pentru aplicaii de control; - Procesor boolean inclus, cu capabiliti extinse pentru prelucrri logice pe bit; - Spaiu de adresare pentru memoria program de 64 Ko; - Spaiu de adresare pentru memoria intern de date; - Spaiu de adresare pentru memoria de date extern de 64 Ko; - 4 bancuri de registre de lucru; - 128 de bii din spaiul intern de memorie de date adresabile pe bit - Registre cu funcii speciale (SFR) controlul resurselor interne; - Porturi paralele de I/E de 8 bii, adresabile i la nivel de bit; - Numrtoare de evenimente/timere de 16 bii; - Port serial asincron (UART) - Sistem de tratare a ntreruperilor multiple, pe dou niveluri de prioritate; - Frecven de lucru ntre 3,5 i 12MHz, cu versiuni de 16 i 20MHz; - Set de 111 instruciuni (64 de un singur ciclu main); - Ciclu instruciune tipic de 1s, nmuliri/mpriri de ntregi n 4s (la 12MHz);

Microcontroler 8051AH 8052AH 80C51BH

Versiunea fr ROM 8031AH 8032AH 80C31BH

Versiunea cu EPROM

ROM

RAM

Timere ntreruperi Tehnologie (16 bii) 2 3 2 5 6 5 HMOS HMOS CHMOS

8751H, 8751BH 4K 8 128 8 8752BH 87C51 8K 8 256 8 4K 8 128 8

Fig.8.1. Familia de microcontrolere MCS 51 componente de baz

Extensii ulterioare ale seriei n tehnologie CHMOS: Seria 8xC51FA/FB/FC (x=0,3,7) 8/16/32 Ko ROM/EPROM; 256 octei RAM; 3 timere de 16 bii; ceas de gard (WDT Watch Dog Timer) zon de numrtoare programabile (PCA Programmable counter Array) cu: o ieiri de mare vitez; o funcii de comparare/captur; o ieiri n impulsuri modulate n durat (PWM Pulse Width Modulation).

Seria 8xC52/54/58 (x=0,3,7): 8/16/32 Ko ROM/EPROM; noi faciliti pentru Timerul 2 (ca i la seria 8xC51FA/FB/FC): o numrtor cu incrementare/decrementare; o generator de tact programabil (Programmable Clock-Out) Seria 8xC51RA/RB/RC (x = 0,3,7): 512 octei de RAM intern Seria 8xC51GB (x = 0,3,7): 8 Ko ROM/OTP (One Time Programming); SINT cu 15 surse de ntrerupere (7 externe, 8 interne), pe 4 niveluri de prioritate; 6 porturi paralele de I/E; convertor A/D de 8 bii, cu 8 canale; un port de externsie serial. Variante de consum redus: 8xL51FA/FB/FC, x=0, 3, 7, 8xL52/54/58, x=0,7: - alimentate la 2,73,6V; - freceven de tact de 20 MHz. Variante de mare vitez: frecvene maxime de 24 sau 33 MHz. Caracteristici comune: - aceeai arhitectur intern; - acelai set de instruciuni, caracteristic familiei MCS 51; - majoritatea sunt pin cu pin compatibile.

8.1.1. Semnale la pini

XTAL1 XTAL2 VDD VSS ALE/PROG PSEN EA/VPP RST

MCS 51

(T21,2/ClockOut2) (T2EX1,2) (ECI3) P1.2 Port 0 (CEX03) P1.3 (8 bii) (CEX13) P1.4 (CEX23) P1.5 (CEX33) P1.6 3 Port 1 (CEX4 ) P1.7 RST (8 bii) (RxD) P3.0 (TxD) P3.1 (INT0) P3.2 Port 2 (INT1) P3.3 (8 bii) (T0) P3.4 (T1) P3.5 (WR) P3.6 (RD) P3.7 Port 3 XTAL2 (8 bii) XTAL1 VSS

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 MCS 51 33 (DIP) 32 1 31 8032AH, 30 8052AH, 29 8752BH 28 27 2 80C32, 26 8xC52/54/58, 25 8xC51FA/FB/FC, 24 8xC51RA/RB/RC23 22 3 8xC51FA/FB/FC 21

VDD P0.0 P0.1 (AD1) P0.2 (AD2) P0.3 (AD3) P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 EA/VPP ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 (A9) P2.0 (A8)

Fig.8.2. MCS 51 simbolul logic i semnale la pini XTAL1, XTAL22 intrare/ieire a amplificatorului oscilatorului intern; RST (ReSeT) intrare activat pe durata a dou cicluri main (n prezena semnalului de tact), determin resetarea microcontrolerului.

EA /VPP (External Access / VPP) forare acces la memoria ROM extern / Programare ROM

P0.0P0.7 (Port 0) - port I/E de 8 bii, bidirecional, cu dren n gol: - acces la memoria extern (AD0AD7); P1.0P1.7 (Port 1) - port I/E de 8 bii, bidirecional: - funcii alternative asociate perifericelor interne; P2.0P2.7 (Port 2) - port I/E de 8 bii, bidirecional: - acces la memoria extern (A8A15); P3.0P3.7 (Port 3) - port de 8 bii, bidirecional: - Semnale de control i funcii alternative asociate perifericelor interne: RxD (P3.0) - intrare de date serial asincron / I/E de date serial sincron; TxD (P3.1) - ieire de date serial asincron / ieire semnal de tact - modul sincron; INT0 (P3.2) - intrare de ntrerupere extern 0 / intrare de control pentru Timerul 0; INT1 (P3.3) - intrare de ntrerupere extern 1 / intrare de control pentru Timerul 1; T0 (P3.4) - intrare de numrare pentru Timerul 0; T1 (P3.5) - intrare de numrare pentru Timerul 1; WR (P3.6) - ieire de comand pentru scriere n memoria de date extern; RD (P3.7) - ieire de comand pentru citire din memoria de date extern.

PSEN (Program Store Enable) - ieire de comand a citirii memoriei program externe.
ALE/ PROG (Address Latch Enable / PROGramming): - ieire de comand a memorrii octetului inferior al adresei, depus pe liniile AD0AD7; - intrare pentru impulsul de programare, la programarea EPROM-ului intern; VDD , VSS - alimentare cu tensiune (+5Vc.c., GND).

8.1.2. Arhitectura intern a microcontrolerelor 8051

Controler de ntreruperi

ROM

RAM

Timere

UCP

Oscilator

Logic de control magistral

Porturi paralele de I/E

Port serial

XTAL1

XTAL2

EA

ALE

PSEN

P0

P2

P1

P3

Interfaa cu magistrala extern, funcii auxiliare, linii de I/E Fig.8.3. Structura intern simplificat a microcontrolerului 8051

Unitatea central de prelucrare UCP: - arhitectur Harvard ci interne distincte pentru instruciuni i date; - spaii distincte de adresare pentru: - instruciuni (64 Koctei); - date interne (256 locaii de 8 bii); - date externe (64 Koctei); - bii (256 locatii de 1 bit). - semnale distincte de citire pentru instruciuni ( PSEN ) i date ( RD ); - unitate aritmetic i logic bazat pe acumulator (registrul A), accesibil i n spaiul memoriei RAM interne (la adresa ACC); - registrul numrtor de program (PC - Program Counter) adresa instruciunii urmtoare; - un numr redus de registre, accesibile utilizatorului att prin numele lor ct i n spaiul memoriei RAM interne: - B - folosit de operaiile de nmulire i mprire sau ca registru de uz general; - R0R7 accesibile n spaiul memoriei RAM interne la adresele AR0AR7; - DPTR Data Pointer adresarea memoriei RAM externe - format din dou registre de 8 bii accesibile n spaiul memoriei RAM interne la adresele DPH i DPL. - un numr de registre utilizate implicit, accesibile numai n spaiul memoriei RAM interne la adresele: - SP Stack Pointer de 8 bii stiva este organizat n memoria RAM intern. - SP este iniializat cu 07h i stiva crete n sensul cresctor al adreselor.

- PSW (Program Status Word) conine indicatorii de condiii.

(msb) PSW Simbol CY AC F0 RS1 RS0 OV P CY AC 7 F0 RS1 RS0 OV 6 5 Poziia PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0

(lsb) P (D0h) RS1, RS0 selecteaz bancul curent de registre: (0,0) - Banc 0 (0,1) - Banc 1 (1,0) - Banc 2 (1,1) - Banc 3 (00h - 07h) (08h - 0Fh) (10h - 17h) (18h - 1Fh) 4 3 2 1 0 Nume i semnificaie Fanion de transport Fanion de transport auxiliar (pentru operaii n BCD) Fanion 0 (de uz general) Selecia bancului cu registre de lucru Fanion de depire Fanion la dispoziia utilizatorului Fanion de paritate

Fig.8.4. PSW - registrul cuvntului de stare a programului - Procesorul boolean: component a ALU care utilizeaz un subset de instruciuni pentru accesul i prelucrarea datelor de 1 bit, amplasate n memoria RAM intern; Portul 3 faciliteaz accesul la: - resursele interne: timere i portul serial; - memoria extern de date - semnalele RD i WR ; - sistemul de ntreruperi - liniile de ntrerupere externe

INT0 i INT1.

8.2. Organizarea memoriei la microcontrolerele 8051/8052 8085 dou spaii de adresare: - memorie 64 Koctei; - I/E 256 locaii. Exist mai multe spaii de adresare: - fizic distincte sau suprapuse; - utilizeaz mecanisme diferite de adresare; - folosesc semnale distincte de citire/scriere. - memoria program citire cu PSEN : - extern - pn la 64 Ko; - integrat pe cip: primii 4Ko sau 8Ko acces validat de EA =1. - memoria de date: - extern - pn la 64 Ko citire/scriere cu RD / WR ; - intern: - adresabil pe octet - de 128 sau 256 de octei; - adresabil pe bit 128 de bii. - zona de registre cu funcii speciale (SFR - Special Function Registers); - adresabil pe octet: 128 de locaii de 8 bii; - adresabil pe bit: 128 de locaii de 1 bit.

Memoria program FFFF

Memoria de date FFFF adresare indirect adresare direct Extern

Extern

Intern FF Extern (EA = 0) 0000 PSEN


Fig.8.5. Organizarea memoriei la 8051/8052

Intern (EA = 1)

80 7F 00

Superioar (8052) Inferioar

SFR

0000 RD WR

8.2.1. Memoria program Adrese pe 16 bii, cuprinse ntre 0000hFFFFh. Memoria program intern (dac exist): - poate fi utilizat dac EA =1. Memoria program extern: - semnalul de citire - PSEN Resetare prima instruciune 0000h. Vectorii de ntrerupere: 0003h, 000Bh, 0013h, 001Bh, 0023h, ... intervale de 8 octei.

0023h Zon rezervat pentru tratarea ntreruperilor 001Bh 0013h 000Bh 0003h RESET 0000h P1 P0 EA ALE D7D0

8212 STB

A7A0

MCS 51
P3 P2 PSEN

(EP)ROM
A15A8 OE

Fig.8.6. Harta zonei inferioare a memoriei program

Fig.8.7. Schema de conectare a memoriei program externe

8.2.2. Memoria de date intern zona inferioar de 128 octei; zona superioar de 128 octei (la 8052); zona SFR (Special Function Registers), 128 octei. Zona inferioar de 128 de octei: - au adrese de octet cuprinse ntre 00h i 7Fh; - pot fi adresai att direct, ct i indirect.

7Fh
RAM de uz general

30h
- Primii 32 de octei - 4 bancuri a cte 8 registre generale de lucru de 8 bii. - bancul de registre curent, R0R7, poate fi selectat dintre acestea prin biii RS1, RS0 ai registrului PSW. - dup resetarea microcontrolerului este selectat implicit bancul 0 (00h07h), iar registrul SP se poziioneaz la adresa 07h. - Urmtorii 16 octei, dispui deasupra celor patru bancuri, formeaz un spaiu RAM adresabil att la nivel de octet, ct i la nivel de bit, fiind utilizat de procesorul boolean. - cei 128 de bii ai acestui spaiu pot fi folosii ca fanioane sau variabile booleene, avnd adresele de bit cuprinse ntre 00h i 7Fh (128 User - defined software flags).

Biii de selecie din PSW: 11 10 01 00

2Fh
Spaiu adresabil la nivel de bit

20h 1Fh 18h 17h 10h 0Fh 08h 00h


4 bancuri a cte 8 registre (R0R7)

07h SP dup
RESET

- Restul de 80 de octei, pot fi utilizai pentru variabile Fig. 8.8. Harta zonei inferioare a sau pentru stiv (variantele cu 128 de octeti de RAM). memoriei RAM interne

Zona superioar de 128 octei, cu adrese de octet cuprinse ntre 80h i 7Fh: prezent numai la microcontrolerele cu RAM intern de 256 octei; poate fi accesat numai la nivel de octet, prin adresare indirect; poate fi folosit pentru memorarea datelor, sau ca stiv (adresare indirect, cu SP). Zona SFR (echivalent cu spaiul de I/E de la 8085), cu adresare direct, rezervat pentru: registrele cu funcii speciale ale CPU (cu excepia PC); celorlalte resurse de pe cip, n afar de bancurile cu registrele de lucru. Adresabile pe bit F8h F0h B E8h E0h ACC D8h D0h PSW C8h T2CON RCAP2L RCAP2H TL2 TH2 C0h B8h IP B0h P3 A8h IE A0h P2 98h SCON SBUF 90h P1 88h TCON TMOD TL0 TL1 TH0 TH1 80h P0 SP DPL DPH PCON Fig.8.9. Harta zonei SFR la 8051/8052

FFh F7h EFh E7h DFh D7h CFh C7h BFh B7h AFh A7h 9Fh 97h 8Fh 87h

Zona SFR este ocupat numai parial; toate C MCS 51 i compatibile au aceleai registre SFR, la aceleai adrese ca i 8051; variantele mbuntite au registre speciale suplimentare. Acest mod de organizare - permite o extindere facil a diverselor variante de C. Locaiile neutilizate nu sunt implementate pe cip: citirea lor returneaz valori aleatoare; scrierea nu are nici un efect. 16 locaii din spaiul SFR, avnd adresa de octet multiplu de 8, sunt adresabile i pe bit. Registrele A, B, PSW, SP, DPTR ale unitii centrale de procesare pot fi utilizate ca atare, cu numele lor n setul de instruciuni. Ca registre SFR, aceleai locaii se pot adresa i direct, folosindu-se n acest scop fie numele de SFR (ACC, B, PSW, SP, respectiv DPL i DPH pentru DPTR), fie valoare adresei. Registrele P0, P1, P2 i P3 sunt numele SFR corespunztoare latch-urilor Porturilor 0, 1, 2 i respectiv 3. Registrele pereche (TH0, TL0), (TH1, TL1) i (TH2, TL2) sunt SFR-urile numrtoarelor de 16 bii ale Timerelor 0, 1 i respectiv 2. Registrul pereche (RCAP2H, RCAP2L) este SFR-ul Timerului 2 pentru funcionarea n modul special captur rencrcare. Iniierea unei transmisii seriale se face scriind direct n SBUF. Pentru controlul regimurilor de funcionare a timerelor, a portului serial i a ntreruperilor interne/externe exist registrele speciale TMOD, TCON, T2CON, SCON, PCON, IP i IE. Biii registrelor speciale adresabile la nivel de bit pot fi desemnai fie prin numele SFR al bitului (ACC.0, PSW.2, P1.7, TCON.5), sau prin adresa de bit (E0h, D2h, 97h, 8Dh).

Numele SFR P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 P1 SCON SBUF P2 IE P3 IP T2CON RCAP2L RCAP2H TL2 TH2 PSW ACC B

Adresa SFR 80h 81h 82h 83h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 90h 98h 99h A0h A8h B0h B7h C8h CAh CBh CCh CDh D0h E0h F0h

Registre cu funcii speciale Port 0 Stack Pointer Data Pointer, Low Byte Data Pointer, High Byte Power Control Register Timer Control Register Timer Mode Register Timer 0, Low Byte Timer 1, Low Byte Timer 0, High Byte Timer 1, High Byte Port 1 Serial Port Control Register Serial Port Buffer Register Port 2 Interrupt Enable Register Port 3 Interrupt Priority Register Timer 2 Control Register Reload/Capture Register, Low Byte Reload/Capture Register, High Byte Timer 2, Low Byte Timer 2, High Byte Program Status Word Register Accumulator B Register

Adresa de bit 80h 88h 90h 98h A0h A8h B0h B7h C8h D0h E0h F0h 87h

8Fh

97h 9Fh A7h AFh B7h BFh CFh

D7h E7h F7h

Fig.8.10. Registrele cu funcii speciale (SFR) la 8051/8052

8.2.3. Memoria de date extern - poate fi adresat numai indirect, prin intermediul: - registrului DPTR; - registrelor R0 sau R1 din bancul de registre curent.

P1

P0 VCC

D7D0

MCS 51 EA (cu ROM intern) ALE


P3 P2

8212 STB

A7A0 A8 A9

RAM
(1Ko)

RD WR

I/E

WE OE

Fig.8.11. Schema de configurare pe pagini a memoriei RAM externe la MCS 51 Accesul - instruciuni de tipul MOVX (MOVe eXternal RAM). Se folosesc dou linii ale Portului 2 pentru definirea paginilor. Liniile Portului 2 neutilizate la paginare pot fi folosite ca linii I/E. Portul 0 transmite multiplexat n timp adresa de 8 bii dintr-o pagin, care este reinut cu ALE ntr-un latch 8212. Dac adresarea se realizeaz cu registrul DPTR (adrese de 16 bii), atunci toate liniile Portului 2 sunt folosite pentru transmiterea octetului superior al adresei.

8.2.3. Memoria von Neumann - memorie comun, similar cu cea de la 8085, n care sunt accesibile att codul instruciunilor, ct i datele programului. - acest lucru este avantajos pentru sistemele de dezvoltare: - codul programului utilizatorului este ncrcat n memoria von Neumann, accesat n aces caz ca memorie de date(citire cu RD , scriere cu WR ); - apoi programul este lansat n execuie din memoria von Neumann, accesat n aces caz ca memorie program(citire cu PSEN ). Cerin: citirea trebuie s poat fi realizat fie cu semnalul PSEN , fie cu RD (fig.8.12). Dispozitivele de memorie utilizate trebuie s aib timpul de acces corespunztor situaiei celei mai dezavantajoase: citire ca memorie program.

WR

MEMWR von Neumann

MCS 51
RD PSEN

MEMRD von Neumann

Fig.8.12. Combinarea spaiului extern de memorie program i de date

8.3. Secvenierea operaiilor interne la MCS 51 Sincronizarea operaiilor interne generator de tact (oscilator intern sau extern). Stare main - dou perioade ale oscilatorului intern: P1, P2 (Phase 1, Phase 2). Ciclu main - compus din 6 stri: S1, S2, . . . , S6 (12 perioade ale oscilatorului intern: S1P1, S1P2, S2P1, , S6P1, S6P2) 8.3.1. Secvenierea operaiilor interne la instruciunile de 1 ciclu main

Ciclu main

Ciclu main

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2

XTAL2 ALE
Citete opcodul Citete opcodul urmtor (l ignor) Citete opcodul urmtor (din nou)

S1

S2

S3

S4

S5

S6

a) - instruciune de 1 octet, 1 ciclu main


Citete opcodul Citete al doilea octet al instruciunii Citete opcodul urmtor

S1

S2

S3

S4

S5

S6

b) - instruciune de 2 octei, 1 ciclu main


Fig.8.13. Extragerea i execuia instruciunilor de 1 ciclu main

La o frecven a oscilatorului de 12 MHz, durata unui ciclu main este de 1s. Peste 50% dintre instruciunile familiei MCS 51 se execut ntr-un singur ciclu main. n fig.8.13 este prezentat secvenierea execuiei acestor instruciuni, de un ciclu main. n mod normal, pentru execuia unei instruciuni sunt generate dou cicluri fetch: - primul n S1; - al doilea n S4. Motiv: o parte a instruciunilor de 1 ciclu main au 2 octei. n cazul instruciunilor de un octet i de un ciclu main, cea de a doua operaie fetch, din S4, nu se realizeaz (fig.8.13a). Codul instruciunii extras n S1 este reinut n registrul instruciunii. n cazul instruciunilor de 2 octei, n S4, este citit cel de-al al doilea octet (fig.8.13b). Pn la sfritul strii S6 instruciunea este executat complet. Exist instruciuni de un octet care, datorit complexitii operaiilor interne, se execut n dou cicluri main. 8.3.1. Secvenierea operaiilor interne la instruciunile de 2 cicluri main La rndul lor, acestea pot avea dou evoluii, n funcie de tipul operaiei: cu sau fr acces la memoria extern de date. Pentru instruciunile care implic numai operaii interne (nu MOVX), fr apel la memoria de date extern (de exemplu INC DPTR) evoluia este cea din fig.8.14a. Se citete opcodul numai n starea S1 a primului ciclu, celelalte citiri succesive fiind ignorate.

Pentru instruciunile de tip MOVX (fig.8.14b), opcodul se citete n starea S1 a ciclului 1, dar n ciclul 2 nu se mai execut fetch i nu se genereaz ALE.

Ciclu main

Ciclu main

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2 P1P2

XTAL2 ALE
Citete opcodul Citete opcodul urmtor (din nou) Citete opcodul urmtor (l ignor)

S1

S2

S3

S4

S5

S6

S1

S2

S3

S4

S5

S6

a) - instruciune de 1 octet, 2 cicluri main (mai puin MOVX)


Citete opcodul Citete opcodul urmtor (l ignor) Citete opcodul urmtor (din nou) Nu FETCH Nu ALE

S1

S2

S3

S4

S5

S6

S1

S2 DATA

S3

S4

S5

S6

b) instruciune MOVX (1 octet, 2 cicluri main)

ADDR

Acces la memoria extern de date

Fig.8.14. Extragerea i execuia instruciunilor de 2 cicluri main

8.3.3. Execuia instruciunilor din memoria program extern

Ciclu main S1 ALE PSEN RD Port 2 Port 0


PCH OUT INST IN PCL OUT PCH OUT INST IN PCL OUT PCH OUT INST IN PCL OUT

Ciclu main S5 S6 S1 S2 S3 S4 S5 S6

S2

S3

S4

PCH OUT INST IN PCL OUT

PCH OUT INST IN

PCH OUT PCL OUT

PCL OUT valid

PCL OUT valid

PCL OUT valid

PCL OUT valid

Fig.8.15. Execuia instruciunilor extrase din memoria program extern (fr MOVX) n fig.8.15 i fig.8.16 se prezint secvenierea explicit a operaiilor n cazul execuiei instruciunilor extrase din memoria extern. Cronogramele de semnal n absena unor instruciuni MOVX sunt prezentate n fig.8.15. Execuia unei instruciuni MOVX modific secvenierea operaiilor ca n fig.8.16. Eantionarea datelor la citirea memoriei RAM externe se face n S3P1.

Ciclu main S1 ALE PSEN RD Port 2 Port 0


PCH OUT INST IN PCL OUT PCH OUT INST IN ADDR OUT

Ciclu main S5 S6 S1 S2 S3 S4 S5 S6

S2

S3

S4

Eant.date

DPH OUT or P2 OUT DATA IN ADDR OUT valid


PCL OUT

PCH OUT INST IN

PCH OUT PCL OUT

(MOVX)

PCL OUT valid

PCL OUT valid

Fig.8.16. Execuia unei instruciuni MOVX extras din memoria program extern Un acces la memoria extern de date dureaz de dou ori mai mult dect un acces la memoria program. Atunci cnd CPU execut instruciuni din memoria program intern, PSEN nu se mai activeaz, iar adresa de memorie nu se mai emite. Semnalul ALE continu s se activeze de dou ori pe ciclu main i poate fi folosit ca semnal de tact. Numai n cazul execuiei unei instruciuni MOVX este omis unul dintre impulsurile ALE.

8.3.4. Resetarea microcontrolerelor familiei MCS 51 Numele SFR Iniializarea microcontrolerelor: PC - forarea liniei RST) la 1 pe durata a dou cicluri main (24 de perioade ale oscilatorului intern), n timp ce ACC B oscilatorul este n funciune. PSW n fiecare ciclu main, linia RST este eantionat n S5P2 SP (fig.8.16). DPTR P0P3 La detectarea activrii pinului RST, UCP genereaz un IP (8051) semnal de reset intern (fig.8.17). IP (8052) Pinii porturilor vor pstra valoarea corespunztoare IE (8051) activitii curente nc 19 perioade de oscilator dup ce un IE (8052) 1 logic este identificat la pinul RST. TMOD De asemenea i semnalele ALE i PSEN sunt trecute pe 1 TCON TH0 logic. TL0 Coninutul memoriei RAM interne nu este afectat de TH1 resetare, ci numai de dispariia alimentrii. TL1 Semnalul intern de resetare determin forarea tuturor TH2 (8052) registrelor din zona SFR n 0 logic, cu excepia registrelor TL2 (8052) RCAP2H (8052) latch ale porturilor, a registrului SP i a registrului SBUF. RCAP2L (8052) Latch-urile porturilor sunt iniializate cu FFh, registrul SP cu SCON 07h, iar coninutul lui SBUF este nedeterminat. SBUF n plus, unii bii ai registrelor IP, IE i PCON rmn PCON (HMOS) PCON (CMOS) nedefinii. Iniializare 0000h 00h 00h 00h 07h 0000h FFh 00000b 000000b 000000b 0000000b 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h b 0b 00000b

De asemenea, registrul PC (Program Counter) este ncrcat cu valoarea 0000h, deci la aceast adres trebuie s se afle prima instruciune care va fi executat dup resetare. Apariia tensiunii de alimentare fr o resetare corect poate determina CPU s nceap execuia instruciunilor de la o locaie nedeterminat. Aceasta deoarece registrul PC poate s fie incorect iniializat (0000h).

12 perioade OSC S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 RST Eantionare ALE PSEN P0 Instr. Adr Instr. Adr Instr. Adr Instr. Adr Instr. Adr Instr. Adr 11 perioade 19 perioade Reset intern

Fig.8.17. Diagrama de semnale la resetare

8.4. Porturile de intrare-ieire. Structur i operare Toate cele patru porturi ale familiei de baz (Port 03) sunt bidirecionale i conin: - un registru cu memorare (SFR-urile P0P3); - un amplificator (driver) de ieire; - un tampon de intrare. Driverele de ieire ale Porturilor 0 i 2 i tamponul de intrare al Portului 0 sunt utilizate pentru accesul la memoria extern: - Portul 0 transmite octetul inferior al adresei, multiplexat n timp cu octetul de date n ciclurile de citire sau nscriere. - Portul 2 furnizeaz octetul superior al adresei de 16 bii. Altfel, pe liniile acestuia este depus coninutul SFR P2. Liniile Portului 3, iar n cazul lui 8052 i dou linii ale Portului 1, sunt multifuncionale: - linii I/E de uz general; - funcii alternative speciale, active numai dac biii corespunztori ai SFR pentru P3 i respectiv pentru P1 (P1.0, P1.1) sunt poziionai n 1. Denumire pin *P1.0 *P1.1 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Funcia alternativ T2 - Intrare extern pentru Timerul 2 T2EX - Intrare pentru declanarea funcionrii Timerului 2 RxD - Intrare Port serial TxD - Ieire Port serial INT0 - ntrerupere extern 0 INT1 - ntrerupere extern 1 T0 - Intrare extern pentru Timerul 0 T1 - Intrare extern pentru Timerul 1 WR - Semnal de scriere pentru memoria extern de date RD - Semnal de citire pentru memoria extern de date

8.4.1. Funcionarea porturilor I/E n fig.8.18 se prezint schemele funcionale la nivel de bit pentru porturile paralele de I/E. Un bit din SFR-ul portului este reprezentat printr-un bistabil de tip D: - reine valoarea de pe magistrala intern la o comand scrie n SFR, primit de la CPU. - ieirea Q a bistabilului este plasat pe magistrala intern, ca rspuns al unei comenzi citete SFR, transmis de CPU. - comand citete pinul va transmite starea pinului portului adresat pe magistrala intern. Semnalele de comand citire SFR i citire pin sunt activate de instruciuni diferite. Ieirile Porturilor 0 i 2 pot fi conectate la magistralele Adresa/Data, respectiv Adresa, printr-un semnal intern de comand, pentru accesul la memoria extern. Pe durata acestuia, P2 rmne neschimbat, n timp ce n P0 se ncarc FFh. Portul 3 poate transmite funciile alternative dac SFR-ul su are biii corespunztori poziionai pe 1 logic, ieirile fiind controlate de semnalul funcie de ieire alternativ. Starea pinilor P3.x este disponibil la funciile de intrare alternative aferente. Ca porturi de intrare-ieire, liniile pot fi utilizate independent fie ca intrri, fie ca ieiri. Porturile 1, 2 i 3 au sarcini active (SA) realizate cu tranzistoare pMOS, n timp ce Portul 0 este de tipul cu dren n gol. Tranzistorul T1 de la ieirile Portului 0 este utilizat numai cnd acesta emite un 1 logic, n timpul accesului la memoria extern. n celelalte situaii, tranzistorul de fixare este blocat. n consecin, liniile Portului 0 utilizate ca ieiri sunt cu dren n gol i necesit rezistoare externe conectate la VCC. Un 0 logic n SFR deschide tranzistorul T2 i semnalul 0 se transmite la ieire.

nscrierea unui 1 n SFR-ul Portului 0 menine ambele tranzistoare de ieire blocate, ceea ce asigur flotarea pinilor. n aceste condiii, liniile acestui port pot fi folosite ca intrri de nalt impedan. Portul 0 se consider un port bidirecional adevrat, deoarece atunci cnd este configurat ca port de intrare, buffer-ele de ieire se afl n HZ. Datorit rezistoarelor SA interne de fixare la Vcc (pull-up), Porturile 1, 2 i 3 sunt considerate porturi cvasi-bidirecionale. Dac sunt configurate ca intrri, aceste rezistoare de fixare au valoare mare i vor fi surse de curent cnd n exterior se aplic un 0 logic. Ca i n cazul Portului 0, liniile acestor porturi pot fi configurate independent, fie ca intrri, fie ca ieiri: - linia poate fi utilizat ca intrare dac bitul respectiv din SFR este pe 1 logic; - ca ieire, comandat prin intermediul bitului respectiv din SFR. Un 1 n SFR blocheaz tranzistorul T al etajului final, n timp ce un 0 n SFR determin deschiderea tranzistorului de ieire. n primul caz ieirea este n 1 logic, iar n al doilea caz n 0 logic. n cazul funcionrii ca magistral extern, Portul 0 poate comanda 8 sarcini LS TTL. Ca port I/E, sunt necesare rezistoare de fixare externe pentru a comanda fiecare intrare. Porturile 1, 2 i 3 pot comanda 4 sarcini LS TTL.

Adresa/Data Control Citire SFR

VCC T1 P0.X (pin) Citire SFR Magistrala intern Scriere SFR Citire pin

VCC SA P1.X (pin)

Magistrala intern Scriere SFR Citire pin

CK

P0.X latch

Q Q

MUX

T2

CK

P1.X latch

Q Q

a) Structura intern a Portului 0


Adresa Control Citire SFR SA P2.X (pin) VCC

b) Structura intern a Portului 1


Funcie de ieire alternativ VCC SA P3.X (pin)

Citire SFR

Magistrala intern Scriere SFR Citire pin

Magistrala intern Scriere SFR

CK Q

P2.X latch

T
MUX

CK Q

P3.X latch

Citire pin

Funcie de intrare alternativ

c) Structura intern a Portului 2

d) Structura intern a Portului 3

Fig.8.18. Configuraia porturilor familiei MCS 51

8.4.2. Facilitatea de citire-modificare-nscriere a porturilor Citirea dintr-un port: - cu instruciuni care citesc informaia direct de la pini; - cu instruciuni care citesc SFR-ul portului - instruciuni de citire-modificare-nscriere. Instruciunea Semnificaia ANL ORL XRL JBC CPL INC DEC DJNZ MOV PX.Y,C CLR PX.Y SETB PX.Y SI logic SAU logic SAU EXCLUSIV (suma modulo 2) Salt dac bitul este 1, apoi terge bitul Complementarea bitului Incrementare Decrementare Decrementeaz i salt dac nu este zero Transfer CY n bitul Y al portului X Reseteaz bitul Y al portului X Seteaz bitul Y din portul X Exemple ANL P1,A; ANL P3,#40h ORL P2, A; ORL P1#55h XRL P3,A; XRL P0,#0FFh JBC P1.1,ADR1 CPL P3.2 INC P2 DEC P0 DJNZ P3, ADR 2 MOV P1.1,C CLR P0.7 SETB P3.2

Fig.8.19. Instruciuni de tip citire-modificare-nscriere La prima vedere s-ar prea c ultimele trei instruciuni nu sunt de tipul citire-modificarenscriere, ns ele sunt de acest tip deoarece efectueaz urmtoarele operaii: - citirea celor 8 bii ai portului; - modificarea bitului adresat; - nscrierea noului octet n SFR.

S-ar putea să vă placă și