Programarea porturilor MK în limbajul C 51. Microcontrolere MCS–51: model de program, structură, comenzi. Modul citire port

Versiunea de bază MCS-51 Informatie scurta. 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ă axat pe executarea algoritmilor de control;

● include toate dispozitivele (procesor, ROM, RAM, porturi de intrare/ieșire, sistem de întrerupere, mijloace de procesare a informațiilor pe biți etc.) necesare implementării unui sistem de control cu ​​microprocesor de configurare minimă. Î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 capacități mai mari.

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 microcircuite, păstrând compatibilitatea cu versiunea de bază, diferă de aceasta prin tehnologia de fabricaț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:

● 8 biți CPU CPU format 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;

● blocare Interfață serială BPI pentru schimbul de informații cu dispozitive externe printr-o 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 un generator de ceas intern, pentru sincronizare poate fi folosită o sursă externă de oscilație. Condiţional denumire grafică Microcircuitele MK sunt prezentate î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 de la MK cu 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, de asemenea, utilizat pentru a transmite date prin portul P0 către dispozitive externe la executarea comenzilor 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 furnizat pinului ¯EA al MK (după cum se arată în Fig. 7.1.11), memorie interioară programele sunt dezactivate. 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 lucrați cu memoria internă, 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 pinii externi ai unui port sau de la ieșirile latch. Î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 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 atât sarcini de control pentru diferite dispozitive, cât și să implementați componente individuale circuit analogic. Toate microcircuitele acestei familii funcționează cu același sistem de comandă, majoritatea se desfășoară în cazuri identice cu pinout potrivit(numerotarea picioarelor pentru corp). 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ă reluare diagramă schematică dispozitive și programe.

Figura 1. Schema bloc a controlerului K1830BE751

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ă toți controlorii 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,
  • logica de intrare-ieșire,
  • registrul de comenzi
  • registru de management al energiei,
  • 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 comenzilor ș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.

Împreună cu articolul „Arhitectura microcontrolerelor MCS-51” citiți:


http://site/MCS51/tablms.php


http://site/MCS51/SysInstr.php


http://site/MCS51/port.php

Î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 astfel 80С51 este un LSI bazat pe tehnologia k-MOS cu o mască ROM pe cip, 8031 ​​​​este un LSI n-MOS fără memorie de program (ROM, RPOM) pe un cip, 8751 este un 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 registre de uz general RON, organizate în patru bănci a câte opt registre fiecare cu denumiri R0... R7, alegerea unei bănci sau alta 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ă cea mai puțin semnificativă picătură a 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 buffer-ul 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-

contoare/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ă adresare 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 tactarea externă;

      în registre funcții speciale Biții rezervați PCON, IP și IE iau valori aleatorii și 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 memoria externă a programului atunci când la acest pin este aplicat un nivel scăzut activ. 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 blocarea 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 o 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ă unele sunt scrise în zăvorele 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

PLANUL DE PRELEGERE

1. Introducere

2. Instructiuni aritmetice si logice

3. Comenzi de transfer de date

4. Operații booleene

5. Instrucțiuni de salt

1. Introducere

Sistem de comandă MCS-51 acceptă un singur set de instrucțiuni, care este conceput pentru a executa algoritmi de control al actuatorului pe 8 biți. Este posibil să se utilizeze metode rapide pentru adresarea RAM-ului intern și efectuarea de operații pe biți pe structuri de date mici. Există un sistem extins pentru adresarea variabilelor pe un singur bit ca tip de date independent, care permite utilizarea biților individuali în comenzile logice și de control ale algebrei booleene.

Moduri de adresare : set de comenzi MCS-51 acceptă următoarele moduri de adresare. Adresare directă: Operandul este determinat de adresa de 8 biți din instrucțiune. Adresarea directă este utilizată numai pentru jumătatea inferioară a memoriei interne de date și a registrelor SFR. Adresare indirectă: Instrucțiunea se adresează unui registru care conține adresa operandului. Acest tip adresarea este utilizată pentru RAM externă și internă. Registrele pot fi folosite pentru a specifica adrese pe 8 biți R0Și R1 banca de registre selectată sau indicatorul de stivă SP. Pentru adresarea pe 16 biți, este utilizat doar registrul pointerului de date DPTR.

Înregistrați instrucțiuni : registre R0–R7 Banca de registre curentă poate fi adresată prin instrucțiuni specifice care conțin un câmp de 3 biți care indică numărul de registru din instrucțiunea în sine. În acest caz, câmpul de adresă corespunzător lipsește din comandă. Operații folosind registre speciale: unele instrucțiuni folosesc registre individuale (de exemplu, operațiuni cu acumulatori, DPTR, etc.). În acest caz, adresa operandului nu este deloc specificată în comandă. Este predeterminat de codul de operare.

Constante imediate : constanta poate fi localizată direct în comanda după opcode.

Adresarea la index : Adresarea indexului poate fi utilizată numai pentru a accesa memoria programului și numai în modul de citire. În acest mod, sunt vizualizate tabelele din memoria programului. registru pe 16 biți ( DPTR sau contorul de programe) indică adresa de bază a tabelului dorit, iar acumulatorul indică punctul de intrare în acesta.

Set de comenziare 42 de mnemonice de comandă pentru a specifica cele 33 de funcții ale acestui sistem. Sintaxa majorității instrucțiunilor limbajului de asamblare constă dintr-un mnemonic al funcției urmat de operanzi care indică metodele de adresare și tipurile de date. Tipuri variate modurile de date sau de adresare sunt determinate de operanzii setati, nu de modificari ale mnemotecilor.

Sistemul de comandă poate fi împărțit în cinci grupuri: instructiuni aritmetice; comenzi logice; comenzi de transfer de date; comenzi ale procesorului de biți; comenzi de transfer de ramificare și control. Notațiile și simbolurile utilizate în sistemul de comandă sunt prezentate mai jos.

Masa. Notații și simboluri utilizate în sistemul de comandă

Denumire, simbol

Scop

Baterie

Registrele băncii de registre selectate în prezent

Numărul registrului încărcat specificat în comandă

direct

Adresă de celulă de date internă de 8 biți, direct adresabilă, care poate fi o celulă RAM de date internă (0–127) sau un registru cu funcții speciale SFR (128–255)

Celulă RAM de date internă de 8 biți adresabilă indirect

8 biți direct date incluse în codul de operare (OPC)

dateH

Cei mai semnificativi biți (15–8) ai datelor imediate pe 16 biți

dateL

Biți cei mai puțin semnificativi (7–0) de date imediate pe 16 biți

Adresă de destinație pe 11 biți

addrL

Biți cei mai puțin semnificativi din adresa de destinație

Octet offset semnat pe 8 biți

Bit adresabil direct a cărui adresă conține COP-ul situat în RAM-ul de date intern sau registrul de funcții speciale SFR

a15, a14...a0

Biți de adresă de destinație

Conținutul elementului X

Conținut la adresa stocată în elementul X

Bit M al elementului X


+

*
ȘI
SAU
XOR
/X

Operațiuni:
plus
scădere
multiplicare
diviziuni
înmulțire logică (operație ȘI)
adăugare logică (operație SAU)
adăugare modulo 2 (SAU exclusiv)
inversarea elementului X

Funcțiile mnemonice sunt asociate în mod unic cu combinații specifice de metode de adresare și tipuri de date. În total, există 111 astfel de combinații posibile în sistemul de comandă.

2. Instructiuni aritmetice si logice

Cum p exemplu instrucție aritmetică, operația de adăugare poate fi efectuată prin una dintre următoarele comenzi.

ADĂUGAA,7 F 16 – adăugați numărul 7 la conținutul registrului A F 16 și stocați rezultatul în registrul A;

ADĂUGAA,@ R0 – adăugați la conținutul registrului A numărul a cărui adresă (@ – comercial la ) este stocat într-un registru R 0 (adresare indirectă) și stochează rezultatul în registrul A;

ADAUGĂ A,R7– adăugați conținutul registrului A la conținutul registrului R 7 și salvați rezultatul în registrul A;

ADAUGĂ A,#127– adăugați la conținutul registrului A un număr a cărui adresă a celulei de stocare este 127 ( # – simbolul numărului) și salvați rezultatul în registru T- re A.

Toate instrucțiunile aritmetice sunt executate într-un singur ciclu de mașină, cu excepția instrucțiunii INC DPTR(offset indicator de date DPTR la octetul următor), necesitând două cicluri de mașină, precum și operații de înmulțire și împărțire efectuate în 4 cicluri de mașină. Orice octet din memoria internă de date poate fi incrementat și decrementat fără a utiliza o baterie.

Instrucțiuni MUL AB realizează înmulțirea (înmulțirea) datelor din acumulator cu datele din registrul B, plasând produsul în registrele A (jumătatea inferioară) și B (jumătatea superioară).

Instrucțiuni DIV ABîmparte (împarte) conținutul acumulatorului la valoarea din registrul B, lăsând restul în B și câtul în acumulator.

Instrucțiuni DA A este destinat operațiilor aritmetice zecimale binare (operații aritmetice pe numere reprezentate în cod zecimal binar). Nu convertește numărul binar în BCD, dar oferă doar rezultatul corect atunci când adăugați două numere zecimale binare.

Exemplu comanda logică: O operație AND logică poate fi efectuată cu una dintre următoarele comenzi:

ANLA,7 F 16 – înmulțirea logică a conținutului registrului A cu numărul 7 F 16 iar rezultatul este stocat în registrul A;

ANLA,@ R1 – înmulțirea logică a conținutului registrului A cu numărul a cărui adresă este stocată în registru R 1 (adresare indirectă) și stochează rezultatul în registrul A;

ANL A,R6– înmulțirea logică a conținutului registrului A cu conținutul registrului R 6 și salvați rezultatul în registrul A;

ANL A,#53 – multiplicarea logică a conținutului registrului A cu un număr a cărui adresă celulei de stocare este 53 16, iar rezultatul este stocat în registrul A.

Toate operațiunile logice asupra conținutului acumulatorului sunt efectuate într-un ciclu de mașină, restul - în două. Operațiile logice pot fi efectuate pe oricare dintre cei 128 de octeți inferiori ai memoriei interne de date sau pe orice registru SFR (registre cu funcții speciale) în modul de adresare directă fără a utiliza o baterie.

Operațiile de schimbare rotativă RL A, RLC A etc. mută conținutul acumulatorului cu un bit la dreapta sau la stânga. În cazul unei deplasări ciclice la stânga, bitul cel mai puțin semnificativ este mutat în poziția cea mai semnificativă. În cazul unei deplasări ciclice la dreapta se produce opusul.

Operațiune SWAP A schimbă tetradele joase și înalte din baterie.

3. Comenzi de transfer de date

Echipă MOV dest,src vă permite să transferați date între celulele RAM interne sau zonele de registru de funcții speciale SFR fără a folosi o baterie. În acest caz, lucrul cu jumătatea superioară a RAM-ului intern poate fi efectuat numai în modul de adresare indirectă și accesul la registre SFR– numai în modul de adresare directă.

În toate microcircuitele MCS-51 Stiva este plasată direct în memoria de date rezidentă și crește în sus. Instrucțiuni APĂSAŢI mai întâi incrementează valoarea din registrul pointerului stivei SP, apoi scrie un octet de date pe stivă. Echipe APĂSAŢIȘi POP sunt utilizate numai în modul de adresare directă (scrierea sau restaurarea unui octet), dar stiva este întotdeauna accesibilă atunci când se adresează indirect printr-un registru SP. Astfel, stiva poate folosi și primii 128 de octeți de memorie de date. Aceleași considerații exclud posibilitatea de a utiliza instrucțiuni de stivă pentru a adresa registre SFR.

Instrucțiunile de transfer de date includ o operațiune de transfer pe 16 biți MOV DPTR,#data16, care este folosit pentru a inițializa registrul pointerului de date DPTR la vizualizarea tabelelor din memoria programului sau pentru a accesa memoria externă de date.

Operațiune XCH A, octet folosit pentru schimbul de date între acumulator și octetul adresat. Echipă XCHD A,@Ri similar cu cel precedent, dar se realizează numai pentru tetradele inferioare implicate în schimbul de operanzi.

Pentru a accesa memoria de date externă, se utilizează numai adresarea indirectă. În cazul adreselor pe un singur octet, se folosesc registre R0 sau R1 banca de registru curentă, iar pentru 16 biți – registru indicator de date DPTR. Cu orice metodă de accesare a memoriei externe de date, bateria joacă rolul de sursă sau receptor de informații.

Pentru a accesa tabelele aflate în memoria programului, utilizați următoarele comenzi:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Conținutul registrului indicator de date este folosit ca adresă de bază a tabelului DPTR sau PC(contor de programe), iar offset-ul este luat din A. Aceste instrucțiuni sunt folosite exclusiv pentru a citi date din memoria programului, dar nu pentru a scrie în ea.

4. Operații booleene

Microcircuite MCS-51 conține un procesor „boolean”. Memoria RAM internă are 128 de biți adresabili direct. Spațiu de registru cu funcții speciale SFR poate suporta, de asemenea, câmpuri de până la 128 de biți. Instrucțiunile de biți efectuează ramificări condiționate, transferuri, resetări, inversiuni și operațiuni ȘI și SAU. Toți biții specificați sunt disponibili în modul de adresare directă.

Poartă bit CFîn registrul de funcții speciale „cuvânt de stare program” P.S.W." este folosit ca un acumulator de un bit pentru un procesor boolean.

5. Instrucțiuni de salt

Adresele operațiilor de salt sunt indicate în limbaj de asamblare printr-o etichetă sau printr-o valoare reală în spațiul de memorie al programului. Adresele de ramuri condiționate sunt asamblate într-un decalaj relativ - un octet de semn adăugat la contorul de program PC dacă este îndeplinită condiția de tranziție. Limitele unor astfel de tranziții se află între minus 128 și 127 în raport cu primul octet care urmează instrucțiunii. În registrul de funcții speciale „cuvânt de stare program” P.S.W.„Nu există niciun steag zero, deci instrucțiunile JZȘi JNZ verificați condiția „egal cu zero” ca testând datele din acumulator.

Există trei tipuri de comenzi de sărituri necondiționate: SJMP, LJMPȘi AJMP– adrese de destinație care diferă ca format. Instrucțiuni SJMP codifică adresa ca un offset relativ și ia doi octeți. Distanța de salt este limitată la intervalul de la minus 128 la 127 de octeți în raport cu instrucțiunile următoare SJMP.

În instrucțiuni LJMP Adresa de destinație este utilizată ca o constantă de 16 biți. Lungimea comenzii este de trei octeți. Adresa de destinație poate fi localizată oriunde în memoria programului.

Echipă AJMP folosește o constantă de adresă de 11 biți. Comanda este formată din doi octeți. Când această instrucțiune este executată, cei 11 biți inferiori ai contorului de adrese sunt înlocuiți cu adresa de 11 biți din instrucțiune. Cei mai semnificativi cinci biți ai contorului programului PC ramane neschimbat. Astfel, tranziția se poate face în cadrul unui bloc de 2K octeți în care se află instrucțiunea care urmează instrucțiunii AJMP.

Există două tipuri de apeluri de comandă către o subrutină: LCALLȘi UN APEL. Instrucțiuni LCALL folosește adresa de 16 biți a subrutinei apelate. În acest caz, subprogramul poate fi localizat oriunde în memoria programului. Instrucțiuni UN APEL folosește o adresă de subrutină de 11 biți. În acest caz, rutina apelată trebuie să fie localizată într-un singur bloc de 2K octeți cu instrucțiunea care urmează UN APEL. Ambele versiuni ale instrucțiunii împing adresa următoarei instrucțiuni în stivă și o încarcă în contorul de programe PC noua valoare corespunzătoare.

Subrutina se termină cu instrucțiunea RET, care vă permite să reveniți la instrucțiune după comanda APEL. Această instrucțiune scoate adresa de retur din stivă și o încarcă în contorul de programe. PC . Instrucțiuni RETI folosit pentru a reveni de la rutinele de întrerupere. Singura diferenta RETI din RET este asta RETI informează sistemul că procesarea întreruperii s-a încheiat. Dacă în momentul executării RETI nu există alte întreruperi, atunci este identic RET.

Instrucțiuni DJNZ concepute pentru a controla ciclurile. Pentru a executa o buclă N odată ce trebuie să încărcați un octet cu o valoare în contor N și închideți corpul buclei cu comanda DJNZ, indicând începutul ciclului.

Echipă CJNE compară cei doi operanzi ai săi ca numere întregi fără semn și sare la adresa specificată acolo dacă operanzii comparați nu sunt egali. Dacă primul operand este mai mic decât al doilea, atunci bitul de transport CF este setat la „1”.

Toate instrucțiunile în formă asamblată ocupă 1, 2 sau 3 octeți.

ARHITECTURA FAMILIEI DE MICROCONTROLLERMCS-51

Note de curs pentru cursuri

„Microprocesoare în sistemele de control”, „Tehnologia microprocesoarelor”

„Unelte și sisteme cu microprocesor”

pentru studenții tuturor formelor de specialități de studiu

072000 – Standardizare și certificare

210200 – Automatizarea proceselor tehnologice

230104 – Sisteme de proiectare asistată de calculator

Tambov 2005

INTRODUCERE.. 3

1. STRUCTURA MICROCONTROLLERULUI INTEL 8051. 3

1.1. Organizarea memoriei. 5

1.2. Dispozitiv aritmetico-logic. 6

1.3. Memorie rezidentă pentru programe și date. 7

1.4. Registre acumulatoare și de uz general. 8

1.5. Registrul cuvântului de stare a programului și steagurile acestuia. 9

1.6. Registre pointer. 10

1.7. Registre cu funcții speciale. unsprezece

1.8. Dispozitiv de control și sincronizare. unsprezece

1.9. Porturi de intrare/ieșire a informațiilor paralele. 12

1.10. Temporizatoare/contoare. 13

1.11. Port serial. 18

1.11.1. Înregistrați SBUF.. 18

1.11.2. Moduri de operare a portului serial. 18

1.11.3. Înregistrați SCON.. 19

1.11.4. Viteza de receptie/transmisie. 21

1.12. Sistem de întrerupere. 22

2. SISTEMUL DE COMANDĂ AL MICROCONTROLLERULUI INTEL 8051. 26

2.1. Informații generale. 26

2.1.1. Tipuri de comenzi. 27

2.1.2. Tipuri de operanzi. 28

2.1.3. Metode de adresare a datelor. treizeci

2.1.4. Steaguri de rezultat. 31

2.1.5. Adresarea simbolică. 32

2.2. Comenzi de transfer de date. 33

2.2.1. Structura legăturilor de informații. 33

2.2.2. Accesarea bateriei. 33

2.2.3. Accesarea memoriei de date externe. 34

2.2.4. Se accesează memoria programului... 34


2.2.5. Acces la stivă. 35

2.3. Operatii aritmetice. 35

2.4. Operații logice. 39

2.5. Controlul comenzilor de transfer. 43

2.5.1. Tranziție lungă. 43

2.5.2. Tranziție absolută. 43

2.5.3. Tranziție relativă. 44

2.5.4. Transfer indirect. 44

2.5.5. Salturi condiționate.. 44

2.5.6. Subprograme.. 47

2.6. Operații cu biți. 48

Întrebări de test... 49

LITERATURA.. 50

Anexă SISTEMUL DE COMANDĂ INTEL 8051. 51

INTRODUCERE

Începând cu anii 80 ai secolului al XX-lea, a apărut o clasă independentă în tehnologia microprocesoarelor circuite integrate– microcontrolere cu un singur cip care sunt proiectate pentru integrarea în dispozitive în diverse scopuri. Se deosebesc de clasa microprocesoarelor cu un singur cip prin prezența memoriei interne și a mijloacelor dezvoltate de interacțiune cu dispozitivele externe.

Microcontrolerele cu un singur cip pe 8 biți din familia MCS-51 sunt utilizate pe scară largă. Această familie a fost formată pe baza microcontrolerului Intel 8051, care a câștigat o mare popularitate în rândul dezvoltatorilor de sisteme de control cu ​​microprocesoare datorită arhitecturii sale bine proiectate. Arhitectura microcontrolerului este un set de resurse hardware și sisteme de comandă accesibile de software interne și externe.

Ulterior, Intel a lansat aproximativ 50 de modele bazate pe nucleul de operare al microcontrolerului Intel 8051. În același timp, multe alte companii, precum Atmel, Philips, au început să-și producă propriile microcontrolere dezvoltate în standardul MCS-51. De asemenea este si analog domestic Microcontroler Intel 8051 - cip K1816BE51.

2. STRUCTURA MICROCONTROLLERULUI INTEL 8051

Microcontrolerul Intel 8051 se bazează pe tehnologia n-MOS de nivel înalt. Principalele sale caracteristici sunt următoarele:

· procesor central de opt biți optimizat pentru implementarea funcțiilor de control;

· generator de ceas incorporat (frecventa maxima 12 MHz);

· spațiu de adrese din memoria programului - 64 KB;

· spațiu de adresă memorie de date - 64 KB;

· memorie internă de program - 4 KB;

· memorie internă de date - 128 octeți;

· capacitati suplimentare pentru efectuarea de operatii de algebra booleana (operatii pe biti);

· 2 temporizatoare/contoare multifuncționale de șaisprezece biți;

· transceiver asincron full-duplex (port serial);

· sistem de întrerupere vectorizat cu două niveluri de prioritate și cinci surse de evenimente.

Figura 1 - Diagrama bloc a microcontrolerului Intel 8051

Baza diagramei bloc (Fig. 1) este formată dintr-o magistrală internă bidirecțională de 8 biți, care interconectează nodurile și dispozitivele principale ale microcontrolerului: memorie rezidentă de program (RPM), memorie rezidentă de date (RDM), aritmetic-logic unitate (ALU), funcții speciale ale unității de înregistrare, unitate de control (CU), porturi I/O paralele (P0-P3), precum și temporizatoare programabile și un port serial.

2.1. Organizarea memoriei

Acest microcontroler are încorporat (rezident) și memorie externă de programe și date. Memoria de program rezidentă (RPM) are o capacitate de 4 KB, iar memoria rezidentă de date (RDM) are o capacitate de 128 de octeți.


În funcție de modificarea microcontrolerului, RPM este implementat sub forma unui ROM masca, ROM programabil unic sau reprogramabil.

Dacă este necesar, utilizatorul poate extinde memoria programului instalând un ROM extern. Accesul la ROM-ul intern sau extern este determinat de valoarea semnalului de la pinul EA (Acces extern):

EA=VCC (tensiune de alimentare) - acces la ROM-ul intern;

EA=VSS (potențial de masă) - acces la ROM extern.

Programul extern și memoria de date pot fi de 64 KB fiecare și pot fi adresate folosind porturile P0 și P2. Figura 2 prezintă cardul de memorie Intel 8051.

Figura 2 - Organizarea memoriei Intel 8051

Strobe de citire ROM extern - (Program Store Enable) este generat la accesarea memoriei externe a programului și este inactiv în timpul accesării ROM-ului situat pe cip.

Zona de adrese inferioare de memorie a programului (Fig. 3) este utilizată de sistemul de întrerupere. Arhitectura chipului INTEL 8051 oferă suport pentru cinci surse de întrerupere. Adresele la care este transferat controlul întreruperii se numesc vectori de întrerupere.

Figura 3 - Harta zonei inferioare de memorie a programului

2.2. Unitate logică aritmetică

Unitatea logică aritmetică de 8 biți (ALU) poate efectua operații aritmetice de adunare, scădere, înmulțire și împărțire; operații logice ȘI, SAU, SAU exclusiv, precum și operații de deplasare ciclică, resetare, inversare etc. Registre inaccesibile de software T1 și T2, destinate stocării temporare a operanzilor, un circuit de corecție zecimală (DCU) și un circuit de generare de caracteristici sunt conectate la rezultatul operațiunii intrărilor (PSW).

Operația simplă de adăugare este utilizată în ALU pentru a incrementa conținutul registrelor, a avansa registrul indicatorului de date (RAR) și a calcula automat următoarea adresă de memorie rezidentă a programului. Cea mai simplă operație de scădere este utilizată în ALU pentru a decrementa registrele și a compara variabile.

Cele mai simple operații formează automat „tandemuri” pentru a efectua operațiuni precum, de exemplu, incrementarea perechilor de registre de 16 biți. ALU implementează un mecanism pentru executarea în cascadă a operațiilor simple pentru a implementa comenzi complexe. Deci, de exemplu, la executarea uneia dintre comenzile de transfer de control condiționat, pe baza rezultatului comparației în ALU, contorul de program (PC) este incrementat de trei ori, RDM este citit de două ori, se efectuează o comparație aritmetică a două variabile, se formează o adresă de tranziție pe 16 biți și se ia o decizie dacă se face sau nu tranziția conform programului. Toate operațiunile de mai sus sunt efectuate în doar 2 μs.

O caracteristică importantă a ALU este capacitatea sa de a opera nu numai octeți, ci și biți. Biții individuali accesibili de software pot fi setați, șterși, inversați, transmisi, testați și utilizați în operațiuni logice. Această abilitate este destul de importantă, deoarece pentru controlul obiectelor sunt adesea folosiți algoritmi care conțin operații asupra variabilelor booleene de intrare și de ieșire, a căror implementare este asociată cu anumite dificultăți cu ajutorul microprocesoarelor convenționale.

Astfel, ALU poate opera cu patru tipuri de obiecte informaționale: boolean (1 bit), digital (4 biți), octet (8 biți) și adresă (16 biți). ALU efectuează 51 de operații diferite pentru a transmite sau transforma aceste date. Deoarece există 11 moduri de adresare (7 pentru date și 4 pentru adrese), prin combinarea operațiunii și a modului de adresare, numărul de bază de 111 instrucțiuni este extins la 255 din 256 posibile cu un opcode pe un singur octet.

2.3. Program rezident și memorie de date

Memoria de program rezidențială (pe cip) (RPM) și memoria de date (RDM) sunt separate fizic și logic, au mecanisme de adresare diferite, funcționează sub controlul diferitelor semnale și îndeplinesc diferite funcții.

Memoria programului RPM are o capacitate de 4 KB și este concepută pentru a stoca comenzi, constante, cuvinte de control de inițializare, tabele de conversie pentru variabilele de intrare și ieșire etc. Memoria are o magistrală de adrese de 16 biți, prin care se asigură accesul din Contor de programe PC sau din registru.pointer de date (DPTR). DPTR funcționează ca un registru de bază pentru salturile indirecte de program sau este utilizat în operațiunile de tabel.

Memoria de date RDM este concepută pentru a stoca variabile în timpul execuției unui program de aplicație, este adresabilă cu un octet și are o capacitate
128 de octeți. În plus, spațiul său de adrese este adiacent adreselor registrelor de funcții speciale, care sunt listate în tabel. 1.

Memoria programului, ca și memoria de date, poate fi extinsă la
64 KB prin conectarea cipurilor externe.

tabelul 1

Bloc de registru cu funcții speciale

Nume

Baterie

Registrul expansor al acumulatorului

Cuvânt de stare program

Stack pointer register

Registrul indicatorului de date

Întreruperea registrului prioritar

Întrerupeți registrul măștilor

Înregistrare mod temporizator/contor

Controlul cronometrului/Registrul de stare

Temporizator 0 (octet mare)

Temporizator 0 (octet scăzut)

Temporizator 1 (octet mare)

Temporizator 1 (octet scăzut)

Registrul de control al transceiver

Transceiver Buffer

Registrul de control al puterii

Notă. Registrele ale căror nume sunt marcate cu (*) permit adresarea biților individuali.

2.4. Acumulator și registre generale

Acumulatorul (A) este sursa operandului și locația rezultatului atunci când se efectuează operații aritmetice, logice și o serie de operațiuni de transfer de date. În plus, operațiunile de schimbare, verificarea zero, generarea unui flag de paritate etc. pot fi efectuate numai folosind acumulatorul.

Utilizatorul are la dispoziție patru bănci de 8 registre de uz general R0–R7 (Fig. 9). Cu toate acestea, este posibil să se utilizeze registrele doar unuia dintre cele patru bănci, care este selectat folosind bitul de registru PSW.

2.5. Registrul de cuvinte de stare a programului și steagurile acestuia

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 2 oferă o listă de steaguri PSW, dă numele lor simbolice și descrie condițiile pentru formarea lor.

masa 2

Format cuvânt de stare a programului PSW

Nume și scop

Purtați steagul. Setați și resetați prin hardware sau software atunci când efectuați operații aritmetice și logice

Steagul de transport auxiliar. Setat și șters numai de hardware atunci când instrucțiunile de adăugare și scădere sunt executate și semnalează o transportare sau împrumut în bitul 3

Flag 0. Poate fi setat, șters sau verificat de program ca un semnalizator specificat de utilizator.

Selectarea unei bănci de registru. Setați și resetați prin software pentru a selecta o bancă de registre de lucru (Tabelul 3)

Steagul de preaplin. Setați și resetați de hardware atunci când efectuați operații aritmetice

Nefolosit

Steagul de paritate. Setează și resetează hardware în fiecare ciclu și fixează numărul impar/par al unui biți din acumulator, adică realizează paritatea

Tabelul 3

Selectarea unei banci de registru de lucru

Limitele adresei

Cel mai „activ” steag PSW este indicatorul de transport, care este implicat și modificat în timpul multor operațiuni, inclusiv adunări, scăderi și schimburi. În plus, indicatorul de transport (CY) funcționează ca un „acumulator boolean” în instrucțiunile de manipulare a biților. Indicatorul de depășire (OV) detectează depășirea aritmetică în operațiile cu numere întregi cu semn și face posibilă utilizarea aritmeticii în codurile complementului a doi. ALU nu controlează steagurile de selecție a băncilor de registre (RS0, RS1), valoarea acestora este complet determinată de programul de aplicație și este utilizată pentru a selecta una dintre cele patru bănci de registre.

Ca octet, registrul PSW poate fi reprezentat după cum urmează:

În microprocesoarele a căror arhitectură se bazează pe un acumulator, majoritatea instrucțiunilor operează pe acumulator folosind adresare implicită. Intel 8051 este diferit. Deși procesorul se bazează pe o baterie, poate executa multe comenzi fără participarea sa. De exemplu, datele pot fi transferate din orice celulă RDM în orice registru, orice registru poate fi încărcat cu un operand imediat etc. Multe operații logice pot fi efectuate fără a implica un acumulator. În plus, variabilele pot fi incrementate, decrementate și verificate fără a utiliza un acumulator. Flag-urile și biții de control pot fi verificați și modificați în același mod.

2.6. Registre pointer

Pointerul de stivă de 8 biți (SP) poate adresa orice zonă RDM. Conținutul său este incrementat înainte ca datele să fie stocate pe stivă în timpul instrucțiunilor PUSH și CALL. Conținutul SP este decrementat după ce sunt executate comenzile POP și RET. Această metodă de adresare a elementelor stivei se numește pre-increment/post-decrement. În timpul inițializării microcontrolerului, după semnalul RST, codul 07H este încărcat automat în SP. Aceasta înseamnă că, cu excepția cazului în care programul de aplicație suprascrie stiva, primul element de date din stivă va fi localizat în locația RDM 08H.

Registrul de indicator de date de doi octeți DPTR este de obicei utilizat pentru a captura o adresă de 16 biți în operațiunile de acces la memoria externă. Prin comenzile microcontrolerului, registrul pointerului de date poate fi folosit fie ca un registru de 16 biți, fie ca două registre independente de 8 biți (DPH și DPL).

2.7. Registre cu funcții speciale

Registrele, denumite simbolic IP, IE, TMOD, TCON, SCON și PCON, sunt utilizate pentru a bloca și pentru a schimba programatic biții de control și stare ai circuitului de întrerupere, temporizator/contor, transceiver serial și managementul alimentării. Organizarea lor va fi descrisă în detaliu în secțiunile 1.8-1.12, atunci când se iau în considerare caracteristicile microcontrolerului în diferite moduri.

2.8. Dispozitiv de control și sincronizare

Un rezonator de cuarț conectat la pinii externi ai microcontrolerului controlează funcționarea oscilatorului intern, care, la rândul său, generează semnale de sincronizare. Unitatea de control (CU), bazată pe semnale de sincronizare, generează un ciclu de mașină cu o durată fixă ​​egală cu 12 perioade de generator. Majoritatea instrucțiunilor microcontrolerului sunt executate într-un singur ciclu de mașină. Unele instrucțiuni care funcționează pe cuvinte de 2 octeți sau care accesează memoria externă necesită două cicluri de mașină pentru a fi finalizate. Doar instrucțiunile de împărțire și înmulțire necesită patru cicluri de mașină. Pe baza acestor caracteristici de operare ale dispozitivului de control, se calculează timpul de execuție al programelor de aplicație.

În circuitul microcontrolerului, un registru de instrucțiuni (IR) este adiacent dispozitivului de control. Funcția sa este de a stoca codul comenzii care se execută.

Semnale de intrare și de ieșire ale dispozitivului de control și sincronizare:

1. PSEN – rezoluția memoriei programului,

2. ALE – semnal de ieșire de activare a fixării adresei,

3. PROG – semnal de programare,

4. EA – blocarea lucrărilor cu memoria internă,

5. VPP – tensiune de programare,

6. RST – semnal de resetare generală,

7. VPD – putere de ieșire de rezervă a memoriei de la sursă externă,

8. XTAL – intrări de conectare rezonator cu cuarț.

2.9. Porturi paralele de intrare/ieșire

Toate cele patru porturi (P0-P3) sunt proiectate pentru a introduce sau ieși informații octet cu octet. Fiecare port conține un registru de blocare controlat, un buffer de intrare și un driver de ieșire.

Driverele de ieșire ale porturilor P0 și P2, precum și bufferul de intrare al portului P0, sunt utilizate la accesarea memoriei externe. În acest caz, prin portul P0 în modul de multiplexare în timp, octetul inferior al adresei este mai întâi scos, iar apoi octetul de date este emis sau primit. Portul P2 scoate cel mai semnificativ octet al adresei în cazurile în care lățimea adresei este de 16 biți.

Toți pinii portului P3 pot fi utilizați pentru a implementa funcțiile alternative enumerate în tabel. 4. Aceste funcții pot fi activate prin scrierea 1 în biții corespunzători ai registrului latch (P3.0-P3.7) ai portului P3.

Tabelul 4

Funcții alternative ale portului P3

Nume și scop

Citind. Un semnal activ de nivel scăzut este generat de hardware la accesarea memoriei externe de date

Record. Un semnal activ de nivel scăzut este generat de hardware la accesarea memoriei externe de date

Intrare temporizator/contor 1 sau intrare de test

Intrare temporizator/contor 0 sau intrare test

Intrare cerere de întrerupere 1. Detectează semnalul de nivel scăzut sau de întrerupere

Intrare cerere de întrerupere 0. Detectează semnal de nivel scăzut sau de întrerupere

Ieșire transmițător cu port serial în modul UART. Ieșire ceas în modul registru de deplasare

Intrare receptor serial în modul UART. Intrare/ieșire de date în modul registru de deplasare

Portul 0 este bidirecțional, iar porturile 1-3 sunt cvasi-bidirecționale. Fiecare linie de port poate fi utilizată independent pentru intrare sau ieșire.

Pe baza semnalului RST, unitățile sunt scrise automat în registrele de blocare ale tuturor porturilor, setându-le astfel pentru modul de intrare.

Toate porturile pot fi folosite pentru a organiza intrarea/ieșirea informațiilor prin linii de transmisie bidirecțională. Cu toate acestea, porturile P0 și P2 nu pot fi utilizate în acest scop dacă sistemul dispune de memorie externă, comunicarea cu care este organizată printr-o magistrală comună de adrese/date partajate care funcționează în modul de multiplexare temporală.

Accesarea porturilor I/O este posibilă folosind comenzi care operează pe un octet, un bit individual sau o combinație arbitrară de biți. Mai mult, în cazurile în care portul este atât un operand, cât și destinația rezultatului, dispozitivul de control implementează automat un mod special numit „citire-modificare-scriere”. Acest mod de acces implică introducerea semnalelor nu de la pinii externi ai portului, ci din registrul său de blocare, ceea ce elimină citirea incorectă a informațiilor ieșite anterior. Acest mecanism de accesare a porturilor este implementat în comenzile:




Top