Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Greșeli
  • Microcontrolere MCS-51. Diagrama bloc, ALU, memorie de date

Microcontrolere MCS-51. Diagrama bloc, ALU, memorie de date

Baza microcontrolerului (vezi Fig. 1) este o unitate aritmetică logică (ALU) pe 8 biți. Memoria MK are o arhitectură Harvard, adică. împărțit logic: în memorie de program - PP (internă sau externă), adresată de un contor de comenzi de 16 biți (SC) și memorie de date - internă (Memoria de date rezidentă - RPD) 128 (sau 256) octeți, precum și externă (Externă memorie de date – VPD) până la 64 KB. Din punct de vedere fizic, memoria programului este implementată pe ROM (numai citire), iar memoria de date este implementată pe RAM (datele pot fi scrise și citite).

Recepția și livrarea semnalelor externe se realizează prin 4 porturi de opt biți Р0..Р3. Când accesați memoria de program externă (EPM) sau memoria de date (VPD), porturile P0 și P2 sunt utilizate ca magistrală externă multiplexată pentru adrese/date. Liniile de port P3 pot îndeplini și funcții alternative (vezi Tabelul 1).

Registrul DPTR pe 16 biți formează adresa VPD sau adresa de bază a memoriei programului în instrucțiunea de conversie a acumulatorului. Registrul DPTR poate fi folosit și ca două registre independente de 8 biți (DPL și DPH) pentru a stoca operanzi.

Registrul intern de comandă (RK) de 8 biți primește codul comenzii care se execută; acest cod este decodat de circuitul de control, care generează semnale de control (vezi Fig. 1).

Accesul la registrele de funcții speciale - RSF (SFR - în Fig. 1 sunt încercuite cu o linie punctată) este posibil numai folosind adresarea directă a octetilor în intervalul de adrese de la 128 (80h) și mai mult.


Memoria de date rezidentă (RDD) în primele modele de microcontrolere din familia MCS-51 avea o capacitate de 128 de octeți. Cei 32 de octeți inferiori ai RPD sunt, de asemenea, registre de uz general - RON (4 bănci a câte 8 RON fiecare). Programul se poate aplica la unul dintre cei 8 lei ai băncii active. Selecția băncii active de RON se realizează prin programarea a doi biți în registrul de stare a procesorului - PSW.


Tabelul 1 - Atribuirea pinului MCS-51

PIN nr. Desemnare Scop
1..8 P1 Port I/O cvasi-bidirecțional pe 8 biți
9 RST

Semnal de resetare (nivel activ - ridicat);

Semnalul RST resetează: PC-ul și majoritatea registrelor cu funcții speciale (SFR), dezactivând toate întreruperile și temporizatoarele; selectează RON Bank 0; scrie „toate” pe porturile P0_P3, pregătindu-le pentru intrare; scrie codul 07H la indicatorul de stivă (SP);

10..17

Port I/O cvasi-bidirecțional pe 8 biți; după scrierea pe bitul corespunzător „1” - efectuează funcții suplimentare (alternative):

Intrare port serial - RxD;

Ieșire port serial - 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 stroboscopică. semnal la scrierea la VPD - ~ WR;

Ieșire stroboscopică. semnal la citirea din VPD - ~ RD;

18, 19 X1, X2 Concluzii pentru conectarea unui rezonator de cuarț sau circuit LC;
20 GND Concluzie generală;
21..28 P2 Port I/O cvasi-bidirecțional pe 8 biți; sau adresa de ieșire A în modul memorie externă (VPP sau VPD);
29 PME Strobe de citire a memoriei programului extern, emis numai la accesarea ROM-ului extern;
30 ALE Strobe pentru adrese de memorie externă (VPP sau VPD);
31 EA Dezactivând RPP, nivelul „0” la această intrare comută MK la o selecție de comenzi doar de pe pistă ;
39..32 P0 Port I/O bidirecțional pe 8 biți; la accesarea memoriei externe, emite adresele A (care sunt scrise într-un registru extern de semnalul ALE), apoi schimbă un octet sincron cu semnalul ~PME (pentru comenzi) sau ~WR,~RD (pentru date în VPD) , la accesarea Memoriei Externe toate unitățile sunt scrise în registrul portului P0, distrugând informațiile stocate acolo;
40 Ucc Ieșire tensiune de alimentare

Comutarea băncilor de RON simplifică execuția subrutinelor și gestionarea întreruperilor, deoarece. nu este necesar să transferați conținutul RON-urilor programului principal în stivă la apelarea subrutinei (este suficient să mergeți la o altă bancă RON activă din subrutină).

Accesul la RPD este posibil folosind adresarea indirectă sau directă pe octeți (adresarea directă pe octeți permite accesarea doar a primilor 128 de octeți ai RPD).

Zona RPD extinsă (pentru microcontrolere din familia MCS-52 și familiile ulterioare) de la adresa 128 (80h) la 255 (FFh) poate fi adresată numai folosind metoda de adresare indirectă.

Tabelul 2 - Blocuri de registre ale funcțiilor speciale (s f r)

Cod mnemo Nume
0E0h *ACC Baterie
0F0h *B Înregistrați extensia bateriei
0D0h *PSW Cuvânt de stare procesor
0B0h * P3 Portul 3
0A0h * P2 Portul 2
90h * P1 Portul 1
80h *P0 Portul 0
0B8h * IP Întreruperea registrului prioritar
0A8h *IE Întrerupeți registrul măștilor
99h SBUF Buffer pentru transceiver serial
98h * SCON Controlul portului serial/Registrul de stare
89h TMOD Înregistrare mod temporizator/contor
88h * TCON Timer/Control de contor/Registrul de stare
8Dh TH1 Temporizator 1 (octet mare)
8bh TL1 Temporizator 1 (octet scăzut)
8 canale TH0 Temporizator 0 (octet mare)
8ah TL0 Temporizator 0 (octet scăzut)
83h DPH Data Pointer Register (DPTR) (octet mare)
82h DPL Data Pointer Register (DPTR) (octet mic)
81h SP Stack pointer register
87h PCON Registrul de control al puterii la cerere

2. MODEL DE SOFTWARE MCS–51


TIPURI DE COMANDĂ MCS–51

Aproape jumătate din comenzi sunt executate într-un ciclu de mașină (MC). Cu o frecvență a oscilatorului cu cristal de 12 MHz, timpul de execuție pentru o astfel de comandă este de 1 μs. Comenzile rămase sunt executate în 2 cicluri de mașină, adică. timp de 2 ms. Numai instrucțiunile de multiplicare (MUL) și împărțire (DIV) sunt executate în 4 cicluri de mașină.

În timpul unui ciclu de mașină, există două accesări la memoria programului (internă sau externă) pentru a citi doi octeți ai instrucțiunii sau un acces la memoria de date externă (EDM).

3. METODE (METODE) DE ADRESAREA MCS–51

1. ADRESAREA REGISTRULUI - operandul de 8 biți este situat în RON al băncii de registre selectate (active);

2 ADRESARE DIRECTĂ (indicată prin semnul - #) - operandul este situat în al doilea (și pentru un operand de 16 biți și în al treilea) octet al comenzii;

3 ADRESARE INDIRECTA (indicata prin semnul - @) - operandul se afla in Memoria de Date (RPD sau VPD), iar adresa celulei de memorie este cuprinsa intr-unul din RON-urile de adresare indirecta (R0 sau R1); în comenzile PUSH și POP, adresa este conținută în pointerul de stivă SP; registrul DPTR poate conține o adresă VPD de până la 64K;

4 ADRESARE DIRECT BYTE – (dir) – utilizat pentru accesarea celulelor RPD (adresele 00h…7Fh) și a registrelor de funcții speciale SFR (adresele 80h…0FFh);

ADRESARE DIRECTA DE 5 BITI - (bit) - este folosita pentru a adresa 128 de biti adresabili separat situati in celulele RPD la adresele 20H ... 2FH si la bitii adresabili separat ai registrelor cu functii speciale (vezi Tabelul 3 si modelul programului);

6 ADRESARE INDIRECTA INDEX (notata cu semnul @) - simplifica vizualizarea tabelelor din Memoria Programului, adresa PP este determinata de suma registrului de baza (PC sau DPTR) si a registrului index (Baterie);

7 ADRESARE IMPLICITĂ (INSTRUCȚĂ) - codul instrucțiunii conține o referință implicită (implicit) la unul dintre operanzi (cel mai adesea la Acumulator).

4. FORMAT CUvânt DE STARE PROCESOR (PSW).

C - Carry (CARY) sau steag de împrumut, funcționează și ca un „acumulator boolean” în instrucțiunile operate de biți;

AC – indicator de transport auxiliar (suplimentar) – setat la „1” dacă comanda de adăugare (ADD, ADDC) a avut o transportare de la tetrada de ordin inferioară la ordinul superior (adică de la al 3-lea bit la al 4-lea bit);

F0 - steag utilizator - setat, resetat și verificat de software;

RS1 RS0 bancă Adresă (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – Înregistrați selecția băncii:

OV - Pavilion de debordare aritmetică; valoarea sa este determinată de operarea XOR a semnalelor de transport de intrare și de ieșire ale bitului cel mai semnificativ al ALU; o singură valoare a acestui indicator indică faptul că rezultatul unei operații aritmetice în codul complementului a doi este în afara intervalului: –128…+127; la efectuarea operațiunii de împărțire se resetează steagul OV, iar în cazul împărțirii la zero este setat; la înmulțire, steag-ul OV este setat dacă rezultatul este mai mare de 255 (0FFH);

Bit PSW - Rezervat, conține un declanșator, disponibil pentru scriere sau citire;

P - flag de paritate - este adăugarea numărului de biți unici din acumulator la un număr par; este format dintr-un circuit combinațional (disponibil programatic doar pentru citire).

Microcontrolerele MCS-51 nu au marcajul „Z”. Dar în instrucțiunile de salt condiționat (JZ, JNZ), circuitul combinațional verifică conținutul curent (zero sau diferit de zero) al acumulatorului.

Toate comenzile de transfer și schimb de operanzi pot fi efectuate prin Acumulator (vezi Fig. 3). Mai mult decât atât, transferurile din / către Memoria Externă (Memorie de program sau Memoria de date) pot fi efectuate numai prin intermediul bateriei.

Cele mai multe transferuri pot fi efectuate și printr-un octet înainte (dir). Există chiar și transferuri dir-to-dir (vezi Figura 3).

Transferurile lipsă de la RON la RON pot fi implementate ca transferuri de la RON către directorul de byte de înaintare (în condițiile în care RON-urile sunt situate în zona inițială a memoriei de date rezidente, ale cărei celule pot fi adresate ca dir).

Comenzile de schimb XCH vă permit să trimiteți octeți fără a distruge ambii operanzi.

Comenzile aritmetice sunt executate numai în Acumulator. Prin urmare, primul operand trebuie mai întâi să fie plasat în Acumulator și apoi să adunăm sau să scadă al doilea operand. Rezultatul este plasat în Acumulator.


Comanda de scădere SUBB este executată numai cu un împrumut (adică, indicatorul Cary este, de asemenea, scăzut din rezultat). Prin urmare, pentru a executa o instrucțiune de scădere fără împrumut, este necesar să executați mai întâi instrucțiunea Clear Flag C (CLRC).

Instrucțiunea de înmulțire a operanzilor de un octet - MULAB - plasează un rezultat de doi octeți (16 biți): octetul mic este în acumulator, octetul mare este în registrul B.

Rezultatul executării instrucțiunii de împărțire a operanzilor de un octet - DIVAB - este plasat: coeficientul - un Acumulator, restul - în registrul B.

Instrucțiunea de aritmetică INC adaugă unul la operandul selectat. Instrucțiunea aritmetică DEC scade unul din operandul selectat. Instrucțiunea Acumulator Decimal Correction (DAA) vă ajută să adăugați numere zecimale codificate binar (BCD) fără a le converti în format hexazecimal (hex). Operanzii sursă trebuie să fie în format BCD, adică. în fiecare tetradă de un octet sunt doar numere de la 0 la 9 (nu pot exista numere hexazecimale: A, B, C, D, E, F). Prin urmare, un octet poate conține numere de la 00 la 99 pentru numerele BCD împachetate sau numere de la 0 la 9 pentru numerele BCD dezambalate.

Comanda DA A - corecție zecimală efectuează acțiuni asupra conținutului Acumulator după adăugarea numerelor BCD în procesor (numerele au fost adăugate conform legilor aritmeticii hexazecimale) după cum urmează (vezi exemplu):

· dacă conținutul tetradei de ordin inferior a acumulatorului este mai mare de 9 sau este setat indicatorul de transport auxiliar (AC = 1), atunci 6 se adaugă la conținutul acumulatorului (adică cele șase cifre lipsă în hex format);

· dacă după aceea conținutul de ordine superioară a Acumulator este mai mare de 9 sau steag C este setat, atunci numărul 6 este adăugat la ordinea superioară a Acumulator.

Instrucțiunea de corecție zecimală DA A nu este utilizată după instrucțiunea de increment (INC), deoarece instrucțiunea de increment nu afectează (modifică) steagurile C și AC.

Comenzi logice:

„ȘI” logic - ANL,

„SAU” logic - ORL,

Comanda logică XOR - XRL - este executată în Acumulator (precum și aritmetică), dar este posibil să se execute comenzi logice și în octetul de adresă directă (dir). În acest caz, al doilea operand poate fi:

în baterie sau

Un operand imediat într-o instrucțiune.

Instrucțiunile de rotație (RR A, RL A) și instrucțiunile de rotație prin marcajul CARY (RRC A, RLC A) rotesc conținutul acumulatorului cu 1 bit. Operanzii de biți sunt trimiși numai prin indicatorul C.

Arhitectura familiei MCS-51 este în mare parte predeterminată 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 sarcinile de control al diferitelor dispozitive, cât și implementarea nodurilor individuale ale circuitului analogic. Toate microcircuitele acestei familii funcționează la fel sistem de comandă MCS-51, majoritatea sunt efectuate in aceleasi cazuri cu pinout potrivit(numerotarea picioarelor pentru carcasă). Acest lucru vă permite să utilizați cipuri de la diferite companii pentru dispozitivul dezvoltat - Maxim, Atmel, NXP etc. (catalog..php?page=components_list&id=39"> s.m. Căutare după parametri) fără a modifica schema de circuit a dispozitivului și programului.

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: o unitate de control, o unitate logică aritmetică, o unitate de cronometru/contor, o interfață serială și o unitate de întrerupere, un contor de programe, memorie de date și memoria programului. Schimbul bilateral se realizează folosind o autostradă internă de date de 8 biți.

Să aruncăm o privire mai atentă asupra scopului fiecărui bloc. Aproape toți reprezentanții 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 oferă o portabilitate excelentă a programelor de la un cip la altul.

Unitate de control și sincronizare

Unitatea de control și sincronizare (Timing and Control) este concepută pentru a genera semnale de sincronizare și control care asigură coordonarea funcționării în comun a unităților OEVM în toate modurile admise de funcționare a acesteia.Unitatea de control include:

  • - dispozitiv pentru formarea intervalelor de timp,
  • - logica I/O,
  • - registru de instructiuni,
  • - registrul de gestiune a consumului de energie electrica,
  • - decodor de comandă, logica de control al computerului.

Dispozitiv de interval de timp este destinat generarii si iesirii semnalelor interne de sincronizare a fazelor, ciclurilor si ciclurilor. Numărul de cicluri ale mașinii determină durata de execuție a instrucțiunii. Aproape toate comenzile OEVM 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ă este de patru cicluri de mașină. Să notăm frecvența oscilatorului principal prin F g. Atunci durata ciclului mașinii este de 12/F g, sau 12 perioade ale semnalului oscilatorului principal. Logica de intrare-ieșire este concepută pentru a recepționa și emite semnale care asigură schimbul de informații cu dispozitivele externe prin porturile de intrare/ieșire P0-P3.

Registrul de comenzi este conceput pentru a înregistra și stoca un cod 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 într-un microprogram pentru executarea comenzii.

Registrul de control al cererii (PCON) vă permite să opriți funcționarea microcontrolerului 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 reducerea zgomotului poate fi obținută prin oprirea oscilatorului principal al microcontrolerului. Acest lucru poate fi realizat prin comutarea biților din registrul de control al cererii PCON. Pentru opțiunea de fabricație n-MOS (seria 1816 sau cipuri străine care nu au litera „c” în mijlocul numelui), registrul de control al puterii PCON conține doar un bit care controlează rata de transmisie a portului serial SMOD, și nu există biți de control al puterii.

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

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

Inregistreaza-te baterieȘi deține registre- registre de opt biți concepute pentru a primi și stoca operanzi pe durata operațiunilor asupra acestora. Aceste registre nu sunt accesibile programatic.

constante ROM asigură dezvoltarea unui cod corector pentru reprezentarea datelor binare-zecimale, a unui cod masca pentru operațiuni pe biți și a unui cod constant.

Adder paralel pe 8 biți este un circuit combinațional cu transfer 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, acesta poate fi considerat ca un registru scratchpad suplimentar.

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 bloc de întrerupere (SIP) este conceput pentru a organiza intrarea-ieșire a fluxurilor de informații secvențiale și pentru a organiza sistemul 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 pentru procesarea steaguri de întrerupere și o schemă de generare a vectorilor.

Contor de programe este 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 constă dintr-un buffer PC de 16 biți, un registru PC și un circuit de incrementare (creșterea conținutului 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 OEVM ș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) este 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). Diverse microcircuite folosesc ROM-uri mascate care sunt șterse de radiațiile ultraviolete sau FLASH ROM.

Registrul indicatorului de date (DPTR) este conceput pentru a stoca adresa 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 puteți stoca temporar orice celulă de memorie.



La originile producției de microcontrolere se află Intel cu familiile de microcontrolere pe opt biți 8048 și 8051. Arhitectura MCS-51 și-a luat numele de la primul reprezentant al acestei familii - microcontrolerul 8051, lansat în 1980 bazat pe tehnologia HMOS. Un set bun de periferice, o alegere flexibilă de memorie de program externă sau internă și un preț accesibil au asigurat că acest microcontroler a fost un succes pe piață. În ceea ce privește tehnologia, 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 pe 8 biți bazat pe arhitectura bateriei;
- 4 banci de registre, cate 8 in fiecare;
- memorie program incorporata 4Kbytes;
- RAM interna 128 bytes;
- procesor boolean
-2 cronometre pe șaisprezece biți;
- controler serial link (UART);
- controler de întrerupere cu două niveluri de prioritate;
- patru porturi de intrare/ieșire 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 8051 disponibili, așa că dezvoltarea de software nu este dificilă.

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, ceea ce a făcut posibilă reducerea drastică a consumului de energie al cristalului și a deschis calea pentru utilizarea unui microcontroler în aplicații volatile, 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 caracteristică distinctivă a acestui grup de cristale este gama lor de contoare programabile (PCA). Diagrama structurală a PCA este prezentată în Fig.2.

PCA include:

Cronometrul/contorul serveș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 semnalului extern;
Eșantionarea pe 16 biți a valorii temporizatorului pe marginea negativă a semnalului extern;
Eșantionarea pe 16 biți a valorii temporizatorului pe orice margine a semnalului extern;
Temporizator software pe 16 biți;
Dispozitiv de 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 debitului general al sistemului, îmbunătățirea preciziei măsurătorilor și procesării semnalului și reducerea timpului de răspuns al microcontrolerului la exterior. evenimente, care 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 microcontrolerelor FX a devenit standardul industrial de facto, iar PCA în sine a fost reprodus în mod repetat în diferite modificări ale microcontrolerelor de la diferite companii.

Inițial, blocajele arhitecturii MCS-51 au fost o ALU bazată pe baterie de 8 biți și execuția instrucțiunilor relativ lentă (sunt necesare 12 cicluri de ceas pentru a executa cele mai rapide instrucțiuni). Acest lucru a limitat utilizarea microcontrolerelor din familie în aplicații care necesită performanță 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, au fost deja create o mulțime de dezvoltări în domeniul software și hardware, iar una dintre sarcinile principale în dezvoltarea unei noi arhitecturi a fost implementarea compatibilității hardware și software. cu dezvoltări 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 (ne vom concentra mai jos pe acesta din urmă).

Caracteristici cheie ale arhitecturii MSC-251:

Spațiu de adrese liniar pe 24 de biți, care se adresează până la 16M de memorie(microcontrolerele fabricate din familia MCS-251 au un spațiu de memorie de 256K);
Setul de instrucțiuni al microcontrolerelor din familia MCS-251 conține toate cele 111 comenzi incluse în setul de instrucțiuni al microcontrolerelor din familia 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 prin „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 pe 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ă reproiectarea software-ului.
o arhitectură de registru care permite ca registrele să fie denumite octeți, cuvinte și cuvinte duble;
adresarea modului pagină pentru a accelera preluarea instrucțiunilor din memoria externă a programului;
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;
compatibilitatea codului binar cu programele pentru MCS-51.

Pentru utilizatorii orientați spre utilizarea microcontrolerelor MCS-251 ca înlocuitor mecanic pentru MCS-51, Intel lansează microcontrolere MCS-251 cu biții de configurare deja programați în modul Binary Mode. Astfel de microcontrolere au primit indexul MCS-151.

Pe lângă Intel în sine, microcontrolerele MCS-251 sunt licențiate de Temic Semiconductors.

Universal Serial Bus (sau USB) extinde tehnologia Plug-and-Play la dispozitivele externe I/O găsite pe computerele personale de înaltă performanță de astăzi.

Pentru a putea conecta o varietate de dispozitive periferice, standardul USB definește patru moduri de transfer: Master, Isochronous, Pulse și Array Transfer. Fiecare periferic trebuie să accepte un mod de control pentru transmiterea parametrilor de configurare, comenzilor și informațiilor despre starea dispozitivului. Transferul izocron oferă acces garantat la magistrală, lățime de bandă constantă și toleranță la erori și poate fi utilizat în dispozitive de ieșire audio și telefonie pe computer. 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 de matrice 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 magistrală devine liber.

Caracteristicile principale ale produsului

Complet compatibil cu „Universal Serial Bus Specification 1.0”
Transceiver USB integrat Serial Bus Interface Engine (SIE)
Patru cozi FIFO pentru transmisie
Trei cozi FIFO de 16 octeți
Patru cozi FIFO pentru primire
Trei cozi FIFO de 16 octeți
O singură coadă FIFO configurabilă (până la 1024 de octeți)
Control automat al recepției/transmisiei în cozile FIFO
Opriți/Reluați operațiunile
Trei vectori de întrerupere a magistralei USB
Ciclu de blocare a fazei
Rate de date: 12 Mbps și 1,5 Mbps
Mod ciclu lent
Spațiu de adrese extern cu o capacitate de 256 KB
Moduri de economisire a energiei: standby și oprire
Opțiuni definite de utilizator
Așteptând în timp real
1 KB RAM pe cip
Patru porturi I/O
Matrice de contoare programabile (PCA)
Microcontroler UART standard (MCS 51).
Watchdog hardware
Trei temporizatoare/contoare flexibile pe 16 biți
Compatibil cu setul de instrucțiuni pentru microcontroler 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 dispozitivul de ieșire
Gestionarea energiei, inclusiv oprire/reluare
Detectarea defecțiunii și recuperarea magistralei
Suport pentru dispozitive de ieșire cu viteză maximă și viteză mică
Pin de ieșire pentru comutarea alimentării portului
Contact de intrare pentru detectarea suprasarcinii

Patru moduri diferite de transfer de date USB sunt furnizate prin cooperarea 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 pe computer: intrare de la tastatură sau joystick, ieșire către 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 sunt un punct de expansiune USB care oferă acces la alte dispozitive funcționale. Microcontrolerul Intel 8x930Hx, care combină controlul funcțional al dispozitivului și un hub USB, este primul hub USB disponibil comercial, conceput pentru periferice moderne pentru PC.

Hub-urile USB joacă un rol esențial în extinderea lumii utilizatorului de PC. Odată cu apariția perifericelor - tastaturi, monitoare, imprimante și multe altele - echipate cu hub-uri încorporate, conectarea sau deconectarea unui nou dispozitiv este la fel de ușoară ca și introducerea unui ștecher într-o priză. Noile niveluri de performanță și conectivitate USB îmbunătățită ar putea duce la o nouă generație de dispozitive pentru aplicații de muncă și divertisment. Zilele cardurilor încorporate, conflictele IRQ și firele încurcate sunt numerotate.

Cablul magistralei USB este format din doar patru fire: Vbus, D+, D- si GND - simplificand si uniformand astfel conexiunea. Același scop este servit de un singur conector standard pentru conectarea dispozitivelor periferice la magistrala USB. Datele sunt transmise 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 cristal, deci nu este nevoie de circuite electronice externe. Excepția este rezistorul de terminare pe ambele linii D+ și D-, care este necesar pentru a determina dacă dispozitivul are viteză mare sau 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 caracteristici îmbunătățite ale hub-ului de bus USB încorporat. Utilizarea arhitecturii MCS 251 în ambele controlere de magistrală USB oferă următoarele beneficii:

Performanta ridicata
Utilizarea unor tipuri mixte de memorie și adresare
Consum redus de putere
Zgomot redus
Suport eficient pentru limbi de nivel înalt
Set de comenzi extins
Caracteristici încorporate

Instrucțiunile pentru 8x930Ax pot fi utilizate atât din setul de microcontroler MCS 51, cât și din kitul de microcontroler MCS 251. Această abordare economisește investițiile utilizatorilor în software și obține cea mai mare performanță din aplicații.

Microcontrolerele 8x930 sunt atât de pline de diverse funcții încorporate încât par mai puternice decât doar microcontrolere. Programmable Counter Array (PCA) oferă flexibilitate aplicațiilor care necesită comparare în timp real sau captare de date, comunicare de mare viteză sau modulare a lățimii impulsului. Î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: standby și oprire.

Controlerele din familia 8x930Ax sunt echipate cu 1 Kbyte de memorie și pot fi utilizate în versiuni fără memorie permanentă, sau cu memorie permanentă cu o capacitate de 8 sau 16 Kbytes. 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 sunt localizați în CPU ca fișier de registru. În funcție de combinația utilizată, un fișier de registru poate conține registre de 16 octeți, 16 registre de doi octeți și 10 registre de patru octeți.

Controlerele au 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, utilizați funcția în timp real. Preluarea instrucțiunilor externe poate îmbunătăți performanța utilizând modul pagină, care întoarce datele în octetul înalt al adresei.

Ambele controlere 8x930 sunt echipate cu opt cozi FIFO pentru a suporta dispozitive interne de ieșire: patru cozi de transmisie și patru cozi de primire. Cele patru cozi FIFO de recepție/transmitere 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 clasificată ca configurabilă de utilizator și are o capacitate de până la 1024 de octeți. Cozile 2 și 3 au 16 octeți fiecare și pot fi utilizate pentru a transfera informații în modurile de transfer în rafală, izocron și matrice. În cazul unui controler 8x930Hx, aceste cozi sunt amplificate 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
Din punct de vedere structural, implementarea USB în microcontrolerele 8x930Ax și 8x930Hx poate fi împărțită în patru blocuri: cozi FIFO, bloc de interfață cu dispozitive funcționale, bloc de interfață magistrală serială și transceiver. Controlerul 8x930Hx are blocuri suplimentare pentru controlul funcțiilor concentratorului: un bloc de interfață cu un concentrator și un repetor.

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

Unitatea de interfață magistrală serială implementează protocolul de transmisie USB: secvențează pachetele, realizează generarea și recunoașterea semnalului, generarea și verificarea sumei de control, codificarea/decodarea datelor NRZI, completarea biților, generarea și recunoașterea identificatorului de pachete (PID).

Transceiver-ul integrat pe microcontrolere USB este conform cu interfața 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 de cadru, sfârșit de recepție/transmitere a datelor către dispozitivele funcționale terminale, în cazul unei suspendări globale sau reluării activității. În hub-ul 8x930Hx, blocul de interfață hub este utilizat pentru a gestiona și monitoriza starea conexiunii porturi de ieșire. Repeatorul este responsabil pentru propagarea semnalelor portului USB sus și jos.

Ministerul Învățământului General și Profesional al Federației Ruse Universitatea Tehnică de Stat din Novosibirsk V.N. Veprik, V.A. Afanasiev, A.I. Druzhinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko MICROCONTROLLERE ALE FAMILIEI MCS-51 Manual pentru cursurile „Sisteme cu microprocesoare” și „Proiectarea sistemelor cu microprocesoare” pentru studenții seniori ai Facultății de Automatizare și Inginerie Calculatoare a tuturor formelor de învățământ Novosibirsk 1997 V.N. Veprik, V.A. Afanasiev, A.I. Druzhinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko. Microcontrolere din familia MCS-51: Tutorial. - Novosibirsk. Manualul adus la cunoștință conține o descriere generală a arhitecturii, funcționalității și sistemului de comandă a familiei de microcontrolere cu un singur cip (Embedded Microcontrollers) MCS-51, fabricate de INTEL. A doua parte a manualului descrie controlerul educațional cu microprocesor UMPC-51, oferit studenților ca obiect de studiu la efectuarea unui ciclu de lucru de laborator. Materialul manualului poate fi folosit în proiectarea cursurilor și a diplomelor și poate fi util și pentru inginerii de circuite implicați în dezvoltarea și operarea echipamentelor electronice. Autorii își exprimă profunda recunoștință față de CJSC „New Technologies”, distribuitorul oficial al INTEL, pentru furnizarea materialelor pe baza cărora a fost realizată această lucrare. Tabelul 15, figura 25, lista lit. 12 titluri Recenzători: E.D. Baran, G.G. Matușkin. Lucrarea a fost pregătită la Departamentul de Inginerie Calculatoare de Stat Novosibirsk © Universitatea Tehnică 2 INTRODUCERE. Familia de microcontrolere cu un singur cip pe 8 biți MCS-51 a apărut pe piața mondială la începutul anilor optzeci. Primele modificări ale cristalelor (aproximativ 7) au fost făcute folosind tehnologia n-MOS (HMOS) de înaltă calitate și au fost finalizate funcțional microcalculatoare cu un singur cip din arhitectura Harvard, unul dintre principiile principale ale cărora este separarea logică a programului și a datelor. spații de adrese de memorie. Odată cu dezvoltarea tehnologiei semiconductoare, versiunile ulterioare ale microcircuitelor MCS-51 au început să fie fabricate folosind o tehnologie CMOS (CHMOS) mai avansată și de putere redusă (în modul activ, consumul de cristale a fost crescut la 1050 mA). Sistemul de comandă MCS-51, axat pe implementarea diverșilor algoritmi de control digital, menținând în același timp o oarecare similitudine externă cu sistemul de comandă al familiei anterioare MCS-48, s-a extins calitativ, în el au apărut inovații fundamentale: operațiuni orientate pe biți și câmpuri de biți adresate în memoria de date, ceea ce a făcut posibil să se vorbească despre implementarea unui procesor de biți pe un cip; execuția implementată a comenzilor de înmulțire, împărțire și scădere; lucru îmbunătățit cu stiva; grupul de comenzi de transfer de control a fost extins; Sistemul de comandă a început să pară mai simetric, adică mai puțin dependent de transferurile de date prin baterie. Funcționalitatea perifericelor încorporate a fost, de asemenea, extinsă prin introducerea a: două timer-counter pe 16 biți; port serial duplex hardware; sistem de întrerupere pe două niveluri; patru porturi I/O pe 8 biți. Modificările fundamentale ale structurii ciclului de timp al procesorului au dus la o lucru mai rapid cu memoria externă a programelor și a datelor, precum și la răspunsuri la întreruperile externe și interne. Dimensiunea totală a spațiului de adrese al memoriei externe a programului și al datelor a crescut la 128 KB. Registrele de 16 biți ale contorului de programe (Program Counter) și ale pointerului de date (Data Pointer) au făcut posibilă accesarea directă a întregii game de adrese, ceea ce a oferit dezvoltatorilor posibilitatea de a implementa algoritmi pentru procesarea rapidă a matricelor mari de date. Toate nodurile software-ului accesibile ale microcontrolerului au fost reduse la o zonă specială de memorie de date (Registrul de funcții speciale), ceea ce a făcut posibilă accesarea lor aproape în același mod ca celulele obișnuite ale RAM rezidentă. În modificările ulterioare ale cristalelor, îmbunătățirea a mers pe calea creșterii funcționalității suplimentare, menținând în același timp compatibilitatea completă a software-ului cu versiunile anterioare. Caracteristicile celor mai recente modificări ale microcontrolerelor din familia MCS-51 sunt: ​​design complet static; Versiuni de 3 și 5 volți ale cristalelor; o gamă largă de periferice încorporate; frecvența maximă de ceas - 24 MHz; pentru grupuri individuale de cristale - 33 MHz. În prezent, MCS-51 include aproximativ 60 de versiuni de cristale, în plus, este disponibilă și disponibilă documentație detaliată de proprietate (din păcate, nu a fost tradusă încă în rusă). Pentru a pregăti software-ul pentru microcontrolere MCS-51, în principal ASM-51, se folosesc limbaje C, pentru care există o serie de compilatoare destul de bine dovedite, biblioteci de subrutine standard și emulatori de software produse de diverse companii străine și interne . 3 În ciuda „antichității” suficiente a familiei (mai mult de 15 ani) și a apariției pe piața mondială în ultimii ani a microcontrolerelor cu un singur cip de performanță mai mare și arhitectură îmbunătățită - MCS-51, MCS-251, MCS-96, Controlerele MCS-51 vor fi utilizate pe scară largă pentru o lungă perioadă de timp.se vor folosi în sisteme de control încorporate relativ simple. 4 1. SISTEMUL DE DENUMIREA COMPONENTELOR INTEL ȘI COMPOZIȚIA FUNCȚIONALĂ A FAMILIEI MCS-51 Pentru etichetarea microcipurilor, INTEL folosește un sistem de notare format din mai multe câmpuri: , versiunea auto pentru o gamă extinsă de temperatură (-40 / +125 C) M (Militar) , versiune conform standardelor militare (-55 / +125 C) Q sau C (Comercial), interval de temperatură „comercial” (0 / +70 C ) cu (160 8) - antrenament termic dinamic orar; L sau E (Extins), interval de temperatură „extins” (-40/+85 C) cu antrenament termic dinamic (160 8) ore; T (Extended), interval de temperatură „extins” (-40/+85 C) fără antrenament termic; I (Industrial), executie conform standardelor industriale. Al doilea câmp conține un prefix de una sau două litere care indică tipul de pachet al cipului (Tipul de pachet). Astăzi există câteva zeci de tipuri diferite de pachete de microcircuite, prin urmare, ca exemplu, vom da doar câteva denumiri: A Ceramic Pin Grid Array, (PGA); Pachet C Ceramic Dual In-Line, (CDIP); Pachet K Ceramic Quad Flatpack, (QFP); Pachet KD Plastic Quad Flatpack, Pas fin, Die Down, (PQFP); Pachet KU Plastic Quad Flatpack, pitch fin, die Up, (PQFP); N suport de așchii cu plumb din plastic, (PLCC); Pachet P Plastic Dual In-Line, (PDIP); Modul de memorie SM Single In-Line Leadless, (SIMM); Pachet dublu în linie din plastic U, înmuiere de contracție, (PDIPS); Pachet Z Zigzag In-Line, (ZIP). Al treilea câmp poate conține până la 15 caractere numerice și alfabetice care indică tipul de dispozitiv specific situat pe cip. Al patrulea câmp poate include până la șase caractere numerice și alfabetice, reflectând diverse caracteristici și versiuni ale microcircuitelor. Informații suplimentare despre tipurile de carcase și designul acestora pot fi găsite în cartea: Numărul de comandă de ambalare 240800. În ceea ce privește microcontrolerele descrise din familia MCS-51, primul caracter al celui de-al treilea câmp este în mod tradițional (pentru Intel) egal cu „8”. Al doilea caracter al celui de-al treilea câmp indică de obicei tipul de ROM încorporat: 0 program masca ROM; cristal non-ROM (pentru versiunile ulterioare de cristale); 1 masca de programe ROM (Cod ROM Standard, Firmware); 3 masca ROM (pentru versiunile ulterioare de cristale), (Cod ROM personalizabil); 7 UFPROM sau ROM programabil unic (EPROM sau OTP ROM); 8 EEPROM (Flash - memorie pe cip) În continuare, poate urma o literă, indicând caracteristicile tehnologice ale producției: fără literă tehnologie HMOS, sursă de alimentare 5V; Cu tehnologie CHMOS, alimentare 5V; l Tehnologie CHMOS, alimentare 3V; 5 Următoarele caractere ale celui de-al treilea câmp pentru microcontrolere din familia MCS-51 sunt numerele (de exemplu, 31,32,51,54,58,152) și de la una până la patru litere care reflectă caracteristicile funcționale ale cipurilor (de exemplu, Dimensiunea ROM, specificul unui grup de cipuri, prezența unui sistem de protecție a memoriei programului împotriva accesului neautorizat, posibilitatea de a utiliza un algoritm de programare mai avansat „Quick Pulse” și altele asemenea). În documentația tehnică originală de la Intel, toate microcontrolerele din familia MCS-51 sunt grupate în grupuri („Linia de produse”), fiecare dintre acestea combinând cele mai apropiate versiuni de cristale în ceea ce privește funcționalitatea și parametrii electrici. Deoarece numele microcircuitelor unui grup diferă ușor, atunci pentru a desemna fiecare grup individual, se utilizează un simbolism generalizat, format din marcarea microcircuitelor specifice, prin înlocuirea caracterelor diferite cu „X”. Astfel, se pot distinge următoarele grupuri de microcontrolere. 1. Grupa 8X5X (linia de produse 8051 și linia de produse 8052): 8031AN, 8051AN, 8751H, 8051AHP, 8751H-8, 8751VN, 8032AN, 8052AN, 8752VN. 2. Grupa 8ХС51 (linie de produse 80С51): 80С31ВН, 80С51ВН, 87С51. 3. Grupa 8ХС5Х (8ХС52/54/58 Linie de produse): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Grupa 8XC51FX (linie de produse 8XC51FA/FB/FC): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Grupa 8XL5X (linie de produse 8XL52/54/58): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Grupa 8XL51FX (linie de produse 8XL51FA/FB/FC): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Grupa 8XC51RX (linie de produse 8XC51RA/RB/RC): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Grupa 8XC51GB (linie de produse 8XC51GX): 80C51GB, 83C51GB, 87C51GB. 9. Grupa 8XC152JX (linie de produse 8XC152): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Grupa 8XC51SL (linie de produse 8XC51SL): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51SL-AH51SLC8, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH, 87C51SL-AH 87C51SL-AL. Primul grup de microcontrolere include modelele mai tinere ale familiei, realizate folosind tehnologia n-MOS și nerecomandate pentru utilizare în noile dezvoltări, toate celelalte grupuri sunt realizate folosind tehnologia CMOS modernă. Microcircuitele grupului al doilea, al treilea și al patrulea sunt astăzi reprezentanții clasici ai familiei MCS-51. Al cincilea și al șaselea grup includ versiuni de cristale de 3 volți (Low-Voltage). Cristalele din al șaptelea grup sunt echipate cu RAM extinsă (RAM extinsă), al cărei volum este de 512 octeți. Microcircuitele din grupele a opta, a noua și a zecea sunt microcontrolere specializate în aplicație (Application Specific). Multe dintre aplicațiile de astăzi necesită microcontrolere de control de înaltă performanță care utilizează capabilități avansate de adresare, arhitectură de registru, RAM internă mare și spațiu de stivă și care suportă eficient programarea limbajului de nivel înalt. Aceste microcontrolere includ microcontrolere New Architecture din familiile MCS-5 și MCS-251, pe care Intel le-a lansat în 1995. Compoziția funcțională și caracteristicile cheie ale microcontrolerului MCS-51/MCS-251 sunt prezentate în anexă. 6 2. PRINCIPALELE CARACTERISTICI ALE MODELULUI DE BAZĂ AL FAMILIEI DE MICROCONTROLLERE MCS-51. Modelul de bază al familiei de microcontrolere MCS-51 și baza pentru toate modificările ulterioare este microcontrolerul I-8051. Caracteristicile sale principale sunt următoarele: CPU pe opt biți optimizat pentru funcții de control; generator de ceas încorporat; spațiu de adrese din memoria programului - 64 K; spațiu de adresă memorie de date - 64 K; memorie internă de program - 4 K; memorie internă de date - 128 octeți; caracteristici suplimentare pentru efectuarea de operații de algebră booleană (operații pe biți); 32 de linii I/O bidirecționale și adresabile individual; 2 x temporizatoare/contoare multifuncționale pe 16 biți; transceiver asincron full duplex; sistem de întrerupere vectorială cu două niveluri de prioritate și șase surse de evenimente. Schema bloc a I-8051 este prezentată în Fig. 1, alocarea pinilor microcircuitului este prezentată în Fig. 2. Întreruperi externe Întreruperi 128 octeți T/C 0 contor 4K ROM control RAM T/C 1 intrări CPU BUS 4 I/O Serial OSC control Porturi Port P0 P1 P2 P3 T D R D Adresă/Date Figura 1. Diagrama bloc a I-8051 Întreaga serie MCS-51 are o arhitectură Harvard, adică spații de adrese separate pentru programe și memorie de date. Organizarea memoriei este prezentată în figura 3. Cantitatea de memorie internă (rezidentă) de program (ROM, EPROM sau OTP ROM) aflată pe un cip, în funcție de tipul de microcircuit, poate fi 0 (fără ROM), 4K (cip de bază), 8K, 16K sau 32K. 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 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. Pentru cipurile fără ROM, pinul EA trebuie să fie permanent conectat la Vss. Strobeul de citire ROM extern - PS EN (Program Store Enable) este generat atunci când este accesată o memorie externă de program și este inactivă în timpul unui acces la ROM-ul pe cip. 7 Zona de adresă scăzută a memoriei programului este utilizată de sistemul de întrerupere, arhitectura cipului 8051 oferă suport pentru cinci surse de întrerupere: două întreruperi externe; două întreruperi de la cronometre; întreruperi de la portul serial. P1.0 1 40 Vcc P1.1 2 39 P0. 0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1. 6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) RESET 9 32 P0.7 (AD7) (RD) P3.0 10 31 EA/Vpp (TD) P3.1 11 30 ALE/ PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 ( A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Fig.2. Atribuire pin I-8051 Memorie program (citire) Memorie de date (citire/scriere) FFFFH ROM extern FFFFH memorie externă @DPTR RD Date PSEN WR @PC MOVC EA=0 Memoria internă @date DPTR @PC Extern FFH intern superior 128 SFR MOVX ROM ROM 80H EA=0 0000H EA=1 inferior 128 00H 0000H PSEN Fig.3. Organizarea memoriei familiei MCS-51 8 Figura 4 prezintă o hartă a zonei inferioare a memoriei programului. ROM Memorie program 0033H 002BH Serial Port 0023H Vector Timer1 001BH întrerupe EINT1 0013H Timer0 000BH EINT0 0003H Adresa de start 0000H (Reset) Fig.4. Memoria programului Adresele vectorului de întrerupere sunt situate la intervale de 8 octeți: - 0003H întrerupere externă 0 (Întrerupere externă 0) - ieșire IN T 0 ; - 000BH întrerupere de la cronometrul 0 (prin semnalizare timer overflow - T F 0); - 0013H întrerupere externă 1 (Întrerupere externă 1) - ieşire IN T 1; - 001BH întrerupere de la temporizator 1 (prin indicatorul de depășire a temporizatorului - T F 1); - 0023H întrerupere port serial (Serial Interrupt = Receive Interrupt sau Transmit Interrupt); etc. Memoria de date este separată de memoria programului. În această zonă, 64K RAM externă poate fi abordată. La accesarea memoriei de date externe, CPU-ul microcontrolerului generează semnalele de citire (RD) sau scriere (W R) corespunzătoare, interacțiunea cu memoria internă de date se realizează la nivel de comandă, în timp ce semnalele RD și WR nu sunt generate. Memoria externă a programului și memoria externă de date pot fi combinate prin combinarea semnalelor R D și PS EN într-un mod logic și pentru a produce o memorie externă (program/date). Cei 128 de octeți de jos ai memoriei interne de date (inferioare 128) sunt prezenți pe toate cipurile MCS-51 și sunt prezentate în Figura 5. Primii 32 de octeți sunt 4 bănci (Register Bank) din 8 registre (R7...R0). Registrele R0 și R1 din oricare dintre bănci pot fi utilizate ca registre de adrese indirecte. Cei 16 octeți care urmează băncilor de registre formează un bloc de spațiu adresabil pe biți. Setul de instrucțiuni MCS-51 conține o mare varietate de operații pe biți, iar cei 128 de biți din acest bloc sunt adresabili direct și adresele variază de la 00H la 7FH. Toți octeții din jumătatea inferioară de 128 de octeți a memoriei pot fi adresați fie direct, fie indirect. Jumătatea superioară de 128 de octeți a memoriei RAM (superioară 128) nu este prezentă în cipul I-8051, dar este disponibilă în versiunile RAM de 256 de octeți ale chipurilor. În acest caz, zona „Upper 128” este disponibilă numai cu adresare indirectă. Zona SFR (Special Function Register) este disponibilă numai cu adresare directă. Amplasarea registrelor de funcții speciale în spațiul SFR este prezentată în Fig.6. Acestea includ registre de porturi, cronometre, controale periferice și așa mai departe. 9 7fh 7h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 71h 0fh 0fh 0h 0DH 0CH 0FH 0AH 09H 08H 20H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP după RESET 00H RB0(R7+R0) Fig.5. 128 de octeți de jos de RAM internă. Adresare de biți 8 octeți F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98H 98H SPF1 THBUH90 98H SPF1 THBUH90 98H 98H 98H SPF18 98H DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Fig.6. Amplasarea registrelor cu funcții speciale în spațiul SFR. Pentru 16 adrese din spațiul SFR, este posibilă adresarea atât pe octeți, cât și pe biți. Pentru registrele adresabile pe biți, adresa hexazecimală se termină cu „0H” sau „8H”. Adresele de biți din această zonă au valori de la 80H la FFH. Întreaga serie de cristale din familia MCS-51 are un set SFR de bază, ca și în chipul I-8051, situat la aceleași adrese. Cu toate acestea, la cristale, care reprezintă o dezvoltare ulterioară a familiei în regiunea SFR, se adaugă noi registre pentru a extinde 10.

PLAN DE PRELEGERE

1. Introducere

2. Instructiuni aritmetice si logice

3. Comenzi de transfer de date

4. Operații booleene

5. Instructiuni de saritura

1. Introducere

Sistem de comandă MCS-51 acceptă un singur set de instrucțiuni care este conceput pentru a executa algoritmi pe 8 biți pentru controlul actuatoarelor. Este posibil să se utilizeze metode rapide de adresare a RAM-ului intern, efectuând 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 instructiuni MCS-51 acceptă următoarele moduri de adresare. Adresare directă: Operandul este specificat de o adresă de 8 biți în 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ă registrului care conține adresa operandului. Acest tip de adresare 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, nu există un câmp de adresă corespunzător în comandă. Operații folosind registre speciale: unele instrucțiuni folosesc registre individuale (de exemplu, operații cu acumulatori, DPTR, etc.). În acest caz, adresa operandului nu este specificată deloc în instrucțiune. Este predeterminat de opcode.

Constante imediate : constanta poate fi direct în comanda din spatele opcode-ului.

Adresarea indexului : Adresarea indexată 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 contor de programe) indică adresa de bază a tabelului dorit, iar acumulatorul indică punctul de intrare la acesta.

Set de comenziare 42 de mnemonice de comandă pentru a specifica 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 specifică metodele de adresare și tipurile de date. Diferite tipuri de date sau moduri de adresare sunt determinate de operanzii setati, nu de modificari ale notatiei mnemonice.

Sistemul de comandă poate fi împărțit condiționat în cinci grupe: comenzi aritmetice; comenzi logice; comenzi de transfer de date; instrucțiuni procesor de biți; comenzi de ramificare și transfer. Denumirile ș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 locație internă de date de 8 biți adresabilă direct, care poate fi o locație RAM de date internă (0-127) sau un registru de funcții speciale SFR (128-255)

Locație RAM internă de date de 8 biți adresabilă indirect

8 biți imediat date incluse în codul operațiunii (COP)

dateH

MSB-uri (15-8) de date imediate pe 16 biți

dateL

Biți scăzuti (7-0) ai datelor imediate pe 16 biți

Adresă de destinație pe 11 biți

addrL

Biți cei mai puțin semnificativi ai adresei de destinație

Octet offset semnat pe 8 biți

Bit adresabil direct a cărui adresă conține CPC-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

Descărcarea M elementul X


+

*
ȘI
SAU
XOR
/X

Operațiuni:
adaosuri
scădere
multiplicare
Divizia
înmulțire logică (operație ȘI)
adăugare logică (operație SAU)
adiție modulo 2 (XOR)
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, 111 astfel de combinații sunt posibile în sistemul de comandă.

2. Instructiuni aritmetice si logice

Cum să exemplu comanda 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 salvaț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 în registru R 0 (adresare indirectă) și stochează rezultatul în registrul A;

ADAUGĂ A,R7- adăugați la conținutul registrului A 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 acumulatorul.

Instruire MUL AB efectuează o înmulțire (înmulțire) a datelor din acumulator cu datele din registrul B, plasând produsul în registrele A (jumătatea inferioară) și B (jumătatea superioară).

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

Instruire DA A conceput pentru operații aritmetice binar-zecimal (operații aritmetice pe numere reprezentate în cod binar-zecimal). Nu convertește binar în zecimală binară, dar oferă doar rezultatul corect atunci când adăugați două numere BCD.

Exemplu comanda logică: operația logică ȘI 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- multiplicarea logica a continutului registrului A cu continutul registrului R 6 și stocați rezultatul în registrul A;

ANL A,#53 - înmulțirea logică a conținutului registrului A cu un număr a cărui adresă a celulei de stocare este 53 16 și salvați rezultatul în registrul A.

Toate operațiunile logice asupra conținutului acumulatorului sunt efectuate într-un ciclu de mașină, restul - în două. Operațiile booleene 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ă utilizarea bateriei.

Operațiile de rotire 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 efectuează schimbul tetradelor junior și senior în acumulator.

3. Comenzi de transfer de date

Comanda MOV dest,src permite transferul datelor între celulele RAM interne sau zona 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 rezidentă a datelor și crește în sus. Instruire APĂSAȚI mai întâi incrementează valoarea din registrul pointerului stivei SP, apoi împinge octeți de date în stivă. echipe APĂSAȚIȘi POP sunt utilizate numai în modul de adresare directă (când se scrie sau se restaurează un octet), dar stiva este întotdeauna disponibilă atunci când se adresează indirect printr-un registru SP. Astfel, stiva poate folosi, de asemenea, primii 128 de octeți de memorie de date. Aceleași considerații exclud utilizarea instrucțiunilor stivei pentru adresarea registrelor. SFR.

Instrucțiunile de transfer de date includ o operație 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 accesarea memoriei de date externe.

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

Numai adresarea indirectă este utilizată pentru a accesa memoria externă de date. În cazul adreselor pe un singur octet, se folosesc registre R0 sau R1 banca de registre curentă, iar pentru cele pe 16 biți, registrul pointerului de date DPTR. Cu orice metodă de accesare a memoriei de date externe, bateria joacă rolul de sursă sau receptor de informații.

Pentru a accesa tabelele aflate în memoria programului, se folosesc următoarele comenzi:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

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

4. Operații booleene

Microcircuite MCS-51 conţin 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ă sărituri condiționate, transferuri, resetări, inversări și operații AND și SAU. Toți biții specificați sunt disponibili în modul de adresare directă.

Purtați bit CFîn registrul de funcții speciale „cuvânt de stare program PSW' este folosit ca un acumulator de procesor boolean pe un bit.

5. Instructiuni de saritura

Adresele operațiunilor de salt sunt notate în limbaj de asamblare printr-o etichetă sau 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 salturi 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 PSW» nu există flag zero, deci instrucțiunile JZȘi JNZ verificați condiția „egal cu zero” ca testând datele din acumulator.

Există trei tipuri de instrucțiuni de ramuri necondiționate: SJMP, LJMPȘi AJMP– adrese de destinație care diferă ca format. Instruire SJMP codifică adresa ca un offset relativ și ocupă doi octeți. Distanța de salt este limitată la un interval de minus 128 până 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. Comanda are trei octeți. Adresa de destinație poate fi localizată oriunde în memoria programului.

Comanda 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, saltul se poate face în interiorul blocului de 2K octeți, care conține instrucțiunea care urmează instrucțiunii AJMP.

Există două tipuri de instrucțiuni de apel de subprogram: LCALLȘi UN APEL. Instruire LCALL folosește adresa de 16 biți a subrutinei apelate. În acest caz, subrutina poate fi localizată oriunde în memoria programului. Instruire UN APEL folosește adresa subrutinei de 11 biți. În acest caz, subrutina apelată trebuie să fie localizată în același 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, permițându-vă să reveniți la instrucțiune în urma comenzii APEL. Această instrucțiune scoate adresa de retur din stivă și o încarcă în contorul de programe. PC . Instruire RETI folosit pentru a reveni de la rutinele de întrerupere. Singura diferenta RETI din RET este asta RETI informează sistemul că întreruperea procesării s-a încheiat. Dacă în momentul executării RETI nu exista alte intreruperi, este identic RET.

Instruire DJNZ conceput pentru controlul ciclului. Pentru a rula o buclă N odată ce trebuie să încărcați în contor octeți cu valoarea N și închideți corpul buclei cu comanda DJNZ, indicând începutul ciclului.

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

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

Top articole similare