Masurare Temperatura, Umiditate Utilizand Senzorul Sht75

Capitolul 1. Microcontrolere

Microcontrolere și Microprocesoare

Un microcontroler este în esență o configurație minimală de sistem de calcul, capabil să execute la o viteză foarte mare instrucțiunile unui program stocat în memorie; acest program este o secvență logică de operații ce poate implementa algoritmii necesari pentru controlul proceselor.

Microcontrolerul diferă de un microprocesor în multe feluri. În primul rând si cel mai important este funcționalitatea sa. Pentru a fi folosit, unui microprocesor trebuie să i se adauge alte componente ca memorie, sau componente pentru primirea și trimiterea de date. Pe scurt, aceasta înseamnă că microprocesorul este inima computerului. Pe de altă parte, microcontrolerul este proiectat să fie toate acestea într-unul singur. Nu sunt necesare alte componente externe pentru aplicarea sa pentru ca toate perifericele necesare sunt deja incluse în el.

Figura 1.1 Structura bloc a unui microcontroler

Elementele componente a unui microcontroler sunt următoarele:

UCP – microprocesorul (unitatea centrală de prelucrare)

Memoria – formată din:

– MP – memoria program. Este o memorie nevolatilă și poate fi de tipul ROM, PROM, EPROM, EEPROM. Conținutul acestei memorii nu se pierde în urma întreruperii alimentării.

– MD – memoria de date. Este o memorie volatilă și poate fi de tipul SRAM, RAM. Conținutul acestei memorii nu se pierde în urma întreruperii alimentării.

CP – circuite periferice. Principalele circuite periferice de uz general sunt: PP – porturi paralele, PS – porturi serie, PN – porturi cu numărătoare.

Circuite auxiliare:

– CB – circuitele buffer pentru busuri.

– OSC – oscilatorul de tact.

– CR – circuitul de reset – inițializare.

– CA – circuitul de alimentare cu tensiune continuă.

BD – busul de date, bidirecțional.

BA – busul de adresă, unidirectional.

BC – busul de comandă.

Microprocesorul se poate defini ca fiind un circuit logic programabil de către utilizator, într-o singură capsulă și cu funcție de procesor de uz general.

Figura 1.2 Arhitectura unui microprocessor

Microprocesorul este organizat in jurul MI –magistralei interne și conține:

UAL – unitatea aritmetică și logică (AT – acumulator temporar, RT – registru temporar).

REG – registrele (R0, R1 … – registre generale, A-acumulator, PSW – registru indicator de condiții, PC – registru numărător de program, SP – indicator de stivă).

RI – registrul de instrucțiuni.

DEC – decodificatorul de instrucțiuni.

UCC – unitatea de comandă și control.

TA, TD, TC – tampoanele de adrese, date și comenzi pentru interfațarea busurilor.

Arhitectura microcontrolerului Intel 8051

Familia de microcontrolere de 8 biți MCS51 lansată și produsă de Intel a devenit practic

un standard industrial. Ea a stat la baza dezvoltării de microcontrolere compatibile realizate de

firme ca: Philips, Siemens, Dallas, etc. Arhitectura MCS51 este optimizată pentru aplicații de

control. Intel oferă o gamă largă de microcontrolere compatibile cu 8051 ce diferă între ele doar

prin opțiuni și tehnologie.

Figura 1.3 Arhitectura internă Intel 8051

Microcontrolerul 8051 are în structura sa:

UCP – unitatea central de prelucrare alcătuit din:

– RI – registru de instrucțiuni.

– DEC – decodificatorul de intrucțiuni.

– UCC – unitatea de comandă și control.

– UAL – unitatea aritmetică și logică.

– SFR – spațiul de memorie pentru registrele cu funcții speciale.

– PC – numărătorul de program.

OSC – oscilatorul de tact

Memoria internă alcătuită din:

– MP – memoria program de tipul PROM sau EPROM de 4 kocteți.

– MD – memoria de date de tipul RAM de 128 octeți.

CB – controlerul de bus.

CI – controlerul de întreruperi admite întreruperi de la 5 surse:

– de la portul serial (dacă s-a transmis sau recepționat un caracter).

– de la timere (când s-a înregistrat o depășire).

– de la 2 pini de intrare și .

PP – porturi paralele de intrare/ ieșire de 8 biți în număr de 4, adresate la nivel de octet și de bit.

PS – portul serial pentru transmiterea și recepția asincronă a datelor.

PN – portul de cu două numărătoare de 16 biți, fiecare poate fi programat separat. Pot fi utilizate pentru a măsura intervale de timp, pentru a determina lungimea unor impulsuri, ca numărătoare.

Configurația pinilor pentru microcontrolerul Intel 8051

Figura 1.4 Configurația pinilor Intel 8051

Vcc – tensiunea de alimentare, +5V.

Vss – masă.

PORT 0 – este un port pe 8 biți bidirecțional cu drena în gol. Este port de date și adrese (octetul cel mai puțin semnificativ) pentru memoria externă.

PORT 1 – este un port pe 8 biți bidirecțional.

PORT 2 – este un port de 8 biți bidirecțional. În timpul programării și testării EPROM-ului la portul 2 se stabilește octetul cel mai semnificativ de adresă. Pentru adresarea memoriei externe pe 16 biți portul 2 generează partea mai semnificativă a octetului de adresă.

PORT 3 – este un port de 8 biți bidirecțional. Pinii portului 3 au semnificație alternativă în tabelul 1.1.

Tabelul 1.1 Semnificația dublă a pinilor de la PORT 3

RST – este o intrare de RESET. Dacă semnalul de intrare rămâne în HIGH pe perioada a doi cicli mașină în timp ce oscilatorul funcționează, are loc inițializarea MC.

ALE – (Address Latch Enable) validează octetul cel mai puțin semnificativ de adresă în timpul accesului la memoria externă (PORT0).

– (Program Store Enable) validează citirea programelor din memoria program externă. Nu seactivează la citirea datelor din memoria externă de date.

– (External Acces Enable) validează în stare HIGH memoria program internă, iar în stare LOW validează memoria program externă.

XTAL1, XTAL2 – se conectează cristalul de cuarț sau un oscilator extern.

1.4 Memoria program

Memoria program internă sau externă este o memorie nevolatilă, iar adresarea ei se face cu adrese de 16 biți. Memoria program conține programe care sunt executate de microprocesor sau tabele de date care au o structură fixă. Structura memoriei program este prezentată în figura 1.5.

Dacă pinul este ținut din exterior în starea logică 1, primele locații de memorie 0000H – 0FFFH sunt accesate din memoria internă a microcontrolerului restul (1000H – FFFFH) fiind accesate din memoria externă cu ajutorul semnalului .

Dacă pinul este ținut din exterior în starea logică 0, toate locațiile de memorie (0000H – FFFFH) sunt accesate din memoria externă prin intermediu semnalui .

Figura 1.5 Structura memoriei program

1.5 Memoria de date

Memoria internă este mapată în spatiul de adresare 00H – FFH. În zona 80H – FFH sunt registrele speciale (SFR) care sunt adresabile direct. Zona 00H – 7Fh poate fi adresată direct sau indirect. Memoria externă se afla în adresele 0000H – FFFFH. Validarea folosirii memoriei de date externe se realizează cu semnalele și . Aceste semnale se folosesc și pentru selecția datelor din portul 0, unde datele sunt multiplexate cu adresele. Adresele sunt validate cu semnalul ALE. Informația poate fi accesată cu adresare pe 8 biți pentru memoria de date internă și pe 16 biți pentru memoria de date externă. Structura memoriei de date interne este prezentată în figura 1.6.

Figura 1.6 Structura MD interne

Memoria internă de date este împărțită în mai multe blocuri:

Adresele 00H – 1FH pentru cele patru bancuri de câte 8 registre generale (R0 – R7); dintre cele patru bancuri este selectat întotdeauna numai un banc de register generale cu ajutorul a doi indicatori RS1 și RS0 din registrul PSW; registrele generale sunt locații de memorie de opt biți, volatile și manevrabile de utilizator.

Adresele 20H – 2FH sunt locații adresabile la nivel de bit și octet.

Adresele 30H – 7FH sunt 80 de locații adresabile numai la nivel de octet și sunt la dispoziția utilizatorului.

Adresele 80H – FFH sunt locații adresabile direct pentru registrele cu funcții special SFR.

1.6 Spațiul registrelor cu funcții speciale

În memoria internă, în zona de adrese 80H÷FFH, este definită o arie de regiștri cu funcții speciale (SFR – Special Function Registers), a cărui organizare este prezentată în figura 1.7. O parte din adrese sunt rezervate pentru dezvoltări ulterioare. Unele dintre registre permit accesarea pe bit, iar altele doar pe octet. În cele ce urmează adresele registrelor SFR se consideră exprimate în hexazecimal.

Figura 1.7 Dispunerea registrelor cu funcții speciale

Semnificația registrelor cu funcții special este prezentată în paragrafele următoare.

Registrul acumulator ACC are adresa E0H și conține unul din operanzi și rezultatul pentru majoritatea instrucțiunilor aritmetice și logice. De asemenea acest registru se utilizează ca sursă și/sau destinație în instrucțiunile de transfer de date între μC și memoria externă de date. ACC se mai poate utiliza la operația de citire din memoria externă de program.

Registrul B, adresa F0H, se utilizează ca sursă și destinație în cadrul operațiilor de înmulțire MUL AB și împărțire DIV AB, precum și pentru uz general.

Registrul cu indicatori de condiție PSW (Program Status Word), cu structura prezentată în figura 1.8 are adresa D0H și conține indicatorii de condiție asociați μC. Semnificația indicatorilor din PSW este următoarea:

C

7

AC

6

F0

5

RS1

4

RS0

3

OV

2

1

P

0

Figura 1.8 Structura registrului PSW

Indicatorul de transport C (PSW.7) se poziționează pe 1 ca urmare a execuției unei adunări care a produs transport sau unei scăderi care a necesitat un împrumut. Indicatorul C mai poate fi utilizat ca operand sursă și/sau destinație în instrucțiuni de transfer a controlului.

Indicatorul de transport auxiliar AC (PSW.6) se poziționează în 1 dacă o adunare a produs transport spre bitul 4 sau a necesitat împrumut din acesta. AC este utilizat pentru ajustarea zecimală în situațiile în care operanzii sunt exprimate în format BCD.

Indicatorul FO (PSW.5) este la dispoziția utilizatorului pentru diverse scopuri.

Indicatorii RS1 și RS0 (PSW.4 și PSW.3) sunt utilizați pentru selectarea unui banc de 8 registre generale R0 ÷ R7 din memoria internă de date a μC, ca în tabelul 1.2 .

Tabelul 1.2 Selectarea unui banc de register generale

Indicatorul de depășire OV (PSW.2) este poziționat în 1 la depășirea domeniului de valori (-128 ÷ 127) corespunzător codului complementar față de doi.

Indicatorul de paritate P (PSW.0) conține suma modulo 2 a biților registrului acumulator. Nivelul logic 1 va corespunde unui număr impar de biți 1, în registrul PSW, el indicând în permanență paritatea biților acumulatorului.

Registrul indicator de stivă (SP – Stack Pointer) care are adresa 81H, indică adresa vârfului stivei. Stiva necesară funcționării μC 8051 este organizată în memoria de date a acestuia. La conectare sau după inițializare, conținutul SP va indica 07H deci stiva începe de la adresa 08H. Evident introducerea unui octet în stivă va determina incrementarea lui SP iar extragerea unui octet decrementarea acestuia. SP constituie un element de arhitectură în sensul existenței posibilității de modificare prin program.

Registrul indicator de date DPTR este organizat pe 16 biți în două secțiuni, DPL și DPH la adresele 82H și 83H. Registrul DPTR este utilizat pentru adresarea indirectă a memoriei externe de date sau program. De exemplu, în construcția MOV A,@DPTR, în DPTR se găsește adresa locației de memorie a cărui conținut va fi mutat în A.

` Registrele P3 – adresă B0H, P2 – adresă A0H, P1 – adresa 90H, P0 – adresa 80H sunt aferente celor 4 porturi paralele.

Registrele TL0 – adresa 8AH, TL1 – adresa 8BH, TH0 – adresa 8CH, TH1 – adresa 8DH sunt asociate circuitelor de numărare-temporizare, CNT ale μC .

Registrul TCON – adresa 88H și SCON – adresa 98H, sunt asociate cererilor de întrerupere externe sau interne.

Registrul IP – adresa B8H este destinat alocării de priorități pentru întreruperi.

Registrul IE – adresa A8H este asociat validării întreruperilor.

Registrul SCON – adresa 98H este asociat operării portului serial.

Registrul TMOD – adresa 89H permite stabilirea operației ce va fi executată de către fiecare din cele două numărătoare (timere). Controlul acestora se realizează prin intermediul registrului TCON.

Registrul PCON – adresa 87H este asociat controlului alimentării cu energie.

Registrul SBUF – adresa 99H este utilizat la transmisia/recepția datelor aferente portului serial.

1.7 Oscilatorul de tact

Toate microcontrolerele familiei INTEL 8051 au un oscilator încorporat care poate fi utilizat ca generator de tact pentru unitatea centrală de prelucrare. Pentru utilizarea oscilatorului intern se conectează între XTAL1 și XTAL2 un cristal de cuarț cu frecvența maximă de 12 MHz și doi condensatori de 30 pF la masă ca în figura 1.9.

Figura 1.9 Conectarea cristalului de cuarț la intrările XTAL1 și XTAL2

Generatorul intern poate fi condus și de semnale de tact externe obținute de la un oscilator extern. În tehnologia HMOS (varianta 8051) semnalul de la XTAL2 are rol conducător a generatorului de tact intern. In tehnologia HCMOS (varianta 80C51) semnalul de la XTAL1 are rolul conducator a generatorului de tact intern. Rezulta astfel variantele de conectare din figura 1.10.

Figura 1.10 Conectarea semnalelor de tact externe

Funcționarea sincronizată a microcontrolerului se desfășoară în faze, stări și cicluri mașină.O fază a microcontrolerului corespunde duratei T = 1/ R a perioadei de tact. Două faze succesive notate P1, P2 definesc o stare a microcontrolerului. Un ciclu mașină se desfășoară pe durata a 12 perioade T adică 6 stări, ca în figura 1.11. Cele 12 perioade ale unui ciclu mașină sunt notate S1P1, S1P2, S2P1, S2P2, S3P1, S3P2, S4P1, S4P2, S5P1, S5P2, S6P1, S6P2.

Microcontrolerul 8051 execută o instrucțiune în unul sau două cicluri mașină cu excepția instrucțiunilor de multiplicare și divizare ce se realizează în 4 cicli mașină.

Execuția unei instrucțiuni începe în faza S1P1 a unui ciclu mașină prin extragerea din memoria program a primului octet al instrucțiunii și transferul acestuia în registrul de instrucțiuni al microcontrolerului în faza S1P2. În cazul unei instrucțiuni cu codul mașină de doi ocțeti, al doilea octet se extrage din memoria program în starea S4 a aceluiași ciclu mașină. Rezultă că intr-un ciclu mașină se pot efectua două extrageri de coduri instrucțiune. Dacă este nevoie și de cel de-al treilea octet, acesta se va extrage în faza S1P2 a celui de-al doilea ciclu mașină. În stările în care se face extragere de cod instrucțiunea are loc și incrementarea numărătorului de program PC. Execuția unei instrucțiuni se termină în faza S6P2 a ciclului mașină corespunzător.

S1

P2

P1

S2

P2

P1

S3

P2

P1

S4

P2

P1

S5

P2

P1

S6

P2

P1

P1

Frecv_osc

S

F

CICLU MAȘINĂ (1 μs)

Figura 1.11 Structura unui ciclu mașină la INTEL 8051

Pentru a calcula timpul de execuție a unei instrucțiuni avem nevoie de numărul de cicli mașină a instrucțiunii respective și de frecvența cristalului de cuarț și se poate calcula prin formula următoare:

1.8 Inițializarea microcontrolerului

Inițializarea microcontrolerului este realizată cu activarea semnalului RST. Pentru a reseta microcontrolerul, acest semnal ar trebui să fie activ cel puțin douăzeci și patru perioade de tact. La alimentare, semnalul RST ar trebui să fie activ cel puțin o milisecundă după ce sursa de alimentare se stabilizează, pentru a permite oscilatorului să se stabilizeze. La primirea semnalului de RST, microcontrolerul încetează executarea instruțiunilor pe durata impulsului. Apoi inițiază o secvență care necesită aproximativ douăsprezece perioade de tact pentru a se executa înainte ca semnalul de comandă ALE să fie generat și funcționarea normală începe cu instrucțiunea de la locația absolută 0000H. Această secvență se termină cu inițializarea registrelor interne cu următoarele valori:

PC 0000H; după inițializare se execută instrucțiunile care se află în memoria program de la adresa 0000H.

A, B, PSW 00H; registrul accumulator A, registrul B și registrul cu indicatorii de condiții PSW se inițializează cu 0.

SP 07H; indicatorul de stivă este inițializat cu adresa 07H din memoria de date internă a microcontrolerului; stiva este definită în memoria internă de la adresa 08H.

DPTR 0000H; registrul care adresează memoria externă se inițializează cu zero.

P0, P1, P2, P3 FFH; porturile paralele sunt încărcate cu FFH pentru a putea fi utilizate după inițializare ca porturi paralele de intrare.

TMOD, TCON, TH0, TL0, TH1, TL1 00H; numărătoarele T0 și T1 sunt inițializate.

TCON2, TH2, TL2, RCAP2H, RCAP2L 00H; numărătorul T2 este inițializat.

SCON 00H; interfața serială este inițializată.

SBUF XXXXXXXXB; este încărcat cu o valoare binară nedeterminată.

IE 0XX00000B; dezactivarea surselor de întrerupere.

IP XXX00000B; stabilirea nivelului inferior de prioritate pentru toate sursele de întrerupere interne și externe.

PCON 0XXXXXXXB; pentru microcontrolerele realizare în tehnologie NMOS.

PCON 0XXX0000B; pentru microcontrolerele realizare în tehnologie CMOS.

ALE, 1; semnalele de comandă sunt setate pentru a putea fi utilizate ca intrări.

Memoria de date internă și memoria externă de date nu este afectată de inițializarea microcontrolerului. Figura de mai jos ilustrează unul dintre cele mai simple circuite de inițializare a microcontrolerului INTEL 8051.

Figura 1.12 Structura hard minimă pentru inițializarea microcontrolerului INTEL 8051

Funcțioanarea este simplă: la conectarea sursei de alimentare de tensiune continuă, condensator electric începe să se încarce pentru mai multe milisecunde printr-un rezistor conectat la masă. Semnalul RST este pe nivel HIGH în timpul acestui proces. Când condensatorul este încărcat, tensiunea de alimentare este deja stabilă și pinul RST rămâne conectat la masă, asigurând astfel funcționarea normală a microcontrolerului. Apăsând butonul de resetare determină condensatorul să se descarce temporar și microcontrolerul este resetat. Când butonul a fost eliberat, întregul proces este repetat.

1.9 Conectarea memoriei externe

Conectarea cu memoria program ROM externă se realizează astfel: semnalul de selecție a memoriei ROM externă este care este activat doar în cazul conectării microcontrolerului la memoria externă. Pe durata aducerii instrucțiunilor din memoria program externă, porturile P0 și P2 sunt dedicate realizării magistralelor de adrese și de date. Portul P0 implementează o magistrală de date și adrese multiplexată. P0 transmite partea mai puțin semnificativă a numărătorului de program PC (PCL), furnizând octetul mai puțin semnificativ al adresei instrucțiunii din memoria program externă. După transferul adresei, P0 este configurat ca magistrală de date. În momentul în care PCL este valid la ieșirea portului P0, semnalul ALE (Address Low Enable) transmite comanda de încărcare a PCL în circuitul bistabil de tip D (basculant bistabil) care face demultiplexarea magistralei de la portul P0. Simultan se generează la ieșirea portului P2 PCH astfel încât la ieșirea circuitului basculant bistabil și portului P0 se găsește adresa instrucțiunii care urmează a fi extrasă din memoria program externă. Apoi se generează semnalul de strobe (selectare) pentru memoria externă care comandă citirea instrucțiunii, transferată pe liniile portului P0.

Figura 1.13 Conectarea hard a memoriei program externe

ALE – "Address Latch Enable" – strob utilizat pentru memorarea informației de adresă emise prin portul P0 într-un latch extern.

– "Output Enable" – semnal utilizat pentru activarea ieșirilor circuitelor de memorie EPROM.

Conectarea cu memoria de date RAM externă presupune folosirea portului P0 ca magistrala de date și adrese multiplexată și două variante de generare a adresei. Prima variantă implică o adresă formată dintr-un octet generat la ieșirea portului P0 și încărcat sub comanda semnalului ALE în circuitul basculant bistabil de demultiplexare, la care se adaugă 3 biți de selecție a paginii de memorie externă generați prin portul P2. În acest fel se pot adresa 8 pagini de dimensiune 256 octeți. A doua variantă presupune generarea unei adrese pe 16 biți cu partea mai puțin semnificativă pe liniile portului P0 (la ieșirea circuitului basculant bistabil de demultiplexare) și partea mai semnificativă pe liniile portului P2. În ambele cazuri semnalele de comandă citire/scriere sunt semnalele de la microcontroler, iar transferul datei se face, după stabilirea adresei, pe liniile portului P0 care devine port de transfer de date.

Figura 1.14 Conectarea hard a memoriei de date externe

– "Write Enable" – semnal utilizat pentru validarea înscrierii informațiilor prezente la intrările de date în memoria RAM.

1.10 Porturile paralele de intrare/ieșire

Microcontrolerul 8051 conține patru porturi paralele bidirecționale de câte 8 biți. Fiecare port are un registru intern de 8 biți P0, P1, P2, P3 și un amplificator de magistrală bidirecțional. Prin structura microcontrolerului, porturile paralele pot realiza funcții alternative care determină utilizări specifice ale porturilor.

Astfel amplificatoarele de magistrală ale porturilor P0 și P2 se utilizează pentru accesul memoriilor externe. Portul P1 este un port clasic de intrare/ieșire. Liniile portului P3 pot avea utilizări alternative.

1.11 Structura portului P1

Un operand sursă pentru o instrucțiune de adresare directă a unui port poate fi dat de conținutul registrului portului sau de nivelele logice ale liniilor (pinilor) portului.

Figura 1.15 Structura unei linii din cele opt ale portului P1

În instrucțiunea ANL P1,A un operand sursă este conținutul registrului portului P1. În instrucțiunea ANL A,P1 un operand sursa este dat de nivelele logice corespunzătoare ale pinilor portului P1.

Această logică de funcționare se realizează prin comenzi corespunzătoare de citire a bistabilelor P1.X, respectiv a pinilor P1.X. Nivelul logic dintr-un bistabil al unui port poate fi diferit de nivelul logic al pinului corespunzător. De exemplu, dacă ieșirea Q a bistabilului P1.X este la nivel logic”1”, tranzistorul T este blocat și nivelul logic al pinului P1.X poate fi comandat din exterior.

Rezistența Rs este o rezistență de sarcină activă cu rolul de a mări viteza de comutare de la nivel logic “0” la nivel logic “1”. Această mărire de viteză se obține prin generarea de către sarcina activă a unui curent de 30 mA pe durata a două perioade ale generatorului de tact, începând cu frontul de comutare 0→1 logic de la ieșirea Q a bistabilului P1.X.

Figura 1.16 Structura rezistenței active

Tranzistorul T2 cu canal inițial, generează în permanență un curent de 0,25 mA. În regim staționar având Q la nivelul logic “0” sau “1”, tranzistorul T1 de tipul cu canal indus, este blocat deoarece nivelele logice de la întârzierile circuitului SAU-NU sunt complementare. După frontul de comutare a semnalului de la nivelul “1” la “0” logic, în intervalul a două perioade T0 ale generatorului de tact, întârzierile circuitului SAU-NU sunt la nivelul logic “0” și tranzistorul T1 generează un curent de 30 mA. Acest curent mărește viteza de comutare de la nivelul logic “0” la nivelul logic “1” a semnalului de ieșire de la pinul P1.X.

1.12 Structura portului P3

Portul P3 poate realiza aceleași funcțiuni ca și portul P1 și în plus poate fi utilizat pentru funcții alternative de intrare sau de la ieșire. Pentru realizarea funcției alternative de intrare corespunzătoare unui pin P3.X circuitul conține amplificatorul repetor A3 a cărui ieșire este conectată în structura microcontrolerului în concordanță cu funcția alternativă realizată.

Figura 1.17 Structura unei linii din cele opt ale portului P3

Deasemenea pentru realizarea funcției alternative de intrare este necesară blocarea tranzistorului T care se obține prin aplicarea de nivele logice 1 la intrările circuitului ȘI-NU. Astfel se impune programarea la nivel logic “1“ a bistabilului P3.X. cealaltă intrare a circuitului ȘI-NU este conectată intern la nivel logic “1“ în circuitul corespunzator unui pin P3.X cu funcție alternative de intrare.

Funcția alternativă de ieșire corespunzătoare unui pin P3.X se realizează prin comanda unei intrări în circuitul ȘI-NU, cealaltă intrare fiind stabilită la nivel logic “1“ prin programarea bistabilului P3.X. În cazul realizării funcției TXD (pin P3.1) linia de intrare în circuitul ȘI-NU pentru funcția alternativă este la nivel logic “1“ cu excepția intervalului corespunzător transmisiei unui caracter, declanșată de scrierea unui octet în registrul intern SBUF. În cazul realizării funcțiilor WR și RD liniile de intrare în circuitele ȘI-NU pentru funcțiile alternative sunt la nivel logic“1“, cu excepția intervalelor corespunzătoare ciclurilor de scriere, respective citire în/din memoria de date externă.

1.13 Structura portului P2

Portul P2 are funcția alternativă de transfer al octetului mai semnificativ al adresei în cicluri de extragere coduri instructiuni din memoria de program externă, în cicluri de citire din memoria de program externă, cu instrucțiuni MOVC și în cicluri de acces la memoria de date externă cu instrucțiuni MOVX în care adresarea se realizează cu registru DPTR. În aceste cicluri linia de comandă adresare este la nivel logic “1“ și impune poziția 1 pentru comutatorul k.

Figura 1.18 Structura unei linii din cele opt ale portului P2

Astfel bitul de adresă corespunzător comandă ieșirea P2.X a portului. Deasemenea, nivelul logic “1“ la ieșirea circuitului ȘI comandă sarcina activă RS astfel încât să genereze un current mai mare de 0,25 mA dacă bitul de adresă are nivel logic “1“. Se asigură astfel comanda corespunzătoare a circuitelor de memorie externă. În afara intervalelor corespunzătoare ciclurilor indicate mai sus portul P2 poate fi utilizat pentru intrări/ieșiri de uz general.

1.14 Structura portului P0

Are funcția alternativă de transfer al octetului mai puțin semnificativ al adresei, precum și al octetului cod instrucțiune sau dată în orice ciclu de acces la memoriile externe.

Figura 1.19 Structura unei linii din cele opt ale portului P0

În intervalele corespunzătoare acestor cicluri, linia de comandă adresare/transfer date, este la nivel logic “1“ și impune poziția 1 pentru comutatorul k. Astfel prin liniile portului P0 se poate realiza transferul adresei și datei de intrare sau ieșire, prin multiplexarea în timp. La ieșirea circuitului ȘI se obține nivel logic “1“ care deschide tranzistorul TS în intervalele de transfer biți de adresă cu nivel logic “1“, sau de ieșire biți de date cu nivel logic “1“. În afara acestor intervale, tranzistorul Ts este blocat. În ciclurile de acces la memoriile externe, bistabilele (biții) registrului P0 se încarcă cu nivele logice “1“.

În afara ciclurilor de acces la memoriile externe, portul P0 poate fi utilizat pentru intrări/ieșiri de uz general. Ieșirile P0.X sunt de tipul drenă în gol (Ts-blocat), iar intrările P0.X sunt de impedanță ridicată (T și TS = blocate, Q = 1 prin programare).

Similar Posts