Sunteți pe pagina 1din 10

Microcontrolerul AT89C52

AT89C52 este un microcontroler de inalta performanta in tehnologie CMOS,


pe 8 biti, de putere joasa cu 8k octeti de memorie FLASH. Memorie FLASH este o
memorie de tip EEPROM cu timp de scriere foarte scurt, tensiune de stergere de
valoare redusa, capacitate mare si cost rezonabil, putand fi folosita in locul unei
dischete.

Dispozitivul este fabricat folosind tehnologia ATMEL de inalta densitate a


memoriei nevolatile si este compatibil cu standardul 80C51 si 80C52 in ceea ce
priveste instructiunile si configurarea pinilor. Memoria de tip FLASH permite memoriei
de program sa fie reprogramata in sistem sau printr-o programare a memoriei
nevolatile conventionale. Combinand un dispozitiv CPU pe 8 biti care are calitatea de
a indeplini mai multe functii, cu o memorie de tip FLASH intr-un cip monolitic, ATMEL
AT89C52 este un microcontroler puternic care ofera solutii de mare flexibilitate multor
aplicatii de control traditionale.
Caracteristici

- Compatibilitate cu produse de tip MCS-51

- 8k biti ai sistemului reprogramabil a memoriei FLASH

- Durata de viata: 1.000 scriere / cicluri de stergere

- Intreaga operatie statica: de la 0 Hz la 24 MHz

- 3 nivele de inchidere a programului de memorie

- 256 x 8 biti RAM intern

- 32 linii I/O programabile

- 3 temporizatoare / numaratoare pe 16 biti

- 8 surse de intrerupere

- canal serial programabil

- modul de lucru de joasa putere si modul IDLE

Configuratia Pinilor
Schema bloc a microcontrolerului

AT89C52 prevede urmatoarele caracteristici: 8 ko de memorie FLASH, 256


octeti de memorie RAM, 32 linii I/O, trei temporizatoare/ numaratoare de 16 biti, o
arhitectura cu 6 vectori pe doua nivele de intrerupere, un port serial full-duplex, un
oscilator si un ceas intern. In plus microcontrolerul AT89C52 este proiectat cu o
logica statica pentru operare cu o frecventa redusa pana la 0Hz si ofera doua
software-uri selectabile pentru economisirea puterii. Modul IDLE opreste CPU-ul
permitand RAM-ului, temporizatoarelor/numaratoarelor, portului serial si sistemului
de intrerupere sa-si continue functionarea. Modul de scoatere de sub tensiune
opreste oscilatorul, facand imposibila utilizarea celorlalte functii ale cip-ului pana
cand apare o noua reinitializare (reset) a hardware-ului.
Descrierea pinilor

VCC-tensiune de alimentare
GND-masa

Portul 0 este un port pe 8 biti de intrare/iesire bidirectional. Functionand ca si


port de iesire, fiecare pin poate absorbi curent de la opt intrari TTL. Cand 1 logic
este inscris la portul 0 pinii pot fi folositi ca si intrari de inalta impedanta. Portul 0
poate de asemenea fi configurat sa fuctioneze ca un multiplexor intre octetul inferior
de adrese si un octet de date in timpul accesului la programul exterior si la memoria
de date externa. In acest scop, portul 0 este prevazut cu rezistente de pull-up. De
asemenea primeste octetul de cod in timpul programarii FLASH si elibereaza octetul
de cod in timpul verificarii programului. Sunt necesare rezistente externe de pull-up in
timpul verificarii programului.

Portul 1 este un port de intrare/iesire bidirectional, pe 8 biti cu rezistente


interne de pull-up. Buffer-ele de iesire ale portului 1 pot alimenta patru intrari TTL.
Cand se inscrie 1 logic la pinii portului 1, ei sunt pusi in starea high (1 logic) datorita
rezistentelor interne si pot fi utilizati ca si intrari. Ca intrari, pinii portului 1 care au fost
pusi pe low din exterior vor produce un curent datorita rezistentelor interne. In plus,
P1.0 si P1.1 pot fi configurate sa fie a doua componenta de intrare externa
temporizator/numarator (P1.0/T2) si respectiv a doua intrare declansatoare
temporizator/numarator (P1.1/T2EX), dupa cum se observa din urmatorul tabel. De
asemenea portul 1 primeste octetul cel mai putin semnificativ de adresa in timpul
programarii FLASH si a verificarii.

Portul pin Functionari alternative


P1.0 T2(intrare externa a temporizatorului/ numaratorului
P1.1 T2EX (temporitator/numarator 2 - declansator de
captare/transmitere si control a directiei

Portul 2 - este un port bidirectional intrare/iesire de 8 biti cu rezistente


interne de pull-up. Buffer-ele de iesire ale portului 2 pot receptiona/furniza curent
pentru patru intrari TTL. Cand primul este scris de pinii portului 2, ei sunt pusi in
starea high de dispozitivele de tranzitie ascendenta interne si pot fi utilizate ca si
intrari. Ca intrari, pinii portului 2 care din exterior au fost pusi in starea low, vor furniza
curentul (Iil) datorita dispozitivelor de tranzitie ascendenta interne. Portului 2 emite
adresele bitilor high in timpul citirii din memoria externa de program si in timpul
accesului la datele din memoria externa care utilizeaza 16 biti de adrese (MOVX
@DPTR). In timpul accesului la memoria externa de date care utilizeaza 8 biti de
adrese (MOVX @RI), portul 2 emite continutul registrului special de functionare al
pinului P2. Portul 2 de asemenea primeste adrese ale bitilor high si anumite semnale
de verificare in timpul programarii si verificarii memoriei de tip FLASH.

Portul 3 este un port bidirectional de intrare/iesire cu rezistente de pull-up


interne. Buffer-ele de iesire ale portului 3 pot receptiona/furniza patru intrari TTL.
Cand 1 logic este inscris la pinii portului 3, ei sunt pusi in starea high de catre
rezistentele interne de pull-up si pot fi utilizati ca intrari. Ca intrari, pinii portului 3 care
au fost pusi din exterior in starea low, vor furniza un curentul (IIL) datorita rezistentelor
de pull-up interne. De asemenea, portul 3 serveste la functii speciale ale
microcontrolerului AT89C51, dupa cum se poate observa in urmatorul tabel.

De asemenea, portul 3 primeste anumite semnale de control pentru


programarea FLASH si pentru verificare.

Pinul potului Functia alternativa

P3.0 RXD - intrare seriala a portului pentru receptie

P3.1
TXD - iesire seriala a portului pentru transmisie

P3.2 INT0 - intrerupere externa pentru Timer 0

P3.3 INT1 - intrerupere externa pentru Timer 1

P3.4 T0 - intrare externa in Timer 0

P3.5 T1 - intrare externa in Timer 1

P3.6 - strob-ul pentru scrierea memoriei de date externa


P3.7 - strob-ul pentru citirea memoriei de date externa
RESET

Intrarea de reset a microcontrolerului AT89C52 este pinul RST, care este


intrarea intr-un Trigger Schmitt.
Reset-ul se realizeaza tinand pinul RST pe “1” logic pe perioada a cel putin
doi ciclii-masina (24 de perioade de oscilator), in timp ce oscilatorul functioneaza.
CPU va raspunde printr-un reset intern. De asemenea, CPU va configura pinii cvasi-
bidirectionali ALE si PSEN ca pini de intrare.
Reset-ul intern este executat in timpul celui de-al doilea ciclu masina, cand
RESET este in “1” logic si va fi repetat la fiecare ciclu masina pana cand RST trece in
“0” logic.
RAM-ul intern nu este afectat de reset. Cand apare tensiune pe +Vcc
continutul RAM-ului este nedeterminat, cu exceptia cazului in care se foloseste
modul de operare cu putere redusa.

Timpul de Reset
Registre cu functii speciale

O harta a zonei de memorie on-chip numita spatiu SFR (Special Function


Register) este prezentata in figura de mai jos. SFR-urile marcate prin paranteze
se regasesc in AT89C52 dar nu in AT89C51.

Nu toate adresele sunt ocupate. Adresele neocupate nu sunt implementate in


cip. Accesul de citire pentru aceste adrese in general da date aleatore, iar accesul de
scriere nu are efect.

Softul de utilizare nu trebuie sa scrie 1 logic in aceste locatii neimplementate


deoarece ele pot fi folosite in microcontrolerele viitoare pentru facilitati noi. In acest
caz, valorile inactive sau de reset ale noilor biti vor fi intotdeauna „0”, iar valorile
active vor fi „1”.

Functiile SFR-urilor sunt prezentate in sectiunile urmatoare.

 Acumulator

ACC este registrul Acumulator. Mnemonicile pentru instructiunile specifice


Acumulator-ului, oricum, se refera la Acumulator printr-un simplu A.

 Registrul B

Registrul B este folosit pe durata operatiilor de inmultire si impartire. Pentru


altele el poate fi tratat cu un alt registru scratch pad.

 PSW

Cuvant de stare al programului (Program Status Word) – registru ce contine


informatii despre starea programului. Configuratia acestui registru este prezentata in
tabelul de mai jos:

Cel mai semnificativ bit Cel mai putin semnificativ


MSB(Most significant bit) LSB(Less significant bit)
CY AC F0 RS1 RS0 0V -- P

 Registrul indicator de stiva SP (Stack pointer)

Registrul Stack Pointer are o marime de 8 biti. El este incrementat inainte ca


datele sa fie salvate pe durata executiei instructiunilor PUSH si CALL. In timp ce stiva
se poate regasi oriunde intr-un cip RAM indicatorul de stiva este initializat la 07H
dupa reset. Aceasta determina stiva sa inceapa de la 08H.

 Data Pointer (DPTR)

Data Pointer este format din octetul high (DPH) si octetul low (DPL). Functia
sa este de a retine o adresa de 16 biti. El poate fi folosit ca un registru de 16 biti sau
ca doi registrii de 8 biti.
 Porturi

P0, P1, P2 si P3 sunt latch-urile pentru porturile 0, 1, 2 respectiv 3.

 Buffer-ul de date serial

Buffer-ul de date serial este de fapt format din doua registre separate, un
registru buffer de transmisie si un registru buffer de receptie. Atunci cand datele sunt
mutate in SBUF (Serial Data Buffer), ele merg in buffer-ul de transmisie, unde sunt
retinute pentru transmisia seriala. Mutarea unui octet in SBUF initiaza transmisia.
Atunci cand datele sunt mutate din SBUF, ele vin din buffer-ul de receptie.

 Registre temporizator/numaratoare (Timer/Counter registers)

Registrele pereche (TH0, TL0), (TH1, TL1) si (TH2, TL2) sunt numaratoare
pe 16 biti pentru temporitator/numarator (Timer/Counter) 0, 1 si 2 .

 Registre de captura

Perechea de registre (RCAP2H, RCAP2L) sunt registre de captura pentru modul


captura 2 al circuitului de temporizare. In acest mod, ca raspuns la o tranzitie la pinul
T2EX al AT89C52, TH2 si TL2 sunt copiati in RCAP2H si RCAP2L. Circuitul de
temporizare 2 are de asemenea un mod de autoincarcare de 16 biti, iar RCAP2H si
RCAP2L retin valoarea de autoincarcare pentru acest mod.

 Registre de control

Registrele cu functii speciale IP, IE, TMOD, TCON, T2CON, T2MOD, SCON si
PCON contin biti de control si de stare pentru sistemul de intreruperi, circuitele de
temporizare/numaratoare si portul serial. Acestea sunt descrise in sectiunea
urmatoare a acestui capitol.

Operarea si structura porturilor

Toate patru porturile din AT89C52 sunt bidirectionale. Fiecare este format
dintr-un latch (registrele cu functii speciale de la P1 pana la P3), driver de iesire si un
buffer.
Driverele de iesire ale porturilor 0 si 2 si buffer-ele de intrare ale portului 0
sunt folosite pentru accesarea memoriei externe. Portul 0 asigura iesirea octetului
celui mai putin semnificativ al adresei de memorie externe. Portul 2 asigura iesirea
octetului cel mai semnificativ al adresei de memorie externe atunci cand adresa are o
lungime de 16 biti. Altfel, pinii portului 2 vor emite in continuare continutul lui P2 SFR.

Toti pinii portului 3 si 2 dintre pinii portului 1 (la AT89C52 ) sunt


multifunctionali. Ei nu sunt doar pini de port, furnizand de asemenea servicii speciale
prezentate in tabelul urmator:

Pin port Functii alternative


P1.0 T2 ( intrare externa pentru circuitul de numarare/temporizare2 )

P1.1 T2EX
P3.0 RXD ( port de intrare serial )
P3.1 TXD ( port de iesire serial )
P3.2 /INTO ( intreruperi externe )
P3.3 /INT1 ( intrare externe )
P3.4 T0 (intrare externa pentru circuitul de temporizare/numarare 0)

P3.5 T1 (intrare externa pentru circuitul de temporizare/numarare 1)

P3.6 /WR (scriere memorie de date externa)


P3.7 /RD (citire memorie de date externa)

Functiile alternative pot fi activate daca secventa de biti corespunzatoare din


portul SFR contine un „1”. Altfel pinul portului este blocat pe „0”.

BIBLIOGRAFIE

http://www.atmel.com/images/doc0313.pdf

https://www.coursehero.com/file/p3bvj0j/5-22-DESCRIPTION-OF-89C52-
MICROCONTROLLER-The-AT89C52-provides-the-following/

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