Microcontrolerele din familia mcs 51 au o arhitectură de tip. Microcontrolere MCS–51. Diagrama bloc, ALU, memorie de date. Modul citire port

22.04.2021 Interesant

Intel este fondatorul arhitecturii familiei MCS-51, care își ia numele de la primul reprezentant al acestei familii - microcontrolerul 8051, lansat în 1980 pe baza tehnologiei n-MOS. Set norocos dispozitiv periferic, capacitatea de a selecta în mod flexibil memoria de program externă sau internă și un preț accesibil au asigurat succesul acestui microcontroler pe piață. Din punct de vedere al tehnologiei, microcontrolerul 8051 a fost un produs foarte complex pentru vremea sa - 128 de mii de tranzistori au fost utilizați în cristal, ceea ce era de 4 ori numărul de tranzistori din microprocesorul 8086 pe 16 biți. Acest microcontroler rămâne nucleul familia MCS-51 până astăzi.

Elementele principale ale arhitecturii de bază a familiei (arhitectura microcontrollerului 8051) sunt:

ALU pe 8 biți;

4 banci de registre, cate 8 in fiecare;

Memorie de program internă (rezidentă) 4 KB, tip ROM sau EPROM (8751);

Memorie de date internă (rezidentă) 128 octeți;

21 registre cu funcții speciale;

procesor boolean;

Două temporizatoare/contoare pe 16 biți;

Controlor port serial(UART);

Controler de întrerupere cu două niveluri de prioritate;

Patru porturi I/O pe 8 biți, dintre care două sunt utilizate ca magistrală de adrese/date pentru accesarea programelor externe și a memoriei de date;

Generator de ceas încorporat.

Apoi a fost lansat microcontrolerul 8052, care includea o cantitate crescută de memorie rezidentă pentru programe și date, un al treilea temporizator și un controler de întrerupere extins corespunzător.

Următorul pas fundamental în dezvoltarea MCS-51 a fost transferul tehnologiei de fabricație către CMOS (modificare 8xC51). Acest lucru a făcut posibilă implementarea modurilor Idl (idle) și Power Down (consum redus), care oferă o reducere bruscă a consumului de energie al cristalului și au deschis calea pentru utilizarea microcontrolerului în aplicații dependente de putere, de exemplu, în dispozitive autonome alimentate cu baterie.

Iar ultima etapă importantă în dezvoltarea lui 8051 MK de către Intel a fost lansarea microcontrolerelor 8xC51FA/FB/FC și 8xC51RA/RB/RC, care pentru concizie sunt adesea denumite 8xC51Fx și 8xC51Rx. Principala trăsătură distinctivă a acestui grup de cristale este prezența unui cronometru/contor specializat (SCA). În plus, microcontrolerele 8xC51Rx conțin în plus un timer watchdog (WDT). Să ne uităm la arhitectura și funcționalitatea PCA mai detaliat.

RSA include:

temporizator/contor pe 16 biți;

Cinci module de eșantionare și comparare pe 16 biți, fiecare conectat la propria linie de porturi I/O pentru microcontroler.

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 unui semnal extern;

Eșantionarea pe 16 biți a valorii temporizatorului pe marginea negativă a unui semnal extern;

Eșantionarea pe 16 biți a valorii temporizatorului pe orice margine a unui semnal extern;

Temporizator programabil pe 16 biți;

Dispozitiv de ieșire de mare viteză pe 16 biți;

PWM pe 8 biți.

Toate funcțiile de mai sus sunt efectuate în PCA la nivel hardware și nu încarcă procesorul central. Acest lucru vă permite să creșteți debitul general, să îmbunătățiți acuratețea măsurătorilor și al procesării semnalului și să reduceți timpul de răspuns al microcontrolerului la evenimente externe, ceea ce este deosebit de important pentru sistemele în timp real. PCA implementat în 8xC51Fx (8xC51Rx) s-a dovedit a fi așa

Desemnare

Max. frecvență (MHz)

ROM/EPROM (octet)

contoare

A fost norocos că arhitectura acestor microcontrolere a devenit un standard al industriei, iar PCA în sine a fost reprodus de multe ori în diferite modificări ale MK 8051.

Unele caracteristici ale unui număr de microcontrolere MCS-51 fabricate de Intel sunt prezentate în Tabelul 1.1.

Inițial, cele mai mari blocaje ale arhitecturii MCS-51 au fost ALU bazată pe baterie de 8 biți și execuția instrucțiunilor relativ lentă (cele mai rapide instrucțiuni necesită 12 procesoare pentru a fi executate).

Tabelul 1.1

I/O

ADC, intrări x biți

periferie,

particularități

puterea U (ÎN)

Opțiune de joasă tensiune

4 nivele IRQ, ceas out

4 nivele IRQ, ceas out

Versiunea de joasă tensiune 8xC51Fx

4 nivele IRQ, ceas out

4 nivele IRQ, ceas out

4 nivele IRQ, ceas out

zgomote frecvența ceasului(frecvența de sincronizare MK)). Acest lucru a limitat utilizarea microcontrolerelor din familie în aplicații care necesită viteză crescută și calcule complexe (16 și 32 de biți). Problema modernizării fundamentale a arhitecturii MCS-51 a devenit urgentă. Problema modernizării a fost complicată de faptul că la începutul anilor 90 deja au fost create o mulțime de dezvoltări în domeniul software-ului și hardware familia MCS-51 și, prin urmare, una dintre sarcinile principale ale proiectării noii arhitecturi a fost implementarea compatibilității hardware și software cu dezvoltările bazate pe MCS-51.

Pentru a rezolva această problemă, a fost creat un grup comun de specialiști de la Intel și Philips, dar ulterior căile acestor două companii s-au divergent. Ca urmare, în 1995, au apărut două familii semnificativ diferite: MCS-251/151 de la Intel și MCS-51XA de la Philips (vezi subsecțiunea 1.2).

Principalele caracteristici ale arhitecturii MCS-251:

Spațiu de adresă liniar de 24 de biți, adresând până la 16 MB de memorie;

Arhitectură de registre care permite accesarea registrelor ca octeți, cuvinte și cuvinte duble;

Modul de adresare a paginii pentru a accelera preluarea instrucțiunilor din memoria programului extern;

coada de instrucțiuni;

Set de instrucțiuni extins, inclusiv operații aritmetice și logice pe 16 biți;

Spațiu de adrese stivă extins (până la 64 KB);

Performant cel mai mult comanda rapidă in 2 batai.

Setul de instrucțiuni MCS-251 include două seturi de instrucțiuni - primul set este o copie a setului de instrucțiuni MCS-51, iar al doilea constă din instrucțiuni extinse care profită de arhitectura MCS-251. Înainte de a utiliza microcontrolerul, acesta trebuie configurat, adică folosind programatorul, „ardeți” biții de configurare care determină ce set de instrucțiuni va deveni activ după pornirea alimentării. Dacă instalați primul set de instrucțiuni, atunci în acest caz familia MCS-251 va fi compatibilă cu MCS-51 la nivel de cod binar. Acest mod se numește modul binar. Dacă instalați inițial un set de instrucțiuni extinse (Mod sursă), atunci programele scrise pentru MCS-51 vor necesita recompilare folosind instrumente încrucișate pentru MCS-251. Modul sursă vă permite să utilizați arhitectura MCS-251 cu eficiență maximă și să obțineți cea mai înaltă performanță.

Pentru utilizatorii concentrați pe utilizarea microcontrolerelor MCS-251 ca înlocuitor mecanic pentru MCS-51, Intel produce microcontrolere MCS-151 deja programate în modul Binary Mode.

Câteva caracteristici ale unui număr de microcontrolere MCS-251/151 sunt prezentate în Tabelul 1.1.

În prezent, Intel, care vizează piața procesoarelor Pentium, reduce producția de cristale MCS-51. În general, pentru un anumit dezvoltator, acest lucru poate trece neobservat, cu excepția cazului în care folosește microcontrolere 8xC51GB și 80C152Jx, care nu au analogii lor exacti printre produsele altor companii. În ceea ce privește toate celelalte microcontrolere din familia MCS-51, toate au fost replicate de multe ori de alte companii.

Baza microcontrolerului (vezi Fig. 1) este o unitate aritmetică logică (ALU) pe 8 biți. Memoria MK are arhitectura Harvard, i.e. logic împărțit în: memorie de program - PP (internă sau externă), adresată de un contor de program pe 16 biți (SC) și memorie de date - internă (Resident Data Memory - 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ă în ROM (numai citire), iar memoria de date este implementată în RAM (datele pot fi scrise și citite).

Recepție și livrare semnale externe realizat prin 4 porturi de opt biți P0..P3. La contact memorie externa programe (VPP) sau memorie de date (DVD), 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 comanda 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ă (RC) de 8 biți primește codul comenzii care se execută; acest cod este descifrat de circuitul de control, care generează semnale de control (vezi Fig. 1).

Accesarea registrelor de funcții speciale - RSF (SFR - acestea sunt încercuite în Fig. 1 linie punctata) este posibilă numai folosind adresarea directă de octeți în intervalul de adrese de la 128 (80h) și mai mult.


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


Tabelul 1 – Atribuirea pinii 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 în pointerul stivei (SP);

10..17

Port I/O cvasi-bidirecțional pe 8 biți; după înregistrarea în categoria corespunzătoare „1” – îndeplinește 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 Pini 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 de funcționare cu memorie externă (VPP sau VPD);
29 PME Strobe pentru citirea Memoriei Externe de Program, 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 transferă MK la eșantionarea comenzilor 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 folosind 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

Schimbarea băncilor în lei simplifică execuția subrutinelor și gestionarea întreruperilor, deoarece nu este nevoie să trimiteți conținutul RON-urilor din programul principal la stivă atunci când apelați o subrutină (este suficient să mergeți la o altă bancă activă de RON din subrutină).

Accesul la RPD este posibil folosind adresarea indirectă sau directă de octeți (adresarea directă de octeți vă permite să accesați doar primii 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 – Blocul de registre cu funcții speciale (s f r)

Cod mnemo Nume
0E0h * ACC Baterie
0F0h *B Înregistrați expanderul acumulatorului
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 de transceiver serial
98h * SCON Controlul portului serial/Registrul de stare
89h TMOD Înregistrare mod temporizator/contor
88h * TCON Control cronometre/contoare/registru stare
8Dh TH1 Temporizator 1 (octet mare)
8Bh TL1 Temporizator 1 (octet scăzut)
8Ch 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 consumului de energie

2. MODEL DE SOFTWARE MCS–51


MCS–51 TIPURI DE COMANDĂ

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

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

3. METODE (CĂI) DE ADRESAREA MCS–51

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

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

3 ADRESARE INDIRECTA (indicata prin semnul – @) – operandul este localizat in Memoria de Date (RDM 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) – este utilizat pentru accesarea celulelor RPD (adresele 00h...7Fh) și a registrelor de funcții speciale SFR (adresele 80h...0FFh);

ADRESAREA 5 BIȚI DIRECT – (bit) – este utilizată pentru a accesa 128 de biți adresabili separat aflați în celulele RPD la adresele 20H...2FH și la biții adresabili separat ai registrelor cu funcții speciale (vezi Tabelul 3 și modelul programului);

6 ADRESARE INDIRECTA INDEX (indicată prin semnul – @) – simplifică vizualizarea tabelelor în Memoria Programului, adresa PP este determinată de suma registrului de bază (PC sau DPTR) și registrului index (Acumulator);

7 ADRESARE IMPLICITĂ (INcorporată) – codul de comandă conține o referință implicită (implicit) la unul dintre operanzi (cel mai adesea la Acumulator).

4. FORMAT DE CUVINTE DE STARE PROCESOR (PSW).

C – flag carry (CARY) sau împrumut, îndeplinește și funcțiile unui „Acumulator boolean” în comenzile care operează cu biți;

AC – flag de transport auxiliar (suplimentar) – este setat la „1” dacă în comanda de adăugare (ADD, ADDC) a existat un transfer de la tetradă joasă la tetradă înaltă (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 depășire aritmetică; valoarea sa este determinată de funcționarea „SAU exclusiv” a semnalelor de transfer de intrare și de ieșire ale celui mai semnificativ bit al ALU; o singură valoare a acestui indicator indică faptul că rezultatul unei operații aritmetice în codul de complement a doi este în afara limitelor permise: –128…+127; când se efectuează o operație de împărțire, steag-ul OV este resetat, iar în cazul împărțirii la zero, acesta este setat; la înmulțire, indicatorul OV este setat dacă rezultatul este mai mare de 255 (0FFH);

PSW bit – Rezervă, conține un declanșator, accesibil prin scriere sau citire;

P – flag de paritate – este adăugarea numărului de biți unitar din acumulator la par; generat de un circuit combinațional (software accesibil doar prin citire).

Microcontrolerele MCS-51 nu au marcajul „Z”. Dar în comenzile de salt condiționat (JZ, JNZ), conținutul curent (zero sau non-zero) al acumulatorului este verificat de circuitul combinațional.

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

Majoritatea transferurilor se pot face și printr-un octet direct (dir). Există chiar și transferuri dir-dir (vezi Figura 3).

Transferurile lipsă de la RON la RON pot fi implementate ca transferuri de la RON către un director de octeți adresat direct (ținând cont de faptul că RON-urile sunt localizate în zona inițială a memoriei de date rezidente, ale cărei celule pot fi adresate ca dir).

Instrucțiunile de schimb XCH permit transferul octeților fără a distruge ambii operanzi.

Instrucțiunile aritmetice sunt executate numai în Acumulator. Prin urmare, primul operand trebuie mai întâi plasat în Acumulator și apoi adăugați sau scădeți 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 comandă de scădere fără împrumut, trebuie mai întâi să lansați comanda C flag clear (CLRC).

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

Rezultatul executării comenzii de împărțire a operanzilor pe un singur 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. Comanda Decimal Accumulator Adjustment (DAA) vă ajută să adăugați numere zecimale codificate binar (BCD) fără a le converti în format hexazecimal (format hex). Operanzii sursă trebuie să fie în format BCD, adică. Fiecare tetradă de un octet conține 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 joase a acumulatorului este mai mare de 9 sau este setat indicatorul de transport auxiliar (AC = 1), atunci se adaugă 6 la conținutul acumulatorului (adică cele șase cifre lipsă în format hex);

· dacă după aceasta conținutul celei mai înalte tetrade a acumulatorului este mai mare de 9 sau este setat indicatorul C, atunci numărul 6 este adăugat la cea mai înaltă tetradă a acumulatorului.

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

Comenzi logice:

„ȘI” logic - ANL,

„SAU” logic – ORL,

Comenzile XOR logice - XRL - sunt executate în Acumulator (la fel ca și cele aritmetice), dar este posibil să se execute comenzi logice și în octetul direct (dir). În acest caz, al doilea operand poate fi:

În baterie sau

Operandul imediat al unei comenzi.

Comenzile de rotație (RR A, RL A) și comenzile de rotație prin intermediul steagului CARY (RRC A, RLC A) schimbă ciclic conținutul acumulatorului cu 1 bit. Transferurile operanzilor de biți sunt efectuate numai prin indicatorul C.

Arhitectura familiei MCS-51 este determinată în mare măsură de scopul său - construcția compactȘi ieftin dispozitive digitale. Toate funcțiile microcomputerului sunt implementate folosind un singur microcircuit. Familia MCS-51 include întreaga linie microcircuite de la cele mai simple microcontrolere la cele destul de complexe. Microcontrolerele din familia MCS-51 vă permit să efectuați ambele sarcini de control pentru diferite dispozitive și să implementați componente individuale ale unui 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 pentru dispozitivul dezvoltat diferite companii- producători (cum ar fi Intel, Dallas, Atmel, Philips etc.) 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 sincronizare și control este proiectată pentru a genera semnale de sincronizare și control care asigură coordonarea colaborare OEVM blochează î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 control consumul de energie electrică,
  • decodor de comandă, logica de control al computerului.

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

PLANUL DE PRELEGERE

1. Introducere

2. Instructiuni aritmetice si logice

3. Comenzi de transfer de date

4. Operații booleene

5. Instrucțiuni de săritură

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 de utilizat metode rapide adresarea RAM internă, 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ă memorie interna date si registre 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 grupe: comenzi 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, de asemenea, primii 128 de octeți ai memoriei 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 săritură

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ă condiția de tranziție este îndeplinită. 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.

Sistemul de comandă OMEVM oferă capabilități excelente de procesare a datelor, asigură implementarea operațiilor logice și aritmetice, precum și control în timp real. Procesarea datelor pe biți, tetradă (4 biți), bytewise (8 biți) și pe 16 biți este implementată. LSI din familia MCS-51 - OMEVM pe 8 biți: ROM, RAM, registre speciale, ALU și cauciucuri exterioare au o organizare de octeți. Datele pe doi octeți sunt utilizate numai de registrul pointerului (DPTR) și de contorul de programe (PC). Trebuie remarcat faptul că registrul indicator de date poate fi utilizat ca un registru de doi octeți DPTR sau ca două registre de un octet cu scop special DPH și DPL. Contorul programului este întotdeauna folosit ca un registru de doi octeți. Setul de comenzi OMEVM are 42 de mnemonice de comandă pentru a specifica cele 33 de funcții ale acestui sistem. Sintaxa majorității comenzilor limbajului de asamblare constă dintr-un mnemonic al funcției, urmat de operanzi care indică metodele de adresare și tipurile de date. Diferite tipuri de date sau moduri de adresare sunt determinate de operanzii setați, nu de modificările mnemonice. Sistemul de comandă poate fi împărțit în cinci grupuri:
  • Comenzi aritmetice;
  • comenzi logice;
  • comenzi de transfer de date;
  • comenzi ale procesorului de biți;
  • Comenzi de transfer de ramificare și control.
Există următoarele tipuri de adresare a operanzilor sursă:
  • Înregistrați adresare
  • Adresare directă
  • Registrul-adresare indirectă
  • Adresare directă
  • Adresarea indirectă a registrelor pe baza sumei registrelor de bază și index
Instructiuni aritmetice Setul de instructiuni contine urmatoarele operatii aritmetice: adunare, adunare cu indicator de transport, scadere cu imprumut, crestere, decrementare, comparare, corectare zecimala, inmultire si impartire. ALU efectuează operații pe numere întregi fără semn. În operațiile cu doi operanzi: adăugare (ADD), adăugare cu carry (ADDC) și scădere cu împrumut (SUBB), acumulatorul este primul operand și primește rezultatul operației. Al doilea operand poate fi un registru de lucru al băncii de registre de lucru selectate, un registru intern al memoriei de date cu adresare directă și indirectă a registrului sau un octet de date direct. Aceste operațiuni afectează semnalizatoarele de underflow, carry, carry intermediar și paritate în cuvântul de stare procesor (PSW). Utilizarea bitului de transport vă permite să creșteți foarte mult precizia operațiilor de adunare (ADDC) și scădere (SUBB). Efectuarea operațiunilor de adunare și scădere sensibile la semn poate fi efectuată folosind controlul programului flag-ul de depășire (OV) al registrului PSW. Indicatorul de transport intermediar (AC) asigură că operațiile aritmetice sunt efectuate în cod zecimal binar. Operațiile de creștere și decrementare nu afectează steaguri. Operațiunile de comparare nu afectează nici operandul de destinație, nici operandul sursă, dar afectează indicatorii de transport. Există trei operații aritmetice care se efectuează numai pe acumulator: două comenzi pentru verificarea conținutului acumulatorului A (JZ, JNZ) și o comandă de corecție zecimală pentru adăugarea codurilor BCD. În timpul unei operații de înmulțire, conținutul acumulatorului A este înmulțit cu conținutul registrului B și rezultatul este plasat astfel: octetul mic în registrul B, octetul mare în registrul A. În cazul unei operații de împărțire, întregul din împărțire este plasat în acumulatorul A, restul din divizare este plasat în registrul B. Comenzi logice cu variabile octet Sistemul de comandă vă permite să implementați operații logice: „ȘI”, „SAU”, „SAU EXCLUSIV” pe acumulator registrul (A) și octetul sursă. Al doilea operand (octetul sursă) poate fi un registru de lucru în banca de registru de lucru selectată; un registru RAM intern adresat folosind adresarea indirectă a registrului; celule RAM interne direct adresabile și registre speciale; valoare directă. Operațiile logice specificate pot fi implementate pe orice registru direct adresabil al RAM internă sau un registru cu scop special folosind conținutul acumulatorului A sau date directe ca al doilea operand. Există operații logice care se efectuează numai pe baterie: resetarea și inversarea tuturor celor opt biți ai A; deplasare ciclică la stânga și la dreapta; schimbare ciclică la stânga și la dreapta, ținând cont de steagul de transport; schimbul de locuri ale tetradelor (nibles) senior și junior în interiorul bateriei. Comenzi de transfer de date Tabelele de simboluri (coduri) programate în ROM pot fi selectate folosind comenzi de transfer de date folosind adresare indirectă. Un octet constant poate fi transferat la acumulator dintr-o locație de memorie de program adresată de suma unui registru de bază (PC sau DPTR) și a unui registru index (conținutul lui A). Aceasta oferă, de exemplu, un mijloc convenabil de implementare a unui algoritm pentru conversia codului ASCII în cod cu șapte segmente. Orice celulă dintr-un bloc de 256 de octeți de memorie RAM externă poate fi selectată utilizând adresarea indirectă a registrului prin registrele pointerului R0 sau R1 (bancul de registre de lucru selectat). O locație în spațiul de adresă RAM extern de 64 KB poate fi, de asemenea, selectată folosind adresarea indirectă a registrului prin registrul pointerului de date DPTR. Comenzile de transfer între registrele direct adresabile vă permit să scrieți o valoare dintr-un port într-o celulă RAM internă fără a utiliza registre de lucru sau un acumulator. Într-un procesor logic, orice bit înainte poate fi plasat într-un bit de transport și invers. Conținutul acumulatorului poate fi schimbat cu conținutul registrelor de lucru (al băncii selectate) și cu conținutul celulelor RAM interne adresate folosind adresarea indirectă a registrului, precum și cu conținutul celulelor RAM interne direct adresabile și cu conținutul a registrelor cu destinaţie specială. Cel mai puțin semnificativ (biții 3-0) a conținutului acumulatorului poate fi schimbat cu valoarea scăzută a conținutului celulelor RAM interne selectate folosind adresarea indirectă a registrului. Instrucțiuni pentru procesorul de biți Procesorul de biți face parte din familia MCS51 de arhitectură de microcontrolere și poate fi considerat un procesor de biți independent. Procesorul de biți execută un set de instrucțiuni, are propria RAM adresabilă pe biți și propria sa intrare-ieșire. Comenzile care operează pe biți oferă adresare directă a 128 de biți (0-127) în șaisprezece celule RAM interne (celule cu adrese 20H-2FH) și adresare directă pe biți a registrelor cu scop special, ale căror adrese sunt multiple de opt. Fiecare dintre biții adresabili individual poate fi setat la „1”, resetat la „0”, inversat, verificat. Tranzițiile pot fi implementate: dacă bitul este setat; dacă bitul nu este setat; săriți dacă bitul este setat, ștergând acel bit; bitul poate fi rescris în (din) bitul de transport. Între orice bit adresabil direct și indicatorul de transport, pot fi efectuate operațiuni logice „ȘI” și „SAU”, unde rezultatul este introdus în bitul de flag de transport. Instrucțiunile de procesare a biților asigură implementarea funcțiilor logice combinatorii complexe și optimizarea programelor utilizator. Comenzi de ramificare și transfer de control Spațiul de adrese al memoriei programului nu are o organizare a paginii, ceea ce vă permite să mutați liber fragmente de program în spațiul de adresă fără a necesita realocarea (modificarea) numărului paginii. Mutarea fragmentelor de program individuale face posibil ca diferite programe să utilizeze modulele de program mutate. Instrucțiunile de salt pe 16 biți și de apelare subrutine vă permit să săriți în orice punct din spațiul de adresă al memoriei programului de 64 KB. Instrucțiunile de salt de 11 biți și de apel de subrutine oferă salturi în cadrul unui modul de program de 2 KB. Sistemul de comandă conține comenzi pentru sărituri condiționate și necondiționate în raport cu adresa de pornire a următorului program în intervalul de la (RS)-128 la (ZS)+127. Comenzile pentru verificarea biților individuali vă permit să efectuați tranziții condiționate la starea „0” sau „1” a biților adresabili direct. Comenzile pentru verificarea conținutului acumulatorului (zero/non-zero) permit sărituri condiționate prin conținutul lui A. Salturile indirecte de registru în sistemul de instrucțiuni asigură ramificare în raport cu registrul de bază (conținutul DPTR sau PC) cu un offset localizat în acumulatorul A. Adresarea registrului Adresarea registrului este utilizată pentru a accesa cele opt registre de lucru ale băncii de registre de lucru selectate (acești regiștri pot fi selectați folosind adresarea directă și adresarea indirectă a registrului ca celule RAM de date interne normale). Adresarea de registru este utilizată pentru a accesa registrele A, B, AB (registru dublu), DPTR și indicatorul de transport C. Utilizarea adresei de registru vă permite să obțineți echivalentul pe doi octeți al instrucțiunilor de adresare directă pe trei octeți. Adresare directă Adresarea directă pe octeți este utilizată pentru a accesa locațiile din memoria internă de date (RAM) (0-127) și registrele speciale. Adresarea directă a biților este utilizată pentru a accesa cei 128 de biți adresabili individual, localizați în locațiile de adrese 20H-2FH și biții adresabili individual ai registrelor cu scop special. Cel mai semnificativ bit al octetului codului de adresă directă selectează unul dintre cele două grupuri de biți adresabili separat, localizați în RAM sau în registrele speciale. Biții adresabili direct cu adrese 0-127 (00H-7FH) sunt localizați într-un bloc de 16 celule RAM interne cu adrese 20H-2FH. Celulele specificate sunt numerotate secvenţial de la bitul cel mai puţin semnificativ al octetului mic până la bitul cel mai semnificativ al octetului înalt. Biții adresabili separat din registrele cu destinație specială sunt numerotați după cum urmează: cei cinci biți cei mai importanți ai adresei coincid cu cei cinci biți cei mai importanți ai adresei registrului în sine, iar cei trei biți mai puțin semnificativi determină locația unui bit individual în Registrul. Adresarea indirectă de registru Adresarea indirectă de registru este utilizată pentru a accesa celulele RAM de date interne. Registrele R10 și R1 ale băncii de registre selectate sunt utilizate ca registre de indicatori. Instrucțiunile PUSH și POP utilizează conținutul indicatorului de stivă (SP). Adresarea indirectă Register este, de asemenea, utilizată pentru a accesa memoria de date externă. În acest caz, folosind registrele pointerului R0 și R1 (bancul selectat de registre de lucru), o celulă este selectată dintr-un bloc de 256 de octeți de memorie externă de date. Numărul blocului este presetat de conținutul portului P2. Indicatorul de date pe 16 biți (DPTR) poate fi utilizat pentru a accesa orice locație din spațiul de adrese de memorie externă de date de până la 64 KB. Adresare directă Adresarea directă vă permite să selectați constantele specificate în mod explicit în comandă din spațiul de adrese din memoria programului. Adresarea indirectă a registrului prin suma registrelor de bază și index Adresarea indirectă a registrului prin suma registrului de bază plus registrul index (conținutul acumulatorului A) simplifică vizualizarea tabelelor conectate în memoria programului. Orice octet din tabel poate fi selectat la adresa determinată de suma conținutului DPTR sau PC și conținutul lui A. Tabel de notații și simboluri utilizate în sistemul de instrucțiuni
Denumire, simbol Scop
A Baterie
Rn Registrele băncii de registre selectate în prezent
r Numărul registrului încărcat specificat în comandă
direct Adresă de celulă internă de date de 8 biți direct adresabilă, care poate fi celulă RAM de date internă (0-127) sau SFR (128-255)
@Rr Celulă RAM de date internă de 8 biți adresabilă indirect
date8 Datele imediate pe 8 biți ajung la COP
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
adresa11 Adresă de destinație pe 11 biți
addrL Biți cei mai puțin semnificativi din adresa de destinație
disp8 Octet offset de 8 biți cu semnul m
pic Un bit adresabil direct a cărui adresă conține COP-ul situat în memoria internă de date RAM sau SFR
a15, a14...a0 Biți de adresă de destinație
(X) Conținutul elementului X
((X)) Conținut la adresa stocată în elementul X
(X)[M] Bit M al elementului X
+ - * / ȘI SAU XOR /X Operații: adunare scădere înmulțire împărțire înmulțire logică (operație AND) adunare logică (operație SAU) adunare modulo 2 (SAU exclusiv) inversare a 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ă. Tabelul prezintă o listă de comenzi, sortate alfabetic.

Mnemonice Funcţie Steaguri
Comanda ACALL Apel de subrutină absolut
Adăugați o comandă<байт-источник> Plus AC, C, OV
Comanda ADDC A<байт-источник> Supliment cu transport AC, C, OV
Echipa AJMP Tranziție absolută
Echipa ANL<байт-назначения>, <байт-источникa> „ȘI” logic
Echipa ANL C,<байт-источникa> „ȘI” logic pentru variabile de biți
Echipa CJNE<байт-назначения>, <байт-источник>, <смещение> Comparați și săriți dacă nu sunt egali C
Comanda CLR A Resetarea bateriei
Comanda CLR Resetare bit C, bit
Echipa CPL A Inversarea lui ak umulya ora
Echipa CPL Inversarea biților C, bit
Echipa DA A Corecția acumulatorului zecimal pentru poziție AC, C
Echipa DEC<байт> Decrementează
Echipa DIV AB Divizia C, OV
Echipa DJNZ<байт>, <смещение> Scădeți și săriți dacă nu este egal cu zero
Echipa INC<байт> Creştere
Comanda INC DPTR Creșterea indicatorului de date
Echipa JB , Salt dacă bit este setat
Echipa JBC , Salt dacă bitul este setat și resetați acel bit
Echipa JC Tranziție dacă transferul este setat
Comanda JMP @A+DPTR Transfer indirect
Echipa JNB , Salt dacă bit nu este setat
Echipa JNC Sari dacă transportul nu este setat
Echipa JNZ Salt dacă conținutul acumulatorului nu este zero
Echipa JZ Salt dacă conținutul acumulatorului este 0
Comanda LCALL Apel lung
Echipa LJMP Trecere lungă
Comanda MOV<байт-назначения>, <байт-источника> Variabila octet înainte
Comanda MOV<бит-назначения>, <бит-источника> Trimiteți bit de date C
Comanda MOV DPTR,#data16 Încărcați un pointer de date cu o constantă de 16 biți
Comanda MOVC A,@A+( ) Trimite octet din memoria programului
Echipa MOVX<байт приемника>, <байт источника> Trimiteți date în memoria externă (din memoria externă)
Echipa MUL AB Multiplicare C, OV
Comanda NOP Nicio operațiune PC
Echipa ORL<байт-назначения>, <байт-источникa> „SAU” logic pentru octeți variabili
Echipa ORL C,<бит источникa> „SAU” logic pentru variabile de biți C
Comanda POP Citirea din teanc
Comanda PUSH Scriind la teanc
Comanda RET Întoarcerea din subrutină
Echipa RETI Întoarcerea de la întrerupere
Echipa RL A Mutați conținutul acumulatorului la stânga
Echipa RLC A Mutați conținutul acumulatorului la stânga prin intermediul steagului de transport
RR O comandă Mutați conținutul acumulatorului la dreapta
Echipa RRC A Mutați conținutul acumulatorului la dreapta prin intermediul steagului de transport C
Comanda SETB Set bit C
Echipa SJMP<метка> Scurtă tranziție
Echipa SUBB A,<байт источника> Scăderea cu împrumut AC, C, OV
SWAP O comandă Schimb de notebook-uri în interiorul bateriei
XCH O comandă,<байт> Schimbați conținutul acumulatorului cu o variabilă octet
Comanda XCHD A,@R1 Schimb de caiete
Echipa XRL<байт-назначения>, <байт-источникa> „XOR” logic pentru variabilele octet