Programare mcs 51. Microcontrolere MCS–51. Diagrama bloc, ALU, memorie de date. Acumulator și registre generale

22.04.2021 Siguranță

În prezent, diverse companii produc multe modificări și analogi ale acestei familii, atât de către Intel, cât și de către alți producători, viteza ceasului și capacitatea de memorie au crescut de zece ori și continuă să crească. Setul de module integrate în LSI este, de asemenea, extins; un număr mare de modele moderne au un ADC rezident de mare viteză încorporat cu până la 12, iar acum pot fi mai mulți biți. Dar familia MCS51 se bazează pe Intel LSI 8051, 80С51, 8751, 87С51, 8031, 80С31, ale căror primele mostre au fost lansate în 1980.

Microcontrolerele din familia MCS51 sunt realizate folosind tehnologia n-MOS de înaltă calitate (seria 8ХХХ, analogă - seria 1816 în Rusia și Belarus) și tehnologia k-MOS (seria 8ХСХХ, analogică - seria 1830). Al doilea caracter după 8 înseamnă: 0 – nu există EPROM pe cip, 7 – o EPROM 4K cu ștergere ultravioletă. Al treilea caracter: 3 – on-chip ROM, 5 – dacă nu există ROM, atunci există o mască ROM pe cip.

Și așa 80С51 - LSI bazat pe tehnologia k-MOS cu o mască ROM pe cip, 8031 ​​​​- LSI n-MOS fără memorie de program (ROM, RPOM) pe cip, 8751 - LSI n-MOS cu un rezident (situat pe cip) RPOM cu ștergere ultravioletă. Vom lua în considerare în continuare 8751 LSI, făcând, dacă este necesar, rezerve cu privire la diferențele dintre alte circuite, citând acei parametri care au fost publicati pentru primele LSI-uri seriale. Dacă este necesar, puteți găsi informații suplimentare despre toate modificările moderne în directoarele companiei și în documentația tehnică.

A. Caracteristici generale și alocarea pinului

Familia MCS51 se bazează pe cinci modificări ale MK (având caracteristici de bază identice), principala diferență între care este implementarea memoriei programului și consumul de energie (a se vedea tabelul 3.1). Microcontrolerul este pe opt biți, adică are comenzi pentru procesarea cuvintelor de opt biți, are o arhitectură Harvard, frecvența de ceas a mostrelor de bază ale familiei este de 12 MHz.

Tabelul 3.1.

Microcircuite

Memoria internă a programului, octeți

Tipul memoriei programului

Memoria internă de date, octet

Frecvența ceasului, MHz

Consum de curent, mA

MK 8051 și 80C51 conțin o memorie de program ROM programabilă cu mască cu o capacitate de 4096 de octeți în timpul fabricării cipului și sunt proiectate pentru utilizare în producția de masă. MK 8751 conține un RPOM de 4096 de octeți cu ștergere ultravioletă și este convenabil în stadiul de dezvoltare a sistemului atunci când se depanează programe, precum și în timpul producției în loturi mici sau când se creează sisteme care necesită rescriere în timpul funcționării.

reglaj periodic.

MK 8031 ​​​​și 80C31 nu conțin memorie de program încorporată. Ele, ca și modificările descrise anterior, pot folosi până la 64 KB de memorie externă de program și sunt utilizate efectiv în sistemele care necesită un volum semnificativ mai mare (decat 4 KB pe cip) de memorie de program ROM.

Fiecare MK al familiei conține o memorie rezidentă de date cu o capacitate de 128 de octeți, cu capacitatea de a extinde cantitatea totală de date RAM până la 64 KB prin utilizarea circuitelor integrate RAM externe.

    procesor central pe opt biți;

    4 KB memorie program (numai 8751 și 87C51);

    memorie de date de 128 de octeți;

    patru porturi I/O programabile pe opt biți;

    două temporizatoare/contoare multimod de 16 biți;

    sistem de întrerupere auto-vector cu cinci vectori și două niveluri de prioritate controlate de software;

    interfață serială, inclusiv un transceiver duplex universal capabil să funcționeze în patru moduri;

    generator de ceas.

Sistemul de comandă MK conține 111 comenzi de bază cu un format de 1, 2 sau 3 octeți. Microcontrolerul are:

    32 de registre scop general RON, organizate în patru bănci de opt registre cu denumiri R0... R7, alegerea unei bănci sau a altuia este determinată de program prin setarea biților corespunzători în registrul de stare program PSW;

    128 de steaguri controlate de software (procesor de biți, vezi mai jos);

    un set de registre de funcții speciale care controlează elementele MK. Există următoarele moduri de operare ale microcontrolerului:

1). Resetare generală. 2).Funcționare normală. 3). Modul de consum redus de energie și modul inactiv. 4). Modul de programare pentru RPOM rezident, dacă este disponibil.

Aici ne vom concentra asupra primelor două moduri de funcționare; o descriere detaliată a compoziției și funcționării MK în toate modurile este dată în Anexa P1.

Zona RON și procesorul de biți sunt situate în spațiul de adrese al RAM rezidentă cu adrese de la 0 la 80h.

În zona superioară a adreselor RAM rezidenţiale există registre cu funcţii speciale (SFR, Special Function Registers). Scopul lor este prezentat în tabel. 3.2.

Tabelul 3.2.

Desemnare

Nume

Baterie

Registrul B

Registru de stare program

Indicator de stivă

Indicator de date. 2 octeți:

Octet mic

Octet mare

Întreruperea registrului prioritar

Întreruperea registrului de activare

Înregistrare mod temporizator/contor

Registrul de control al cronometrului/contorului

Temporizator/contor 0. Octet mare

Temporizator/contor 0. Octet scăzut

Temporizator/contor 1. Octet mare

Temporizator/contor 1. Octet scăzut

Controlul portului serial

Buffer serial

Managementul consumului

* - registre, permițând pe biți adresarea

Să ne uităm pe scurt la funcțiile registrelor SFR prezentate în Tabelul 3.2.

Baterie ACC - registrul acumulatorului. Comenzi concepute pentru a funcționa

tu cu bateria, folosește mnemonicul „A”, de exemplu, MOV A, P2 . Mnemonicul ACC este utilizat, de exemplu, atunci când se adresează pe biți un acumulator. Astfel, numele simbolic al celui de-al cincilea bit al acumulatorului atunci când se utilizează asamblatorul A5M51 va fi următorul: ACC. 5. .

Inregistreaza-te ÎN . Folosit în timpul operațiilor de înmulțire și împărțire. Pentru alte instrucțiuni, registrul B poate fi tratat ca un registru suplimentar în timp real.

Inregistreaza-te stat programe P.S.W. conține informații despre starea programului și se instalează parțial automat pe baza rezultatului operației efectuate și parțial de către utilizator. Desemnarea și scopul biților de registru sunt date în Tabelele 3.3 și, respectiv, 3.4.

Tabelul 3.3.

Desemnare

Tabelul 3.4.

Desemnare

Alocarea biților

Acces la biți

Purtați steagul. Modificări în timpul executării unei serii de instrucțiuni aritmetice și logice.

Hardware sau software

Steagul de transport suplimentar. Setat/șters în hardware în timpul instrucțiunilor de adunare sau scădere pentru a indica o transportare sau împrumut în bitul 3 atunci când este generat cel mai puțin semnificativ ciugulit al rezultatului (D0-D3).

Hardware sau software

Steagul 0. Steagul definit de utilizator.

Din punct de vedere programatic

Din punct de vedere programatic

Registrul de lucru Index bancar

Din punct de vedere programatic

Banca 0 cu adrese (00Н - 07Н) Banca 1 cu adrese (08Н - 0FН) Banca 2 cu adrese (10Н - 17Н) Banca 3 cu adrese (18Н - 1FН)

Steagul de preaplin. Setat sau șters de hardware în timpul execuției instrucțiunilor aritmetice pentru a indica o condiție de depășire

Hardware sau software

De rezervă. Conține un declanșator care poate fi scris și care poate fi utilizat

Bit de paritate. Hardware resetat sau setat la fiecare ciclu de instrucțiuni pentru a indica un număr par sau impar de biți a bateriei în starea „1”.

Hardware sau software

Indicator grămadă SP - Un registru de 8 biți al cărui conținut este incrementat înainte de a scrie date în stivă atunci când sunt executate instrucțiunile PUSH și CALL. La resetarea inițială, indicatorul stivei este setat la 07H, iar zona stivei din memoria RAM de date începe la adresa 08H. Dacă este necesar, suprascriind indicatorul stivei, zona stivei poate fi localizată oriunde în memoria RAM internă a datelor microcontrolerului.

Indicator date DPTR constă dintr-un octet înalt (DPH) și un octet scăzut

(DPL). Conține o adresă de 16 biți la accesarea memoriei externe. Poate fi folosit

fie un registru de 16 biți sau două registre independente de opt biți.

Port0 - PortZ. Biții separați ai registrelor funcțiilor speciale P0, P1, P2, RZ sunt biții „latch” ai porturilor P0, P1, P2, RZ.

Tampon consistent port SBUF reprezintă două registre separate: bufferul emițătorului și bufferul receptorului. Când datele sunt scrise în SBUF, acestea intră în buffer-ul transmițătorului, iar scrierea unui octet în SBUF inițiază automat transmisia prin portul serial. Când datele sunt citite din SBUF, acestea sunt preluate din bufferul receptorului.

Registrele temporizator. Înregistrați perechile (TH0, TL0) și (TH1, TL1) forma 16

registre de numărare de biți pentru cronometru/contor 0 și respectiv cronometru/contor 1.

Registrele management. Registrele funcțiilor speciale IP, IE, TMOD, TCON, SCON și PCON conțin biți de control și biți de stare ai sistemului de întrerupere, timp-

măsuri/contoare şi port serial. Ele vor fi discutate în detaliu mai jos.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 E.A.

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

Când funcționează, MC oferă:

    timpul minim de execuție pentru comenzile de adăugare este de 1 μs;

    multiplicarea și împărțirea hardware cu un timp minim de execuție de 4 μs.

MK oferă capacitatea de a seta frecvența oscilatorului intern folosind cuarț, un lanț LC sau un oscilator extern.

Sistemul de instrucțiuni extins oferă adrese de octeți și biți, aritmetică zecimală binară și binară, indicație de depășire și determinare par/impar și capacitatea de a implementa un procesor logic.

Cea mai importantă și distinctivă caracteristică a arhitecturii familiei MCS51 este că ALU poate manipula date pe un singur bit în plus față de efectuarea operațiunilor pe tipuri de date pe 8 biți. Biții individuali accesibili de software pot fi setați, șterși sau înlocuiți cu complementul lor, pot fi redirecționați, verificați și

Fig.3.2. Știfturi externi

microcontroler

utilizate în calcule logice. Întrucât suport pentru tipuri de date simple (dacă este disponibil)

În timp ce tendința actuală spre lungimi mai mari de cuvinte poate părea un pas înapoi la prima vedere, această calitate face ca familia de microcontrolere MCS51 să fie deosebit de potrivită pentru aplicațiile bazate pe controlere. Algoritmii de operare ai acestuia din urmă presupun prezența variabilelor booleene de intrare și de ieșire, care sunt greu de implementat folosind microprocesoare standard. Toate aceste proprietăți sunt numite colectiv procesor boolean al familiei MCS51. Această ALU puternică face ca familia de microcontrolere MCS51 să fie potrivită atât pentru aplicații de control în timp real, cât și pentru algoritmi mari consumatoare de date.

Schema circuitului microcontrolerului este prezentată în Fig. 3.2. În versiunea de bază, este ambalat într-un pachet DIP cu 40 de pini. Să ne uităm la scopul acelor.

Să începem cu pinii de alimentare «0 ÎN" Și „5 ÎN" , prin care primește hrana de bază. Consumul curent este dat în tabel. 3.1.

Concluzie "RST" - resetarea microcontrolerului. Când un nivel înalt activ este aplicat acestui pin, modul general resetare iar MK efectuează următoarele acțiuni:

Setează la zero contorul de programe PC și toate registrele de funcții speciale, cu excepția zăvoarelor portului P0-P3, pointerului stivei SP și registrului SBUF;

    indicatorul de stivă ia valoarea egală cu 07H;

    dezactivează toate sursele de întrerupere, timer-counter și seriale

    selectează BANK 0 RAM, pregătește porturile P0-RZ pentru primirea datelor și determinarea

partajează pinii ALE și PME ca intrări pentru ceasul extern;

      în registrele de funcții speciale PCON, IP și IE, biții rezervați iau valori aleatorii, iar toți ceilalți biți sunt resetati la zero;

      registrul SBUF este setat la valori aleatorii.

      setează zăvoarele porturilor P0-PZ la „1”.

Stările registrelor microcontrolerului după resetare sunt prezentate în Tabelul 3.5.

Tabelul 3.5.

informație

Incert

0ХХХ0000V pentru k-MOS 0XXXXXXXB pentru n-MOS

Pinul RST are și o funcție alternativă. Alimentarea de rezervă este furnizată prin intermediul acestuia pentru a menține conținutul RAM al microcontrolerului neschimbat atunci când cel principal este îndepărtat.

concluzii BQ1, BQ2 sunt destinate conectării unui rezonator de cuarț care determină frecvența de ceas a MK.

Concluzie EA` (E externă A rochie extern abordare) - conceput pentru a activa modul de citire a codurilor de control din memorie externa programe când un nivel scăzut activ este aplicat acestui pin. Ieșirea are un scop alternativ (funcție). Este alimentat cu tensiune de programare de la RPOM în modul de programare.

Concluzie PME (P program M emoție E nabil permisiune memorie programe) - este conceput pentru a controla ciclul de citire din memoria programului și este activat automat de către MK în fiecare ciclu al mașinii.

Concluzie ALE (A rochie L lungimea E nabil permisiune Junior adrese) strobozește ieșirea părții de ordin inferioară a adresei prin portul P0. Ieșirea este, de asemenea, utilizată la programarea RPOM, în timp ce îi este furnizat un impuls stroboscopic pentru procesul de programare.

MK conține patru grupuri de porturi: P0, P1, P2 și P3. Aceștia sunt cei 40 de pini rămași ai microcontrolerului. Aceste porturi pot servi pentru intrarea și ieșirea bit-cu-bit de informații, dar în plus, fiecare dintre ele are propria sa specializare. O diagramă funcțională generalizată a portului este prezentată în Fig. 3.3. Portul conține comutatoare de ieșire FET conectate la pin, un comutator de funcție, un dispozitiv de blocare a flip-flop D și logica de control. O unitate sau zero pot fi scrise pe zăvorul de pe magistrala internă a MK. Aceste informații sunt trimise prin comutatorul de funcție către comutatoarele de ieșire și ieșirea MK. Într-o stare, ambele tranzistoare N și N1 sunt închise, dar N2 este deschis. În starea zero N se deschide-

Xia, iar N2 se închide. În momentul în care un port îndeplinește o funcție alternativă pentru care este specializat, starea de blocare a ieșirii este ștearsă. Microcontrolerul poate citi separat starea latch-ului portului și starea ieșirii acestuia, stabilite de un semnal extern. În acest scop, asamblatorul MK conține comenzi speciale care activează liniile corespunzătoare. Pentru a citi starea pinului în zăvorul portului corespunzător,

fi preînregistrat

Din interior

Încuietoare de control

Comutator de funcții

Vcc

Sfârșit de săptămână

unitate. Când este activată linia „read latch”, apare ieșirea celulei „ȘI” la care este conectată această linie.

anvelopele ei MK D Q

Scrieți în blocarea C Q

Citiți zăvorul

Pin port

Starea de blocare este transmisă magistralei interne a MC atunci când este activată

„Ieșire de citire” - starea pinului extern al portului.

Port P0 – port bidirecțional universal

I/O Dincolo de acest port

funcţia de organizare a magistralelor de adrese externe şi

Orez. 3.3. Schema funcțională a portului microcontrolerului

date pentru extinderea memoriei de program și a memoriei de date

microcontroler. Când se accesează memoria externă a programului sau se execută o comandă pentru a accesa memoria externă de date, partea de ordin inferioară a adresei (A0...A7) este setată la pinii portului, care este înălțată la pinul ALE. Apoi, la scrierea datelor în memorie, informațiile înregistrate din magistrala internă a MK sunt trimise la pinii portului P0. În operațiunile de citire, dimpotrivă, informațiile de la pinii portului sunt trimise către magistrala internă. O caracteristică a portului P0 este absența unui tranzistor „pull-up” N2, care oferă putere la ieșire. Când scrieți în blocul portului unității, acesta este pur și simplu transferat la o stare de impedanță ridicată, care este necesară pentru funcționarea normală a magistralei de date. Dacă este necesară alimentarea oricăror dispozitive externe prin ieșire, trebuie furnizate rezistențe externe de la circuitele de alimentare la ieșirea portului.

Port P1 – port I/O bidirecțional universal fără funcții alternative.

Port P2 – un port I/O bidirecțional universal, care, ca funcție alternativă, emite partea superioară a adresei (A8...A15) la accesarea memoriei externe.

Port P3 – un port I/O bidirecțional universal, fiecare bit prevede implementarea diferitelor funcții alternative. În acest caz, funcțiile alternative sunt implementate numai dacă sunt scrise în zăvorul pinii portului; în caz contrar, execuția funcțiilor alternative este blocată. Să le listăm separat pentru fiecare bit:

P3.0 RxD (R ead e X intern D ate, read external data) – intrarea transceiver-ului serial încorporat.

P3.1 TxD (T da e X intern D ate, transmite date externe) – ieșirea transceiver-ului serial încorporat.

P3.2 INT0` (INT eroare, întrerupere) – intrare de întrerupere externă 0.

P3.3 INT1` – intrarea de întrerupere externă 1.

P3.4 С/T0 – zero intrare temporizator/contor încorporată.

P3.5 C/T1 – intrarea primului temporizator/contor încorporat.

P3.6 WR` (W rite, write) – ieșire pentru controlul ciclului de scriere în memoria de date.

P3.7 RD` (R ead, read) – ieșirea de control a ciclului de citire din memoria de date.

Pinii portului P1, P2 și P3 sunt capabili să scoată un curent de aproximativ 0,2 mA pe unitate și să primească un curent de 3 mA la zero; pinii portului P0 sunt mai puternici și sunt capabili să furnizeze un curent de aproximativ 0,8 mA într-o unitate și primind un curent de 5 mA la zero. Informații scurte despre scopul pinii microcontrolerului sunt date în Tabelul 3.6.

Tabelul 3.6.

Desemnare

Scopul ieșirii

Port bidirecțional pe 8 biți P1. Intrarea adresei A0-A7 la verificarea memoriei interne (RPM)

intra in iesire

Semnal de resetare generală. Putere de rezervă RAM de ieșire de la o sursă externă (pentru 1816)

Port P3 bidirecțional pe 8 biți cu funcții suplimentare

intra in iesire

Date seriale receptorului - RxD

Transmițător de date seriale - TxD

Intrare de întrerupere externă 0-INT0`

Intrare de întrerupere externă 1-INT1`

Intrare temporizator/contor 0: - T0

Intrare temporizator/contor 1: - T1

Ieșire semnal stroboscopic la scrierea în memoria de date externă: - WR`

Ieșire semnal stroboscopic la citirea din memoria de date externă – RD`

Cabluri pentru conectarea unui rezonator de cuarț.

ieșire din intrare

Concluzie generală

Port bidirecțional pe 8 biți P2. Ieșire adresa A8-A15 în modul memorie externă. În modul de verificare ROM intern, pinii P2.0 - P2.6 sunt utilizați ca intrare a adreselor A8-A14. Pin P2.7 - permisiunea de citire a ROM-ului.

intra in iesire

Rezoluția memoriei programului

Semnal de ieșire de activare a fixării adresei. La programarea semnalului RPOM: PROG

intra in iesire

Blocarea lucrărilor cu memoria internă. La programarea RPOM, este dat semnalul UPR

intra in iesire

Port bidirecțional pe 8 biți P0. Adresă/bus de date pentru lucrul cu memorie externă. Ieșire de date D7-D0 în modul de testare ROM intern (RPM).

intra in iesire

Putere de ieșire de la sursa de tensiune +5V

Versiunea de bază MCS–51 Informații scurte. Microcontrolerele moderne de 8 biți (MC) au astfel de resurse de control în timp real, pentru care au fost utilizate anterior dispoziții multi-cipuri costisitoare sub formă de plăci separate pentru microcalculatoare, și anume:

● să aibă o capacitate de memorie suficientă, împărțirea sa fizică și logică în memorie de program și memorie de date (arhitectura Harvard) și un sistem de comandă care vizează executarea algoritmilor de control;

● include toate dispozitivele (procesor, ROM, RAM, porturi de intrare/ieșire, sistem de întrerupere, instrumente de procesare a informațiilor pe biți etc.) necesare implementării sistem cu microprocesor control minim al configurației. În anii 70 ai secolului trecut compania Intel o familie de microcontrolere MCS-48 pe 8 biți, unite printr-o serie de caracteristici comune (capacitate de biți, sistem de comandă, set de blocuri funcționale principale etc.), a fost dezvoltată și lansată în producția industrială. Versiunea de bază a acestei familii include:

● procesor pe 8 biți;

● memorie internă de program (1/2/4K octeți);

● memorie internă de date (64/128/256 octeți);

● până la 27 de linii I/O interne și 16 externe;

● un timer-contor de 8 biți;

● sistem de întrerupere cu un singur nivel cu două surse de solicitare. În 1980, aceeași companie a dezvoltat o nouă familie de microcontrolere pe opt biți MCS-51, care este compatibilă cu arhitectura familiei MCS-48, dar are mai multe posibilități largi.

Arhitectura familiei MCS-51 s-a dovedit a fi atât de reușită încât este încă unul dintre standardele pentru MK-urile pe 8 biți. Prin urmare, obiectul de studiu a fost ales să fie microcontrolere din această familie, care sunt utilizate pe scară largă în sistemele de control relativ simple.

Au fost dezvoltate diverse instrumente de pregătire a programelor pentru familia MCS-51 (compilatoare, emulatoare hardware-software etc.) și există un număr mare de biblioteci de rutine standard. Familia include diverse modificări ale microcircuitelor (versiuni cu cip) ale microcontrolerelor. Articolele din această secțiune discută în detaliu versiunea de bază a microcontrolerelor din familia MCS-51 (microcircuitul 8051 corespunde analogului domestic KP1816BE51), cel mai simplu din punct de vedere structural și funcțional și din punct de vedere al înțelegerii.

Serii ulterioare de cipuri, menținând în același timp compatibilitatea cu versiunea de bază, diferă de acesta prin tehnologia de producție îmbunătățită, parametrii electrici, hardware suplimentar și funcţionalitate. Următoarele articole sunt dedicate caracteristicilor structurale și funcționale ale modificărilor ulterioare ale familiei de microcircuite MCS-51.
Diagrama bloc generalizată a MCS-51. Compoziția MC, a cărei diagramă bloc generalizată este prezentată în Fig. 7.1.1, include:

● Unitate centrală de procesare (CPU) pe 8 biți constând din ALU, dispozitive de control UUși generator de adrese F;

● masca ROM cu o capacitate de 4K bytes pentru stocarea programelor;

● RAM cu o capacitate de 128 bytes pentru stocarea datelor;

● patru porturi programabile P0–P3 pentru intrare– ieșire de informații;

● Unitate de interfață serială BPI pentru schimbul de informații cu dispozitive externe prin linie cu două fire;

● blocarea temporizatoarelor/contoarelor BT/C pentru a menține modul în timp real;

● Bloc de întreruperi BP pentru organizarea întreruperilor programelor executabile. Aceste fonduri se formează rezident parte a microcontrolerului situat direct pe cip. MK include un număr mare de registre, care sunt alocate unor blocuri funcționale separate și nu sunt prezentate în diagramă.

De asemenea, diagrama nu prezintă circuite de control. Schimbul bidirecțional de informații între blocuri se realizează prin intermediul intern de 8 biți magistrala de dateШД-8.

Pe 16 biți intern magistrala de adreseША-16 Adresa generată în CPU este transmisă către ROM (12 biți de adresă) și către RAM (8 biți de ordin inferior).

Când se utilizează memorie externă, cei 8 biți cei mai puțin importanți ai adresei sunt scoși la portul P0 și cei 3 sau 8 biți cei mai importanți la portul P2.

Pentru a extinde logic interfața, se folosește combinarea funcțiilor liniilor de port. Ca exemplu în Fig. 7.1.1 linia punctată arată liniile portului P3 care funcționează alternativă funcțiile de transmitere a semnalelor de control, al căror scop va fi discutat mai jos. Pentru a crea un generator de ceas intern, un rezonator cu cuarț și doi condensatori sunt conectați la bornele microcircuitului MK (Fig. 7.1.1). În loc de generatorul de ceas intern, puteți utiliza sursă externă ezitare. Denumirea grafică convențională a microcircuitului MK este prezentată în Fig. 7.1.2, denumirea și scopul știfturilor - în tabel. 7.1.1. Să luăm în considerare blocurile funcționale ale MK și principiul funcționării lor. Dispozitiv logic aritmetic. Dispozitivul logic aritmetic este proiectat pentru a efectua operații aritmetice (inclusiv înmulțirea și împărțirea) și logice pe operanzi de opt biți, precum și operații de deplasare logică, zero, setare etc. Diagrama bloc a ALU este prezentată în Fig. 7.1.3.

ALU include

● paralel de opt biți sumator SM de tip combinațional cu purtare secvențială, efectuând operații aritmetice (adunare și scădere) și logice (adunare, înmulțire, disparitate și identitate);

baterie A, asigurarea funcțiilor registrului aritmetic principal;

Inregistreaza-te B, folosit pentru implementarea operațiunilor de înmulțire și împărțire sau ca registru suplimentar super-operațional, ale cărui funcții sunt determinate de utilizator;

registre(software nu este disponibil) depozitare temporaraРВХ1, РВХ2, destinate primirii și stocării operanzilor pe durata operațiunii;

● ROM constante ROM, care stochează codul de corecție pentru reprezentarea zecimală binară a datelor, codul masca pentru operațiile pe biți și codul pentru constante;

registru de cuvinte de stare a programului PSW, care înregistrează starea ALU după o operațiune finalizată. În tabel 7.1.2 furnizează informații despre alocarea biților biților individuali ai registrului PSW. Dispozitiv de control. Unitatea de control (CU) a procesorului central destinat pentru coordonare colaborare toate nodurile MK utilizând impulsuri de ceas generate și semnale de control. Se compune din (Fig. 7.1.4):

unitate de sincronizare și control Sistemul de control, care generează impulsuri de ceas care definesc ciclurile mașinii și stările lor individuale (S) și fazele (P) și, în funcție de modul de funcționare al microcontrolerului, generează setul necesar de semnale de control. Este nevoie de unul, două sau patru cicluri de mașină pentru a executa o comandă.

Fiecare ciclu de mașină are șase state S1–S6, A include fiecare stare doua faze P1, P2, a căror durată este perioada de oscilație a generatorului de ceas T 0SC.

Durata ciclului mașinii este de 12T 0SC. Toate ciclurile mașinii sunt aceleași, începând cu faza S1P1 și terminând cu faza S6P2.

În plus față de impulsurile de ceas, dispozitivul de sincronizare generează două (uneori unul) semnale de poartă pentru octetul scăzut al adresei ALE în fiecare ciclu de mașină sub forma unui impuls pozitiv în fazele S1P2–S2P1 și S4P2–S5P1. Diagramele de timp din fig. 7.1.5 ilustrează organizarea ciclurilor mașinii;

● registru de comenzi RK, decodor de comenzi DC și PLM, permițând în fiecare ciclu al mașinii să genereze un set de micro-operații în conformitate cu microprogramul comenzii executate;

● Logica de intrare/ieșire LVV pentru recepția și emiterea de semnale care asigură schimbul de informații între microcontroler și dispozitive externe prin porturile P0–P3;

● Registrul PCON, care are un singur bit SMOD activat în poziția PCON.7 pentru a dubla rata de date a portului serial. Biții rămași sunt rezervați pentru utilizare ulterioară.
Generator de adrese. Generator de adrese (FA) sau contor de comenzi PC, destinat pentru a forma adresa curentă de 16 biți a memoriei programului și adresa de 8/16 biți a memoriei de date externe. Se compune din (Fig. 7.1.6):

● 16 biți tampon B, care comunică între magistrala de date SD de 8 biți și magistrala internă (IB) de 16 biți a formatorului de adrese;

● Circuit SI incremental pentru cresterea valorii adresei curente memoria programului pe unitate;

● registru pentru stocarea adresei curente a comenzilor PTA provenite din SI;

● registru indicator de date DPTR , format din două registre de 8 biți DPH și DPL. Acesta servește la stocarea unei adrese de 16 biți a memoriei de date externe și poate fi folosit ca două RON independente accesibile prin software;

● registrul generatorului de adrese XRF pentru stocarea adresei executive de 16 biți a memoriei programului sau a adresei de 8/16 biți a memoriei de date externe. Acest registru este folosit și pentru a transmite date prin portul P0 către dispozitive externe atunci când se execută comenzile MOVX @Rm, A și MOVX @DPRT, A.

Memoria de date. Memoria de date destinat pentru primirea, stocarea și emiterea informațiilor utilizate în timpul execuției programului. Memoria internă (rezidentă) de date (Fig. 7.1.7) constă din RAM cu o capacitate de 128 de octeți, indicator de stivă S.P. registrul de adrese RAM RA și decodor Dsh. Stack pointer SP este un registru de 8 biți conceput pentru a primi și stoca adresa celulei stivei care a fost accesată ultima dată. După resetare, indicatorul stivei este setat la adresa 07H, care corespunde începutului stivei cu adresa 08H. Registrul de adrese PA împreună cu decodorul Dsh permite accesul la celula de memorie necesară care conține un octet sau un bit de informații.

MK oferă capacitatea de a crește capacitatea memoriei de date până la 64 KB prin conectare dispozitive de stocare externe. Ca exemplu în Fig. 7.1.8 arată organizarea paginii memoriei externe de date VPD cu o capacitate de 2K octeți folosind comenzi de tip MOVX @ Rm(m = 0; 1). În acest caz, portul P0 funcționează ca o magistrală de adrese/date multiplexate, trei linii ale portului P2 sunt folosite pentru a adresa o pagină de RAM externă, iar celelalte cinci linii pot fi folosite ca linii de intrare/ieșire.
În fig. 7.1.9 arată diagramele de timp ale ciclurilor de citire și scriere atunci când MK funcționează cu RAM externă. Diagramele indică:

● RSN - octet mare al contorului de comenzi PC;

● DPL, DPH - octeți mici și înalți ai registrului pointerului de date DPTR, care este utilizat ca registru pentru adresarea indirectă în comenzile MOVX @DPTR,A și MOVX A,@DPTR;

● P2 SFR - zăvoare port P2;

● Rm (m = 0, 1) - registre utilizate în instrucțiunile MOVX @Rm, A și MOVX A, @Rm ca registre de adrese indirecte;

● Z - stare de înaltă rezistență;

● D - perioada în care datele de la portul P0 sunt introduse în microcontroler. Memoria programului. Memoria de programe este concepută pentru a stoca programe, are propriul spațiu de adrese (separat de memoria de date) și este doar pentru citire. Include un decodor Dsh și ROM (Fig. 7.1.10). Pentru a adresa memoria programului se folosește un numărător de PC pe 16 biți, astfel încât capacitatea sa maximă este de 64K octeți. Memoria internă a programului constă dintr-un ROM de 4K octeți și un decodor de 12 biți. Memoria externă este conectată conform diagramei din Fig. 7.1.11. Dacă 0 V este aplicat pinului ¯EA al MK (după cum se arată în Fig. 7.1.11), memoria internă a programului este dezactivată. Toate accesările la memorie încep la adresa 0000h. Când pinul ¯EA este conectat la o sursă de alimentare, accesul la memoria internă a programului la adresele 0000h–FFFFh și la memoria externă a programului la adresele 0FFFh–FFFFh are loc automat.

Pentru a citi memoria externă a programelor MK, este generat semnalul ¯PSEN. Când lucrezi cu memorie interna Semnalul de citire nu este utilizat. Când accesați memoria externă a programului, se formează întotdeauna o adresă de 16 biți. Octetul mic al adresei este transmis prin portul P0 în prima jumătate a ciclului mașinii și este fixat prin tăierea strobe-ului ALE în registru.În a doua jumătate a ciclului, portul P0 este folosit pentru a introduce un octet de date din memoria externă în MK.

Cel mai semnificativ octet al adresei este transmis prin portul P2 pe parcursul întregului timp de acces la memorie.

Diagramele de timp ale ciclurilor de citire și scriere atunci când MK funcționează cu RAM externă sunt prezentate în Fig. 7.1.12.
Diagramele indică:

● PCL OUT - ieșirea octetului inferior al contorului de programe PC;

● RSN OUT - iesirea octetului inalt al contorului de comenzi PC;

● DPH - octet mare al registrului pointer de date DPTR, care este folosit ca registru pentru adresare indirectă în instrucțiunile MOVX @DPTR,A și MOVX A,@DPTR;

● P2 SFR - zăvoare port P2;

● INS IN - introducerea octetului de instrucţiune (comandă) din memoria programului;

● ADDR OUT - emiterea octetului mic al adresei de memorie de date externe din registrele Rm (m = 0, 1) sau din registrul DPL (registru DPTR low). Porturi I/O. Alocarea portului. Porturi P0, P1, P2, P3 destinat pentru schimbul de informații între MK și dispozitivele externe și, de asemenea, pentru îndeplinirea următoarelor funcții:

● byte-ul inferior al adresei A7…A0 este scos prin portul P0; un octet de date este scos din MK și introdus în MK atunci când se lucrează cu memorie externă de program și memorie externă de date (separată în timp);

● prin portul P2, octetul mare al adresei A15...A8 este scos când se lucrează cu memorie externă de program și memorie externă de date (numai când se utilizează comenzile MOVX A,@DPTR și MOVX @DPTR,A);

● liniile portului P3 pot fi folosite pentru a efectua funcții alternative dacă în zăvorul acestei linii este introdus 1, în caz contrar la ieșirea de linie este fixat 0. Funcțiile alternative ale pinii portului P3 sunt date în tabel. 7.1.3.

Caracteristicile circuitelor porturi

În fig. 7.1.13 prezintă diagrame pentru un canal al fiecăruia dintre porturile MK, inclusiv:

● zăvor pentru fixarea bitului de date primit;

● amplificator de ieșire cascadă(conducător auto);

● nod conecțiune cu treapta de iesire (cu exceptia P2);

● un circuit pentru transmiterea unui bit de date din partea de ieșire a portului, format din bufferele B2 și B3 (pentru portul P4). Latch-ul este un D-flip-flop, tactat de semnalul intern „Write to latch”. Bitul de date de la ieșirea directă a flip-flop-ului D poate fi citit programatic prin intermediul tamponului B1 folosind semnalul „Read Latch” la linia magistralei de date interne (ID) a MK.

Etapa de ieșire portul P0 este un invertor, ale cărui caracteristici se manifestă prin faptul că tranzistorul de sarcină VT2 se deschide numai la accesarea memoriei externe (la transmiterea adreselor și datelor prin port). În toate celelalte moduri, tranzistorul de sarcină este închis. Prin urmare, pentru a utiliza P0 (Fig. 7.1.13, a) ca port de ieșire de uz general, este necesar să conectați rezistențe externe de sarcină la bornele sale. Când scrieți 1 în blocarea portului, tranzistorul invertorului VT1 este blocat și pinul extern al portului P0.X este comutat la o stare de înaltă rezistență. În acest mod, ieșirea portului P0.X poate servi ca intrare. Dacă portul P0 este utilizat ca port I/O de uz general, fiecare dintre pinii săi P0.X poate funcționa independent ca intrare sau ieșire. Etape de ieșire porturile P1, P2, P3 (Fig. 7.1.13, b, c, d) realizat conform circuitelor invertorului cu o rezistență de sarcină internă, care este folosită ca tranzistor VT2.

Pentru a reduce timpul de comutare atunci când pinii portului trec de la starea 0 la starea 1, a fost introdus un tranzistor suplimentar VT3 în paralel cu tranzistorul de sarcină VT2. Tranzistorul VT3, folosind elemente din circuitul porții, este deblocat pentru un timp egal cu două perioade de oscilație ale oscilatorului de cuarț principal (în timpul fazelor S1P1, S2P2 ale ciclului mașinii). Etape de ieșire porturile P0, P2 (Fig. 7.1.13, A, c) care utilizează multiplexorul MX pot fi conectate fie la latch-uri, fie la magistralele interne „Adresă/date” și „Adresă”. Etapa de ieșire a portului P1 (Fig. 7.1.13, 6) este conectată permanent la zăvor.

Dacă pinul portului P3 este o ieșire și zăvorul său conține 1, atunci stadiul său de ieșire este controlat de hardware semnal intern„Funcție alternativă de ieșire” care asigură executarea funcției alternative corespunzătoare, adică unul dintre semnalele ¯WR, ¯RD sau RxD este generat la pinul extern. Dacă ieșirea portului este utilizată ca intrare, atunci semnalul alternativ care ajunge la ea (TxD, ¯INT0, ¯INT1, T0, T1) este transmis la linia internă „Funcție alternativă de intrare”.

Mod înregistrare port.

Când este executată o comandă de scriere a portului, noua valoare este scrisă în zăvorul din faza S6P2 și este transmisă direct la pinul de ieșire al portului în faza S1P1 a următorului ciclu al mașinii.

Modul citire port

Comenzile de citire porturi citesc informații direct de la contacte externe pinii portului sau ieșirile de blocare. În primul caz, bitul de date de la pinul portului este citit programatic prin intermediul bufferului B2 folosind semnalul „Read Pins” către linia magistralei de date interne (SD) a MK. Rețineți că semnalele „Scrieți în blocare”, „Citiți blocare”, „Citiți pinii” sunt generate în hardware atunci când sunt executate comenzile corespunzătoare.

În cel de-al doilea caz, este implementat așa-numitul mod „Citire-Modificare-Scriere”, în care comanda citește semnalul de stare latch, îl modifică dacă este necesar și apoi îl scrie înapoi în latch. Modul „Read-Modify-Write” este implementat la executarea următoarelor comenzi: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Citirea informațiilor de la ieșirile latch-urilor vă permite să eliminați erorile atunci când interpretați nivelul logic la pinul portului. Citiți continuarea articolului.

Arhitectura familiei MCS-51 este determinată în mare măsură de scopul său - construcția compactȘi ieftin dispozitive digitale. Toate funcțiile microcomputerului sunt implementate folosind un singur microcircuit. Familia MCS-51 include întreaga linie microcircuite de la cele mai simple microcontrolere la cele destul de complexe. Microcontrolerele din familia MCS-51 vă permit să efectuați ambele sarcini de control diverse dispozitiveși implementați componentele individuale ale circuitului analogic. Toate microcircuitele acestei familii funcționează la fel Sistem de comandă MCS-51, majoritatea se desfășoară în cazuri identice cu pinout potrivit(numerotarea picioarelor pentru corp). Acest lucru vă permite să utilizați microcircuite pentru dispozitivul dezvoltat diferite companii- Maxim, Atmel, NXP etc. (catalog..php?page=components_list&id=39"> vezi Căutare după parametri) fără reluare diagramă schematică dispozitive și programe.

Figura 1. Schema bloc a controlerului I8751

Schema bloc a controlerului este prezentată în Figura 1. și constă din următoarele unități funcționale principale: unitate de control, unitate aritmetic-logică, unitate cronometru/contor, interfață serială și unitate de întrerupere, contor de programe, memorie de date și memorie de programe. Comunicarea bidirecțională se realizează folosind o magistrală de date internă de 8 biți.

Să aruncăm o privire mai atentă asupra scopului fiecărui bloc. Aproape toți membrii familiei MCS-51 sunt construiți conform acestei scheme. Diverse microcircuite ale acestei familii diferă numai în registre speciale (inclusiv numărul de porturi). Sistem de comandă al tuturor controlerelor din familia MCS-51 conține 111 comenzi de bază cu un format de 1, 2 sau 3 octeți și nu se modifică la trecerea de la un cip la altul. Acest lucru asigură o portabilitate excelentă a programului de la un cip la altul.

Unitate de control și sincronizare

Unitatea de cronometrare și control este concepută pentru a genera semnale de sincronizare și control care asigură coordonarea funcționării comune a unităților computerului central în toate modurile permise de funcționare a acestuia.Unitatea de control include:

  • - dispozitiv pentru formarea intervalelor de timp,
  • - logică de intrare-ieșire,
  • - registru de comenzi,
  • - registru de control consumul de energie electrică,
  • - decodor de comandă, logica de control al computerului.

Dispozitiv pentru formarea intervalelor de timp concepute pentru generarea și emiterea semnalelor interne de ceas de faze, ceasuri și cicluri. Numărul de cicluri ale mașinii determină durata instrucțiunilor. Aproape toate comenzile computerului sunt executate în unul sau două cicluri de mașină, cu excepția instrucțiunilor de înmulțire și împărțire, a căror durată de execuție este de patru cicluri de mașină. Să notăm frecvența oscilatorului principal cu F g. Atunci durata ciclului mașinii este egală cu 12/F g sau este de 12 perioade ale semnalului oscilatorului principal. Logica I/O este concepută pentru a recepționa și scoate semnale care asigură schimbul de informații cu dispozitivele externe prin porturile de intrare/ieșire P0-P3.

Registrul de comenzi conceput pentru a înregistra și stoca codul de operare pe 8 biți al comenzii care se execută. Codul de operare, cu ajutorul unui decodor de comandă și al logicii de control al computerului, este convertit în microprogram pentru executarea comenzii.

Registrul de control al cererii (PCON) vă permite să opriți microcontrolerul pentru a reduce consumul de energie și a reduce nivelul de interferență de la microcontroler. O reducere și mai mare a consumului de energie și a interferențelor poate fi obținută prin oprirea oscilatorului principal al microcontrolerului. Acest lucru poate fi realizat prin comutarea biților din registrul de control al consumului PCON. Pentru opțiunea de producție n-MOS (seria 1816 sau cipuri străine care nu au un „c” în mijlocul numelui lor), registrul de control al consumului PCON conține doar un bit care controlează rata de transmisie a portului serial SMOD și nu există biți de control al consumului de energie.

Unitate logică aritmetică (ALU) este un dispozitiv paralel pe opt biți care efectuează operații aritmetice și logice. ALU este format din:

  • - registre acumulatoare, registre de stocare temporară TMP1 și TMP2,
  • - constante ROM,
  • - sumator,
  • - registru suplimentar (registru B),
  • - baterie (ACC),
  • - registru de stare program (PSW).

Inregistreaza-te baterieȘi deține registre- registre de opt biți concepute să primească și să stocheze operanzi în timp ce se efectuează operații asupra acestora. Aceste registre nu sunt accesibile programatic.

ROM constant asigură generarea unui cod de corecție pentru reprezentarea zecimală binară a datelor, a unui cod masca pentru operațiuni pe biți și a unui cod constant.

Adder paralel pe opt biți este un circuit combinațional de transport secvențial conceput pentru a efectua operațiile aritmetice de adunare, scădere și operațiile logice de adunare, înmulțire, disparitate și identitate.

Registrul B- un registru de opt biți utilizat în timpul operațiilor de înmulțire și împărțire. Pentru alte instrucțiuni, poate fi tratat ca un registru suplimentar în timp real.

Baterie- un registru de opt biti conceput pentru a primi si stoca rezultatul obtinut la efectuarea de operatii aritmetico-logice sau operatii de deplasare

Interfață serială și unitate de întrerupere (SIP) conceput pentru a organiza intrarea/ieșirea fluxurilor de informații secvențiale și pentru a organiza un sistem de întrerupere a programului. Blocul include:

  1. - tampon PIP,
  2. - logica de control,
  3. - registru de control,
  4. - tampon emițător,
  5. - buffer receptor,
  6. - transceiver cu port serial,
  7. - întreruperea registrului de prioritate,
  8. - registru de activare a întreruperii,
  9. - logica de procesare a pavilionului de întrerupere și circuitul de generare a vectorului.

Contor de programe conceput pentru a forma adresa curentă de 16 biți a memoriei interne de program și adresa de 8/16 biți a memoriei externe de program. Contorul de programe include un buffer PC de 16 biți, un registru PC și un circuit de creștere (mărește conținutul cu 1).

memorie de date (RAM) este destinat stocării temporare a informațiilor utilizate în timpul execuției programului.

Porturi P0, P1, P2, P3 sunt porturi de intrare-ieșire cvasi-bidirecționale și sunt concepute pentru a asigura schimbul de informații între computer și dispozitivele externe, formând 32 de linii de intrare-ieșire.

Dispozitiv cronometru Modelele de bază ale familiei au două temporizatoare/contoare programabile pe 16 biți (T/C0 și T/C1), care pot fi folosite atât ca temporizatoare, cât și ca contoare de evenimente externe.

Registru de stare program (PSW) conceput pentru a stoca informații despre starea ALU în timpul execuției programului.

Memoria programului (EPROM) concepută pentru a stoca programe și este o memorie doar pentru citire (ROM). Diferite microcircuite folosesc ROM-uri mascate care sunt șterse prin radiații ultraviolete sau FLASH ROM.

Registrul indicatorului de date (DPTR) conceput pentru a stoca o adresă de 16 biți a memoriei de date externe sau a memoriei de programe.

Indicator de stivă (SP) este un registru de opt biți conceput pentru a organiza o zonă specială de memorie de date (stivă), în care orice celulă de memorie poate fi stocată temporar.



La originile producției de microcontrolere se află Intel cu familiile de microcontrolere pe opt biți 8048 și 8051. Arhitectura MCS-51 își ia numele de la primul reprezentant al acestei familii - microcontrolerul 8051, lansat în 1980 bazat pe tehnologia HMOS. Un set de succes de dispozitive periferice, capacitatea de a selecta în mod flexibil memoria de program externă sau internă și un preț accesibil au asigurat succesul acestui microcontroler pe piață. Din punct de vedere al tehnologiei, microcontrolerul 8051 a fost un produs foarte complex pentru vremea sa - 128 de mii de tranzistori au fost utilizați în cristal, ceea ce era de 4 ori numărul de tranzistori din microprocesorul 8086 pe 16 biți.

Elementele principale ale arhitecturii de bază sunt:
- ALU de 8 biți bazat pe arhitectura bateriei;
- 4 banci de registre, cate 8 in fiecare;
- memorie program incorporata 4KB;
- RAM interna 128 bytes;
- Procesor boolean
-2 cronometre pe șaisprezece biți;
- controler canal serial (UART);
- controler de procesare a întreruperii cu două niveluri de prioritate;
- patru porturi I/O pe 8 biți, dintre care două sunt folosite ca magistrală de adrese/date pentru accesarea programelor externe și a memoriei de date;
- generator de ceas incorporat.

Acest microcontroler este cel mai bine cunoscut dezvoltatorilor și este un instrument de control popular într-o gamă largă de dispozitive. Există mulți emulatori, depanatoare și programatori de cipuri 8051 disponibile, așa că dezvoltarea de software este o briză.

Următorul pas fundamental în dezvoltarea MCS-51 a fost transferul tehnologiei de fabricație către CHMOS. Acest lucru a făcut posibilă implementarea modurilor Idle și Power Down, care au redus dramatic consumul de energie al cristalului și au deschis calea pentru utilizarea microcontrolerului în aplicații dependente de energie, de exemplu, în dispozitivele autonome alimentate cu baterie.

Iar ultima etapă fundamentală în dezvoltarea acestei direcții de către Intel în cadrul arhitecturii pe 8 biți a fost lansarea microcontrolerelor 8xC51FA/FB/FC, care pentru concizie sunt adesea denumite 8xC51FX. Principala trăsătură distinctivă a acestui grup de cristale este prezența unui număr de contor programabil (PCA). Diagrama bloc PCA este prezentată în Fig. 2.

PCA include:

Cronometrul deservește toate cele cinci module de eșantionare și comparare, care pot fi programate pentru a îndeplini una dintre următoarele funcții:

Eșantionarea pe 16 biți a valorii temporizatorului pe marginea pozitivă a unui semnal extern;
Eșantionarea pe 16 biți a valorii temporizatorului pe marginea negativă a unui semnal extern;
Eșantionarea pe 16 biți a valorii temporizatorului pe orice margine a unui semnal extern;
Temporizator software pe 16 biți;
Ieșire de mare viteză pe 16 biți (HSO);
PWM pe 8 biți

Toate funcțiile de mai sus sunt efectuate în PCA la nivel hardware și nu încarcă procesorul central, ceea ce face posibilă creșterea globală debitului sisteme, crește acuratețea măsurătorilor și procesării semnalului și reduce timpul de răspuns al microcontrolerului la evenimente externe, ceea ce este deosebit de important pentru sistemele în timp real. PCA implementat în 8xC51FX s-a dovedit a fi atât de reușit încât arhitectura microcontrolerului FX a devenit un standard industrial de facto, iar PCA-ul în sine a fost reprodus de multe ori în diferite modificări ale microcontrolerelor de la diferite companii.

Inițial, cele mai „gâte de sticlă” locuri Arhitectura MCS-51 a avut un ALU bazat pe baterie de 8 biți și o execuție relativ lentă a instrucțiunilor ( cele mai rapide instrucțiuni necesită 12 cicluri pentru a fi executate frecvența ceasului). Acest lucru a limitat utilizarea microcontrolerelor din familie în aplicații care necesită viteză crescută și calcule complexe (16 și 32 de biți). Problema modernizării fundamentale a vechii arhitecturi a devenit urgentă. Problema modernizării a fost complicată de faptul că la începutul anilor 90 deja au fost create o mulțime de dezvoltări în domeniul software-ului și hardware, iar una dintre sarcinile principale în dezvoltarea noii arhitecturi a fost implementarea compatibilității hardware și software cu dezvoltări mai vechi bazate pe MCS-51. Pentru a rezolva această problemă, a fost creat un grup comun de specialiști de la Intel și Philips. Drept urmare, în 1995, au apărut 2 familii semnificativ diferite: MCS-251/151 de la Intel și 51XA de la Philips (pe acestea din urmă vom discuta mai jos).

Principalele caracteristici ale arhitecturii MSC-251:

Spațiu de adrese liniar pe 24 de biți care adresează până la 16M memorie(microcontrolerele fabricate din familia MCS-251 au un spațiu de memorie de 256K);
Sistemul de comandă al familiei de microcontrolere MCS-251 conține toate cele 111 comenzi incluse în sistemul de comandă al familiei de microcontrolere MCS-51 (comenzi „vechi”) și, în plus, include 157 de comenzi „noi”. Unele coduri de comandă noi sunt în format de 4 octeți.
Înainte de a utiliza microcontrolerul, acesta trebuie configurat, adică folosind programatorul, „ardeți” octeții de configurare care determină care dintre seturile de instrucțiuni va deveni activ după pornirea alimentării. Dacă instalați setul de instrucțiuni MCS-51, atunci MSC-251 va fi compatibil cu MCS-51 la nivel de cod binar. Acest mod se numește modul binar. Cu toate acestea, instrucțiunile extinse în acest mod sunt disponibile și printr-o „fereastră” - codul de instrucțiune rezervat 0A5h. Desigur, lungimea fiecărei instrucțiuni extinse crește în acest caz cu 1 octet. Dacă instalați inițial un set de instrucțiuni extinse, atunci, în acest caz, programele scrise pentru MCS-51 vor necesita recompilare folosind instrumente încrucișate pentru MCS-51, deoarece acum instrucțiunile standard vor fi disponibile prin aceeași „fereastră” 0A5h și lungimea lor va crește, de asemenea, cu 1 octet. Acest mod se numește Modul sursă. Vă permite să utilizați instrucțiuni extinse cu eficiență maximă și să obțineți cea mai înaltă performanță, dar necesită reluare software.
arhitectura registrelor, permițând accesarea registrelor ca octeți, cuvinte și cuvinte duble;
modul de adresare a paginii pentru a accelera preluarea instrucțiunilor din memoria programului extern;
coada de instrucțiuni;
set extins de instrucțiuni, inclusiv instrucțiuni aritmetice și logice pe 16 biți;
spațiu de adrese stivă extins până la 64K;
executarea celei mai rapide instrucțiuni în 2 cicluri de ceas;
Compatibilitate binară cu programele pentru MCS-51.

Pentru utilizatorii concentrați pe utilizarea microcontrolerelor MCS-251 ca înlocuitor mecanic pentru MCS-51, Intel produce microcontrolere MCS-251 cu biți de configurare deja programați în starea Mod binar. Astfel de microcontrolere au primit indexul MCS-151.

Pe lângă Intel în sine, Temic Semiconductors produce microcontrolere MCS-251 sub licența sa.

Universal Serial Bus (USB) extinde tehnologia plug-and-play la dispozitivele externe de intrare/ieșire utilizate pe computerele personale moderne de înaltă performanță.

Pentru a oferi posibilitatea de a conecta o varietate de dispozitive periferice, Standard USB Sunt definite patru moduri de transmisie: control, izocron, impuls și transmisie matrice. Fiecare dispozitiv periferic trebuie să accepte un mod de control pentru a transfera parametrii de configurare, comenzile și informațiile despre starea dispozitivului. Transmisia izocronă oferă acces garantat la magistrală, debit constant și toleranță la erori și poate fi utilizată în dispozitive de ieșire audio și aplicații de telefonie computerizată. Transmisia cu impulsuri este destinată dispozitivelor de intrare precum mouse, joystick sau tastatură care transmit informații rar și în porțiuni mici, dar cu o perioadă de service limitată. Transferul în bloc permite dispozitivelor precum scanere, faxuri sau camere digitale să transfere cantități mari de date pe un computer personal, de îndată ce un canal de autobuz devine disponibil.

Principalele caracteristici ale produsului

Complet compatibil cu „Universal Serial Bus Specification 1.0”
Transceiver USB încorporat Serial Bus Interface Engine (SIE)
Patru cozi FIFO pentru transmisie
Trei cozi FIFO de 16 octeți
Patru FIFO primesc cozi
Trei cozi FIFO de 16 octeți
O coadă FIFO configurabilă (până la 1024 de octeți)
Control automat transmis/recepție în cozile FIFO
Opriți/Reluați operațiunile
Trei vectori de întrerupere a magistralei USB
Ciclu de blocare a fazei
Rate de transfer de date: 12 Mbit/s și 1,5 Mbit/s
Modul de ciclu lent
256 KB spațiu de adrese extern
Moduri de economisire a energiei: standby și oprire
Parametri definiți de utilizator
Așteptare în timp real
1 KB memorie cu acces aleator pe cip
Patru porturi I/O
Counter Array programabil (PCA)
Microcontroler UART standard (MCS 51).
Temporizator pentru watchdog hardware
Trei temporizatoare/contoare pe 16 biți cu capabilități flexibile
Compatibil cu setul de instrucțiuni pentru microcontrolerul cu arhitectură MCS 51 și MCS 251
Arhitectura microcontrolerului MCS 251 bazată pe registre
Frecventa de operare 6 sau 12 MHz

Controlerul 8x930Hx are caracteristici suplimentare:

mufa USB
Opțiuni de control hub USB
Managementul conexiunii
Detectare conectare/deconectare cu dispozitiv de ieșire
Gestionarea energiei, inclusiv oprire/reluare
Detectarea și recuperarea defecțiunilor magistralei
Suportă dispozitive de ieșire de viteză completă și de viteză mică
Contact de ieșire pentru comutarea alimentării portului
Contact de intrare pentru detectarea suprasarcinii

Cele patru moduri diferite de transfer de date USB sunt asigurate de colaborarea a trei elemente: Gazdă, Hub, Dispozitiv funcțional. Gazda controlează transmiterea conținutului și a informațiilor de control prin magistrală. Dispozitivele funcționale extind sistemele gazdă. Aceasta include tipuri tipice de lucru cu un PC: intrare de la o tastatură sau joystick, ieșire către un monitor; precum și activități mai complexe precum telefonia digitală și transmisia de imagini. Un microcontroler Intel 8x930Ax a fost proiectat pentru a controla dispozitivele funcționale. În cele din urmă, hub-urile oferă un punct de expansiune USB care oferă acces la alte dispozitive funcționale. Microcontrolerul Intel 8x930Hx, care combină dispozitivul funcțional și funcțiile de control al hub-ului USB, este primul hub USB disponibil comercial, proiectat pentru periferice moderne pentru PC.

Hub-urile USB joacă un rol semnificativ în extinderea lumii utilizatorilor de PC-uri. Odată cu apariția perifericelor - tastaturi, monitoare, imprimante și altele - echipate cu hub-uri încorporate, conectarea sau deconectarea unui dispozitiv nou este la fel de ușoară precum conectarea acestuia la o priză. Nivel nou performanta si metode avansate conexiuni USB ar putea duce la o nouă generație de dispozitive pentru aplicații de muncă și divertisment. Zilele cardurilor încorporate, conflictele IRQ și încurcăturile de fire sunt numerotate.

Cablul de magistrală USB este format din doar patru fire: Vbus, D+, D- și GND - ceea ce face conexiunea mai simplă și mai uniformă. Un singur conector standard pentru conectarea dispozitivelor periferice la magistrala USB are același scop. Datele sunt transferate diferit pe cablurile D+ și D-: fie la viteză maximă de 12 Mbps, fie la viteză mică de 1,5 Mbps. Transceiver-ul este încorporat în cip, deci nu este nevoie de circuite electronice externe. Excepția este rezistorul de sarcină terminal pe ambele linii D+ și D-, care este necesar pentru a determina dacă dispozitivul este de mare viteză sau de viteză mică.

Privire de ansamblu asupra familiei
Familia Intel 8x930 este formată din două controlere cu un singur cip.

Controlerul Intel 8x930Ax este un dispozitiv pe 8 biți care se bazează pe arhitectura microcontrolerului MCS 251 și este proiectat să funcționeze cu dispozitive periferice conectate la magistrala USB. Pe de altă parte, 8x930Hx folosește același nucleu de microcontroler MCS 251 plus capabilitățile îmbunătățite ale hub-ului de bus USB încorporat. Utilizarea arhitecturii MCS 251 în ambele controlere de magistrală USB oferă următoarele avantaje:

Performanta ridicata
Aplicarea unor tipuri mixte de memorie și adresare
Consum redus de putere
Nivel scăzut de zgomot
Suport eficient pentru limbi de nivel înalt
Set de comenzi extins
Capacități încorporate

8x930Ax poate folosi instrucțiuni atât din setul de microcontroler MCS 51, cât și din setul de microcontroler MCS 251. Această abordare păstrează investiția utilizatorilor în software și stoarce performanța maximă din aplicații.

Microcontrolerele 8x930 sunt atât de bogate în diverse caracteristici încorporate încât par mai puternice decât doar microcontrolere. Programable Counter Array (PCA) oferă flexibilitate pentru aplicațiile care necesită comparare sau captare a datelor în timp real, comunicații de mare viteză sau modulare pe lățimea impulsurilor. În plus, controlerul include un port serial extins, trei temporizatoare/contoare pe 16 biți, un watchdog hardware, patru porturi I/O pe 8 biți și două moduri de economisire a energiei: repaus și oprire.

Familia de controlere 8x930Ax este echipată cu 1 KB de memorie și poate fi folosită în versiuni fără memorie persistentă, sau cu 8 sau 16 KB de memorie persistentă. Acestea pot adresa până la 256 KB de memorie externă pentru instrucțiuni și date și 40 de octeți de registre de uz general, care se află în procesorul central ca fișier de registru. În funcție de combinația utilizată, fișierul de registru poate conține registre de 16 octeți, 16 registre de doi octeți și 10 registre de patru octeți.

Controlerele oferă o interfață flexibilă cu memorie externă. Pentru a accesa dispozitive cu memorie lentă, este posibil să adăugați trei cicluri de așteptare, iar pentru a genera mai multe cicluri, este posibil un apel la funcția în timp real. Preluarea instrucțiunilor externe poate îmbunătăți performanța utilizând modul de paginare, care amestecă datele în octetul mare al adresei.

Ambele controlere 8x930 au opt cozi FIFO de suportat dispozitive interne ieșire: patru cozi pentru transmisie și patru cozi pentru recepție. Patru cozi FIFO de transmisie/recepție acceptă patru unități funcționale finale (de la 0 la 3). Coada 0 este formată din 16 octeți și este destinată transmiterii informațiilor de control. Coada 1 este configurabilă de utilizator și are o capacitate de până la 1024 de octeți. Cozile 2 și 3 constau din 16 octeți fiecare și pot fi utilizate pentru a transmite informații în moduri rafală, izocron și matrice. Când se utilizează un controler 8x930Hx, aceste cozi sunt întărite de o pereche de cozi FIFO pentru dispozitivele de intrare. Aceste cozi din controlerul 8x930Hx sunt suportate de un repetor suplimentar, care este responsabil pentru retransmiterea fluxurilor de date generate de dispozitivele de ieșire.

Privire de ansamblu asupra arhitecturii
Structural Implementarea USB Microcontrolerele 8x930Ax și 8x930Hx pot fi împărțite în patru blocuri: cozi FIFO, un bloc de interfață funcțional pentru dispozitiv, un bloc de interfață magistrală serială și un transceiver. Controlerul 8x930Hx are blocuri suplimentare pentru a controla funcțiile hub-ului: un bloc de interfață hub și un repetor.

Cozile FIFO de recepție și transmisie de pe ambele controlere sunt circulare. Cozile acceptă până la două seturi de date separate de dimensiune variabilă și conțin registre de contor de octeți care indică numărul de octeți din seturile de date. Cozile au indicatoare care indică dacă coada este plină sau goală și pot repeta, de asemenea, recepția sau transmiterea setului curent de date. Functional Unit Interface Unit (FUI) distribuie datele USB transmise sau primite în funcție de tipul de transmisie și de starea cozilor. În plus, blocul FFU monitorizează starea tranzacției, gestionează cozile FIFO și, folosind o cerere de întrerupere, raportează apariția evenimentelor de control către procesorul central 8x930.

Blocul de interfață magistrală serială implementează protocolul transfer USB: comandă secvențial pachetele, generează și recunoaște semnale, generează și verifică sume de control, codifică/decodifică datele folosind metoda NRZI, umplutură de biți, generează și recunoaște identificatorul de pachet (PID).

Transceiver-ul integrat pe microcontrolere USB este compatibil cu o interfață simplă cu patru fire definită de specificația USB 1.0. Familia de controlere 8x930 are trei întreruperi legate de USB. Acestea apar la fiecare început al unui cadru, sfârșitul primirii/transmiterii datelor către dispozitivele funcționale terminale, în cazul unei suspendări globale sau reluării activității. În hub-ul 8x930Hx, unitatea de interfață hub este utilizată pentru a controla și monitoriza starea conexiunii porturi de ieșire. Repeatorul este responsabil pentru distribuirea semnalelor în sus și în jos de la porturile USB.

Arhitectura microcontrollerului

Înțelegerea arhitecturii microcontrolerelor este esențială atunci când învățați limbaje de programare de asamblare. Structura asamblatorului, formatul instrucțiunilor acestuia, adresarea operanzilor etc. sunt complet determinate de arhitectură. Scopul studierii arhitecturii este:

· identificarea setului de registre disponibile pentru programare, funcționalitatea și structura acestora;

· înțelegerea organizării RAM și a ordinii de utilizare a acesteia;

· familiarizarea cu tipurile de date;

· studierea formatului comenzilor mașinii;

· clarificarea organizării gestionării întreruperilor.

Arhitectura familiei MCS-51 este determinată în mare măsură de scopul său - construcția de dispozitive digitale compacte și ieftine. Toate funcțiile MK sunt implementate folosind un singur microcircuit. Familia MCS-51 include o gamă întreagă de microcircuite de la cele mai simple microcontrolere până la cele destul de complexe. Microcontrolerele din familia MCS-51 vă permit să efectuați ambele sarcini de control pentru diferite dispozitive și să implementați componente individuale ale unui circuit analogic. Toate microcircuitele din această familie funcționează cu același sistem de comandă, cele mai multe dintre ele sunt implementate în aceleași pachete cu același pinout (numerotare pin pentru pachet). Acest lucru vă permite să utilizați microcircuite de la diferiți producători (cum ar fi Intel, Dallas, Atmel, Philips etc.) pentru dispozitivul dezvoltat fără a modifica schema circuitului dispozitivului și programului.

MCS-51 se bazează pe arhitectura Harvard, unde spațiile de adrese ale memoriei de programe și de date sunt separate.

Schema bloc a controlerului este prezentată în Fig. 2.3 și constă din următoarele unități funcționale principale: unitate de control, unitate aritmetic-logică, unitate cronometru/contor, interfață serială și întreruperi, contor de programe (contor de programe), memorie de date și program memorie.

Comunicarea bidirecțională se realizează folosind o magistrală de date internă de 8 biți. Să aruncăm o privire mai atentă asupra scopului fiecărui bloc. Aproape toți membrii familiei MCS-51 sunt construiți conform acestei scheme. Diverse microcircuite ale acestei familii diferă numai în registre speciale (inclusiv numărul de porturi). Sistemul de comandă al tuturor controlerelor din familia MCS-51 conține 111 comenzi de bază cu un format de 1, 2 sau 3 octeți și nu se modifică la trecerea de la un cip la altul. Acest lucru asigură o portabilitate excelentă a programului de la un cip la altul.

Unitate de control și sincronizare(Timing and Control) este conceput pentru a genera semnale de sincronizare și control care asigură coordonarea funcționării comune a unităților principale de calculator în toate modurile permise de funcționare a acestuia. Unitatea de control include:


  • dispozitiv pentru formarea intervalelor de timp,
  • circuit combinat intrare-ieșire,
  • registrul de comenzi
  • decodor de comenzi.

Intrare și ieșire semnalele unitatii de control si sincronizare:

1 PSEN– rezoluția memoriei programului;

2 ALE– semnal de ieșire a permisului de fixare a adresei;

3 PROG– semnal de programare;

4 E.A.– blocarea lucrărilor cu memoria internă;

5 VPP– tensiune de programare;

6 RST– semnal general de resetare.

Dispozitivul pentru formarea intervalelor de timp este necesar pentru sincronizarea secvenței stărilor CPU care formează ciclul mașinii, precum și pentru operatiune adecvata toate zăvoarele interne și bufferele de ieșire ale porturilor. Ciclul mașinii constă din șase stări consecutive (stări) de la S1 la S6, fiecare dintre acestea, la rândul său, împărțită în două faze:

faza 1 (Faza 1 - P1) și faza 2 (Faza 2 - P2). Astfel, un ciclu de mașină poate fi definit ca o secvență de intervale de timp S1P1, S1P2, S2P1,...,S6P2. Durata fazei este egală cu perioada impulsurilor de ceas, astfel încât ciclul mașinii durează 12 perioade de ceas.

Numărul de cicluri ale mașinii determină durata instrucțiunilor. Aproape toate instrucțiunile sunt executate în unul sau două cicluri de mașină, cu excepția instrucțiunilor de înmulțire și împărțire, care necesită patru cicluri de mașină pentru a fi executate. Logica I/O este concepută pentru a recepționa și scoate semnale care asigură schimbul de informații cu dispozitivele externe prin porturile de intrare/ieșire P0-P3.

Registrul de comenzi conceput pentru a înregistra și stoca codul de operare pe 8 biți al comenzii care se execută. Codul de operare, cu ajutorul unui decodor de comandă și al logicii de control al computerului, este convertit în microprogram pentru executarea comenzii.

Figura 2.3. Schema bloc a microcontrolerului Intel 8051 cu un singur cip

(familia MCS-51)

Unitate logică aritmetică(ALU) este o unitate paralelă de opt biți care efectuează operații aritmetice și logice. ALU este format din:

  • registre de stocare temporară - TMP1 și TMP2,
  • constante ROM,
  • sumator,
  • registru suplimentar - registrul B,
  • baterie - ACC,
  • registru de cuvinte de stare program (registru de steag) - PSW.

Registrele de stocare temporară TMP1, TMP2- registre de opt biți concepute să primească și să stocheze operanzi în timp ce se efectuează operații asupra acestora. Aceste registre nu sunt accesibile programatic.

ROM constant asigură generarea unui cod de corecție pentru reprezentarea zecimală binară a datelor, a unui cod masca pentru operațiuni pe biți și a unui cod constant.

Adder paralel pe opt biți este un circuit de tip combinațional cu transport secvențial, conceput pentru a efectua operații aritmetice de adunare, scădere și operații logice de adunare, înmulțire, disparitate și identitate.

Registrul B- un registru de opt biți utilizat în timpul operațiilor de înmulțire și împărțire. Pentru alte instrucțiuni, poate fi tratat ca un registru suplimentar în timp real.

Baterie- un registru de opt biți destinat să primească și să stocheze rezultatul obținut la efectuarea operațiilor aritmetico-logice sau a operațiilor de deplasare.

Registru de stare program PSW (Cuvânt de stare program) conceput pentru a stoca cuvântul de stare al comenzilor executate. Când sunt executate multe instrucțiuni în ALU, sunt generate un număr de atribute de operare (steaguri), care sunt înregistrate în registrul PSW (program status word). În tabel 1 oferă o listă de steaguri PSW, dă numele lor simbolice și descrie condițiile pentru formarea lor.

Bloc de întrerupere și interfață serială - UART (Receptor/Transmițător Universal Asynchronous) conceput pentru a organiza intrarea și ieșirea fluxurilor de informații secvențiale și pentru a organiza un sistem de întrerupere a programului.

Prin definiție, o întrerupere înseamnă oprirea temporară a procesului principal de calcul pentru a efectua o acțiune planificată sau neprogramată cauzată de funcționarea hardware sau software.

Aceste acțiuni pot fi de natură de serviciu, pot fi solicitări din partea programului utilizator de a efectua întreținere sau pot fi un răspuns la situații de urgență.