Az mcs 51 család mikrovezérlői típusarchitektúrával rendelkeznek. Mikrokontrollerek MCS-51. Blokkdiagram, ALU, adatmemória. Port olvasási mód

22.04.2021 Érdekes

Az Intel az MCS-51 család architektúrájának ötletgazdája, amely nevét a család első képviselőjéről kapta - az 1980-ban kiadott n-MOS technológián alapuló 8051 mikrokontrollerről. szerencsés készlet perifériák, a külső vagy belső programmemória rugalmas megválasztása és az elfogadható ár tette ezt a mikrovezérlőt a piacon sikeressé. Technológiai szempontból a 8051-es mikrokontroller a maga idejében nagyon összetett termék volt - 128 ezer tranzisztort használtak a kristályban, ami 4-szerese a 16 bites 8086-os mikroprocesszor tranzisztorainak, ez a mikrokontroller marad a mag az MCS-51 család a mai napig.

A család alapvető architektúrájának (8051 mikrokontroller architektúra) fő elemei a következők:

8 bites ALU;

4 regiszter bank, mindegyikben 8;

Belső (rezidens) programmemória 4 KB, ROM vagy EPROM (8751) típusú;

Belső (rezidens) adatmemória 128 bájt;

21 speciális funkcióregiszter;

logikai processzor;

Két 16 bites időzítő/számláló;

Vezérlő soros port(UART);

Megszakításvezérlő két prioritási szinttel;

Négy 8 bites I/O port, amelyek közül kettő cím/adatbuszként szolgál a külső program- és adatmemória elérésére;

Beépített óra generátor.

Ezután megjelent a 8052-es mikrokontroller, amely megnövelt számú rezidens programot és adatmemóriát tartalmazott, amelyet egy harmadik időzítő és egy megfelelően bővített megszakításvezérlő vezet be.

Az MCS-51 fejlesztésének következő alapvető lépése a gyártástechnológia CMOS-ra való átadása volt (8xC51-es módosítás). Ez lehetővé tette az Idl (üresjárat) és a Power Down (alacsony fogyasztás) üzemmódok megvalósítását, amelyek jelentősen csökkentik a kristály energiafogyasztását, és megnyitották az utat a mikrokontroller használatához illékony alkalmazásokban, például autonóm akkumulátorral működő eszközök.

Az MK 8051 Intel fejlesztésének utolsó fontos szakasza a 8xC51FA / FB / FC és a 8xC51RA / RB / RC mikrokontrollerek kiadása volt, amelyeket a rövidség kedvéért gyakran 8xC51Fx és 8xC51Rx néven emlegetnek. Ennek a kristálycsoportnak a fő megkülönböztető jellemzője egy speciális időzítő / számláló (PCA) jelenléte. Ezenkívül a 8xC51Rx mikrokontrollerek egy watchdog időzítőt (WDT) is tartalmaznak. Fontolja meg részletesebben a PCA architektúráját és funkcionalitását.

Az RSA a következőket tartalmazza:

16 bites időzítő/számláló;

Öt 16 bites minta- és összehasonlító modul, mindegyik más-más mikrokontroller I/O portvonalhoz csatlakozik.

Az időzítő/számláló mind az öt minta- és összehasonlító modult kiszolgálja, amelyek a következő funkciók valamelyikére programozhatók:

Az időzítő értékének 16 bites mintavételezése a külső jel pozitív élén;

Az időzítő értékének 16 bites mintavételezése a külső jel negatív élén;

az időzítő értékének 16 bites mintavételezése a külső jel bármely szélén;

16 bites programozható időzítő;

16 bites nagy sebességű kimeneti eszköz;

8 bites PWM.

Az összes felsorolt ​​funkció megvalósítása a PCA-ban hardver szinten történik, és nem terheli a központi processzort. Ez lehetővé teszi az általános átviteli sebesség növelését, a mérések és a jelfeldolgozás pontosságának javítását, valamint a mikrokontroller külső eseményekre adott válaszidejének csökkentését, ami különösen fontos a valós idejű rendszerek esetében. A 8xC51Fx-ben (8xC51Rx) megvalósított PCA olyannak bizonyult

Kijelölés

Max. frekvencia (MHz)

ROM/EPROM (byte)

számlálók

Szerencsére ezeknek a mikrokontrollereknek az architektúrája iparági szabvány lett, és magát a PCA-t is többször reprodukálták az MK 8051 különféle módosításaiban.

Az Intel által gyártott MCS-51 mikrokontrollerek néhány jellemzőjét az 1.1. táblázat tartalmazza.

Kezdetben az MCS-51 architektúra szűk keresztmetszete a 8 bites akkumulátor alapú ALU és a viszonylag lassú utasítás-végrehajtás volt (12 hurok szükséges a leggyorsabb utasítások végrehajtásához).

1.1. táblázat

I/O

ADC bemenet x számjegy

periféria,

sajátosságait

U pet. (NÁL NÉL)

Alacsony feszültségű opció

4 szintes IRQ, clock out

4 szintes IRQ, clock out

Alacsony feszültségű változat 8xC51Fx

4 szintes IRQ, clock out

4 szintes IRQ, clock out

4 szintes IRQ, clock out

órajel frekvencia riodok (MC szinkronizálási frekvencia)). Ez korlátozta a családi mikrokontrollerek használatát a nagyobb teljesítményt és összetett számításokat igénylő alkalmazásokban (16 és 32 bites). Az MCS-51 architektúra alapvető modernizálásának kérdése sürgetővé vált. A modernizáció problémáját nehezítette, hogy a 90-es évek elejére már rengeteg fejlesztés született a szoftverek, ill. hardver az MCS-51 családból, melyhez kapcsolódóan az új architektúra tervezésének egyik fő feladata az MCS-51 alapú fejlesztésekkel való hardver és szoftver kompatibilitás megvalósítása volt.

A probléma megoldására az Intel és a Philips szakembereiből közös csoportot hoztak létre, de később e két cég útjai elváltak. Ennek eredményeként 1995-ben két jelentősen eltérő család jelent meg: az Intel MCS-251/151 és a Philips MCS-51XA (lásd az 1.2 alfejezetet).

Az MCS-251 architektúra főbb jellemzői:

24 bites lineáris címtér, legfeljebb 16 MB memória címzésére;

Regiszter-architektúra, amely lehetővé teszi, hogy a regiszterekre bájtokként, szavakként és kettős szavakként hivatkozzanak;

Oldalcímzési mód a parancsok gyorsabb lekéréséhez a külső programmemóriából;

Utasítási sor;

Kibővített utasításkészlet, beleértve a 16 bites aritmetikai és logikai műveleteket;

Bővített veremcímterület (akár 64 KB);

Maga csinálja gyors parancs 2 ütemre.

Az MCS-251 utasításkészlet két utasításkészletet tartalmaz – az első készlet az MCS-51 utasításkészlet másolata, a második pedig kiterjesztett utasításokból áll, amelyek kihasználják az MCS-251 architektúrát. A mikrokontroller használata előtt konfigurálni kell, pl. a programozó segítségével "égesse" azokat a konfigurációs biteket, amelyek meghatározzák, hogy az utasításkészletek közül melyik válik aktívvá a tápfeszültség bekapcsolása után. Ha telepíti az első utasításkészletet, akkor ebben az esetben az MCS-251 család MK-ja bináris kód szinten kompatibilis lesz az MCS-51-el. Ezt a módot bináris módnak nevezik. Ha kezdetben bővített utasításkészletet telepít (Forrás mód), akkor az MCS-51-hez írt programok újrafordítást igényelnek az MCS-251 kereszteszközökön. A Forrás mód lehetővé teszi az MCS-251 architektúra maximális hatékonyságú használatát és a legmagasabb teljesítmény elérését.

Azon felhasználók számára, akik az MCS-251 mikrokontrollereket használják az MCS-51 mechanikus helyettesítésére, az Intel kiadja a már bináris módban programozott MCS-151 mikrokontrollereket.

Számos MCS-251/151 mikrokontroller néhány jellemzőjét az 1.1. táblázat tartalmazza.

Jelenleg a Pentium processzorok piacát célzó Intel az MCS-51 kristályok gyártását korlátozza. Általában egy adott fejlesztő számára ez észrevétlen marad, hacsak nem 8xC51GB és 80C152Jx mikrokontrollereket használ, amelyeknek nincs pontos analógja más cégek termékei között. Mint az MCS-51 család többi mikrokontrollerét, ezeket is sokszor replikálják más cégek.

A mikrokontroller alapja (lásd 1. ábra) egy 8 bites aritmetikai logikai egység (ALU). Az MK emlékének harvardi architektúrája van, i.e. logikailag felosztva: programmemóriára - PP (belső vagy külső), 16 bites parancsszámlálóval (SC) címezve és adatmemóriára - belső (rezidens adatmemória - RPD) 128 (vagy 256) bájt, valamint külső (külső) adatmemória – VPD) 64 KB-ig. Fizikailag a programmemória a ROM-on (csak olvasható), az adatmemória pedig a RAM-on van megvalósítva (az adatok írhatók és olvashatók).

Fogadás és kiadás külső jelek 4 nyolcbites Р0..Р3 porton keresztül történik. Amikor hivatkozik külső memória programok (VPP) vagy adatmemória (VPD) P0 és P2 portjai multiplexelt külső buszként használhatók Cím/adat. A P3 portvonalak alternatív funkciókat is elláthatnak (lásd 1. táblázat).

A 16 bites DPTR regiszter képezi a VPD címet vagy a Program memória alapcímét az Akkumulátor konverziós utasításban. A DPTR regiszter két független 8 bites regiszterként (DPL és DPH) is használható operandusok tárolására.

8 bites belső parancsregiszter (RK) fogadja a végrehajtott parancs kódját; ezt a kódot a vezérlő áramkör dekódolja, amely vezérlőjeleket generál (lásd 1. ábra).

Hozzáférés a speciális funkcióregiszterekhez - RSF (SFR - az 1. ábrán bekarikázva vannak). szaggatott vonal) csak közvetlen bájtcímzéssel lehetséges a 128 (80 órás) vagy annál nagyobb címtartományban.


A rezidens adatmemória (RDD) az MCS-51 család mikrovezérlőinek első modelljeiben 128 bájt kapacitású volt. Az RPD alsó 32 bájtja is regiszter Általános rendeltetésű– RON (4 bank, egyenként 8 RON). A program az aktív bank 8 RON valamelyikére vonatkozhat. Az aktív RON-bank kiválasztása a processzorállapot-regiszterben - PSW - két bit programozásával történik.


1. táblázat - MCS-51 érintkezők hozzárendelése

Pin sz. Kijelölés Célja
1..8 P1 8 bites kvázi kétirányú I/O port
9 RST

Reset jel (aktív szint - magas);

Az RST jel alaphelyzetbe áll: a PC és a legtöbb speciális funkcióregiszter (SFR), letiltva az összes megszakítást és időzítőt; kiválasztja a RON Bank 0-t; a P0_P3 portokra "mindegyeseket" ír, előkészítve őket a bemenetre; 07H kódot ír a veremmutatóba (SP);

10..17

8 bites kvázi kétirányú I/O port; a megfelelő "1" bitre írás után - további (alternatív) funkciókat hajt végre:

Soros port bemenet - RxD;

Soros port kimenet - TxD;

Külső megszakítás bemenet 0 - ~INT0;

1. külső megszakítás bemenet - ~INT1;

Időzítő/számláló bemenet 0 - T0;

Időzítő/számláló bemenet 1 - T1;

Strobe kimenet. jel a VPD-be írva - ~ WR;

Strobe kimenet. jel a VPD-ből történő olvasáskor - ~ RD;

18, 19 X1, X2 Következtetések kvarc rezonátor vagy LC áramkör csatlakoztatásához;
20 GND Általános következtetés;
21..28 P2 8 bites kvázi kétirányú I/O port; vagy A kimeneti cím külső memória módban (VPP vagy VPD);
29 PME Külső programmemória olvasási villogása, csak külső ROM elérésekor jelenik meg;
30 ALE Külső memória cím villogó (VPP vagy VPD);
31 EA Az RPP letiltása esetén a "0" szint ennél a bemenetnél az MK-t egy kiválasztott parancsra váltja csak a kifutóról ;
39..32 P0 8 bites kétirányú I/O port; a külső memória elérésekor kiadja az A címeket (amelyeket az ALE jel egy külső regiszterbe ír), majd szinkronban cserél egy bájtot a ~PME (parancsokhoz) vagy a ~WR,~RD (VPD-ben lévő adatokhoz) jellel. , a külső memória elérésekor minden egység a P0 portregiszterbe kerül, megsemmisítve az ott tárolt információkat;
40 Ucc Tápfeszültség kimenet

A RON bankok váltása leegyszerűsíti az alprogramok végrehajtását és a megszakítások kezelését, mert. az alprogram hívásakor nem szükséges a főprogram RON-jainak tartalmát átvinni a verembe (elég egy másik aktív RON-bankra menni az alprogramban).

Az RPD-hez való hozzáférés közvetett vagy közvetlen bájtcímzéssel lehetséges (a közvetlen bájtcímzés csak az RPD első 128 bájtjának elérését teszi lehetővé).

A kiterjesztett RPD terület (az MCS-52 család mikrokontrollerei és az azt követő családok számára) 128 (80h) címről 255 (FFh) címre csak indirekt címzési módszerrel címezhető meg.

2. táblázat – Speciális funkciók blokkregiszterei (s f r)

Mnemo kód Név
0E0h *ACC Akkumulátor
0F0h *B Regisztrálja az akkumulátor bővítőt
0D0h *PSW Processzor állapotszó
0B0h *P3 3. port
0A0h *P2 2. port
90 óra *P1 1. port
80 óra *P0 0 port
0B8h * IP A prioritási nyilvántartás megszakítása
0A8h *AZAZ A maszkregiszter megszakítása
99h SBUF Soros adó-vevő puffer
98 óra * SCON Soros port vezérlés/Állapotregiszter
89 óra TMOD Időzítő/számláló mód regisztrálása
88 óra * TCON Timer/Counter Control/Status Register
8Dh TH1 1. időzítő (nagy bájt)
8bh TL1 1. időzítő (alacsony bájt)
8ch TH0 Időzítő 0 (magas bájt)
8ah TL0 Időzítő 0 (alacsony bájt)
83 óra DPH Adatmutató-regiszter (DPTR) (magas bájt)
82 óra DPL Data Pointer Register (DPTR) (alacsony bájt)
81 óra SP Stack pointer regiszter
87 óra PCON Igényteljesítmény-szabályozási regiszter

2. MCS–51 SZOFTVER MODELL


PARANCSTÍPUSOK MCS–51

A parancsok csaknem fele 1 gépi ciklusban (MC) fut le. 12 MHz-es kristályoszcillátor-frekvenciánál egy ilyen parancs végrehajtási ideje 1 μs. A fennmaradó parancsok végrehajtása 2 gépi ciklusban történik, azaz. 2 ms-ig. Csak a szorzási (MUL) és az osztási (DIV) utasítások hajtódnak végre 4 gépi ciklusban.

Egy gépi ciklus alatt két hozzáférés van a programmemóriához (belső vagy külső) az utasítás két bájtjának olvasásához, vagy egy hozzáférés a külső adatmemóriához (EDM).

3. AZ MCS CÍMEZÉS MÓDSZEREI (MÓDSZEREI)–51

1. REGISZTRÁCIÓS CÍMZÉS - A 8 bites operandus a kiválasztott (aktív) regiszterbank RON-jában található;

2 KÖZVETLEN CÍMZÉS (a - # jellel jelezve) - az operandus a parancs második (és 16 bites operandus esetén a harmadik) bájtjában található;

3 KÖZVETETT CÍMZÉS (a - @ jellel jelölve) - az operandus az adatmemóriában (RPD vagy VPD) található, és a memóriacella címét az indirekt címzés egyik RON-ja (R0 vagy R1) tartalmazza; a PUSH és POP parancsokban a címet az SP veremmutató tartalmazza; a DPTR regiszter 64K-ig tartalmazhat VPD-címet;

4 DIRECT BYTE ADDRESSING – (dir) – RPD cellák (00h…7Fh címek) és speciális SFR funkcióregiszterek (80h…0FFh címek) elérésére szolgál;

5 KÖZVETLEN BIT CÍMZÉS - (bit) - a 20H ... 2FH RPD cellákban található, külön címezhető 128 bit eléréséhez és a speciális funkcióregiszterek külön címezhető bitjeinek eléréséhez (lásd 3. táblázat és programmodell);

6 KÖZVETETT INDEX CÍMZÉS (@ jellel jelölve) - leegyszerűsíti a táblázatok megtekintését a Programmemóriában, a PP címet az alapregiszter (PC vagy DPTR) és az indexregiszter (Battery) összege határozza meg;

7 IMPLICIT (BEÉPÍTETT) CÍMZÉS - az utasításkód implicit (alapértelmezett) hivatkozást tartalmaz valamelyik operandusra (leggyakrabban az Akkumulátorra).

4. PROCESSOR ÁLLAPOTSZÓ (PSW) FORMÁTUM

C - Carry (CARY) vagy kölcsön jelző, "boolean akkumulátorként" is működik a bitekkel működtetett utasításokban;

AC – auxiliary (additional) carry flag – „1”-re állítva, ha az összeadás parancsnak (ADD, ADDC) volt egy átvitele az alacsony rendű tetradról a magasabb rendűre (azaz a 3. bitről a 4. bitre);

F0 - felhasználói jelző - beállítása, visszaállítása és szoftver általi ellenőrzése;

RS1 RS0 Bank Cím (rendező)
0 0 0 00..07 óra
0 1 1 08h..0fh
1 0 2 10..17 óra
1 1 3 18h..1fh

RS1,RS0 – Regisztrációs bank kiválasztása:

OV - Aritmetikai túlcsordulás jelző; értékét az ALU legjelentősebb bitjének bemeneti és kimeneti hordozó jeleinek XOR művelete határozza meg; ennek a zászlónak egyetlen értéke azt jelzi, hogy egy aritmetikai művelet eredménye a kettő komplementer kódjában kívül esik a tartományon: –128…+127; az osztási művelet végrehajtása során az OV jelző nullázódik, nullával való osztás esetén pedig beáll; szorzáskor az OV jelző be van állítva, ha az eredmény nagyobb, mint 255 (0FFH);

Bit PSW - Fenntartva, triggert tartalmaz, íráshoz vagy olvasáshoz elérhető;

P - paritásjelző - az akkumulátorban lévő egyes bitek számának páros számhoz való hozzáadása; kombinációs áramkör alkotja (programozottan csak olvasásra áll rendelkezésre).

Az MCS-51 mikrokontrollerek nem rendelkeznek "Z" jelzővel. De a feltételes ugrási utasításokban (JZ, JNZ) a kombinációs áramkör ellenőrzi az Akkumulátor aktuális (nulla vagy nem nulla) tartalmát.

Minden átviteli és operanduscsere parancs végrehajtható az Akkumulátoron keresztül (lásd 3. ábra). Ezenkívül a külső memóriából (program- vagy adatmemóriába) történő átvitel csak az akkumulátoron keresztül hajtható végre.

A legtöbb átvitel egy előremenő bájton (dir) keresztül is végrehajtható. Vannak még dir-dir átvitelek is (lásd a 3. ábrát).

A hiányzó átvitelek RON-ról RON-ra átvitelként valósíthatók meg a RON-ról a forward byte dir-be (tekintettel arra, hogy a RON-ok a Rezidens Adatmemória kezdeti területén találhatók, amelynek celláit dir-nek lehet címezni).

Az XCH Exchange parancsok lehetővé teszik bájtok küldését mindkét operandus tönkretétele nélkül.

Az aritmetikai parancsok csak az Akkumulátorban hajtódnak végre. Ezért az első operandust először az Akkumulátorba kell helyezni, majd össze kell adni vagy ki kell vonni a második operandust. Az eredmény az Akkumulátorba kerül.


A SUBB kivonási parancs csak kölcsönkéréssel kerül végrehajtásra (azaz a Cary jelző is levonásra kerül az eredményből). Ezért egy kivonási utasítás kölcsönzés nélküli végrehajtásához először végre kell hajtani a Clear Flag C (CLRC) utasítást.

Az egybájtos operandusok szorzására vonatkozó utasítás - MULAB - két bájtos (16 bites) eredményt ad: az alacsony bájt az Akkumulátorban, a magas bájt a B regiszterben van.

Az egybájtos operandusok felosztására vonatkozó utasítás végrehajtásának eredménye - DIVAB - kerül: a hányados - a Akkumulátor, a maradék - a B regiszterbe.

Az INC aritmetikai utasítás hozzáad egyet a kiválasztott operandushoz. A DEC aritmetikai utasítás kivon egyet a kiválasztott operandusból. Az Accumulator Decimal Correction (DAA) utasítás segít binárisan kódolt decimális (BCD) számok hozzáadásához anélkül, hogy azokat hexadecimális (hexa) formátumba konvertálná. A forrás operandusoknak BCD formátumban kell lenniük, pl. minden egy bájt tetradjában csak 0 és 9 közötti számok vannak (nem lehetnek hexadecimális számok: A, B, C, D, E, F). Ezért egy bájt tartalmazhat 00-tól 99-ig terjedő számokat a csomagolt BCD-számok esetében, vagy 0-tól 9-ig terjedő számokat a kicsomagolt BCD-számok esetében.

A DA A - decimális korrekciós parancs a BCD-számok processzorban való hozzáadása után hajt végre műveleteket az Akkumulátor tartalmán (a számok a hexadecimális aritmetika törvényei szerint kerültek összeadásra) az alábbiak szerint (lásd a példát):

· ha az Akkumulátor alacsonyrendű tetradjának tartalma nagyobb, mint 9, vagy a segédátviteli jelző be van állítva (AC = 1), akkor az Akkumulátor tartalmához 6-ot adunk (vagyis a hiányzó hat számjegyet hexadecimálisan formátum);

· ha ezt követően az Akkumulátor magasabb rendjének tartalma 9-nél nagyobb, vagy a C jelző be van állítva, akkor a 6-os szám hozzáadódik az Akkumulátor magas sorrendjéhez.

A DA A decimális korrekciós utasítás nem használatos a növelési utasítás (INC) után, mert a növelési utasítás nem befolyásolja (változtatja) a C és AC jelzőket.

Logikai parancsok:

Logikai "ÉS" - ANL,

Logikai "VAGY" - ORL,

Az XOR logikai parancs - XRL - az Akkumulátorban (valamint az aritmetikában) kerül végrehajtásra, de lehetőség van logikai parancsok végrehajtására a közvetlen címbyte-ban (dir) is. Ebben az esetben a második operandus lehet:

az akkumulátorban ill

Azonnali operandus egy utasításban.

A forgatási utasítások (RR A, RL A) és a CARY jelzőn keresztüli forgatási utasítások (RRC A, RLC A) 1 bittel elforgatják az Akkumulátor tartalmát, a bites operandusok csak a C jelzőn keresztül kerülnek elküldésre.

Az MCS-51 család felépítését nagymértékben meghatározza a rendeltetése - az építés kompaktés olcsó digitális eszközök. A mikroszámítógép minden funkciója egyetlen mikroáramkörrel valósul meg. Az MCS-51 család tartalmazza egész sor mikroáramkörök a legegyszerűbb mikrokontrollerektől a meglehetősen bonyolultakig. Az MCS-51 család mikrovezérlői lehetővé teszik a különböző eszközök vezérlésének és az analóg áramkör egyes csomópontjainak megvalósítását. Ennek a családnak az összes mikroáramköre működik ugyanazzal a parancsrendszerrel, legtöbbjüket ugyanazokban az esetekben hajtják végre hozzáillő pinout(lábak számozása az esethez). Ez lehetővé teszi a mikroáramkörök használatát a kifejlesztett eszközhöz különböző cégek- gyártók (például Intel, Dallas, Atmel, Philips stb.) változtatás nélkül kördiagramm eszközök és programok.

1. ábra A K1830BE751 vezérlő szerkezeti diagramja

A vezérlő blokkvázlata az 1. ábrán látható, és a következő fő funkcionális egységekből áll: vezérlőegység, aritmetikai logikai egység, időzítő/számláló egység, soros interfész és megszakító egység, programszámláló, adatmemória, ill. programmemória. A kétoldalú adatcsere belső 8 bites adatátviteli útvonalon történik. Nézzük meg közelebbről az egyes blokkok célját. Az MCS-51 család szinte minden képviselője ennek a séma szerint épül fel.. Ennek a családnak a különböző mikroáramkörei csak a speciális célú regiszterekben (beleértve a portok számát) különböznek. Parancsrendszer minden vezérlő Az MCS-51 család 111-et tartalmaz alapvető parancsokat 1, 2 vagy 3 bájtos formátummal, és nem változik az egyik chipről a másikra való váltáskor. Ez biztosítja a programok kiváló hordozhatóságát egyik chipről a másikra.

Vezérlő és szinkronizáló egység

A vezérlő és szinkronizáló egység (Timing and Control) olyan szinkronizálási és vezérlőjelek generálására szolgál, amelyek biztosítják az OEVM egységek együttes működésének összehangolását annak minden megengedett üzemmódjában. A vezérlőegység a következőket tartalmazza:

  • időintervallumok kialakítására szolgáló eszköz,
  • I/O logika,
  • utasítás nyilvántartás,
  • ellenőrzési regiszter villamosenergia-fogyasztás,
  • parancsdekóder, számítógépes vezérlési logika.

Időbeosztási eszköz fázisok, ciklusok és ciklusok belső szinkronjeleinek generálására és kiadására szolgál. A gépi ciklusok száma határozza meg az utasítás végrehajtásának időtartamát. Szinte minden OEVM parancs egy vagy két gépi ciklusban kerül végrehajtásra, kivéve a szorzási és osztási utasításokat, amelyek időtartama négy gépi ciklus. Jelöljük a fő oszcillátor frekvenciáját F g-n keresztül, ekkor a gépciklus időtartama 12/F g, vagyis a mester oszcillátor jelének 12 periódusa. A bemeneti-kimeneti logika olyan jelek fogadására és kiadására szolgál, amelyek információcserét biztosítanak külső eszközök a P0-P3 bemeneti/kimeneti portokon keresztül.

ParancsregiszterÚgy tervezték, hogy rögzítse és tárolja a végrehajtott parancs 8 bites műveleti kódját. A műveleti kódot parancsok és számítógépes vezérlőlogika segítségével a parancs végrehajtására szolgáló mikroprogrammá alakítjuk.

Demand Control Register (PCON) lehetővé teszi a mikrokontroller működésének leállítását az energiafogyasztás csökkentése és a mikrokontroller okozta interferencia szintjének csökkentése érdekében. A mikrokontroller master oszcillátorának leállításával még nagyobb teljesítmény- és zajcsökkentés érhető el. Ez a PCON igényvezérlő regiszter bitjeinek váltogatásával érhető el. Az nMOS gyártási opciónál (1816-os sorozatú vagy idegen chipek, amelyeknél nincs "c" betű a név közepén) a PCON teljesítményvezérlő regiszter csak egy bitet tartalmaz, amely a SMOD soros port adatátviteli sebességét szabályozza, és ott nincsenek energiafogyasztást vezérlő bitek.

Az "MCS-51 mikrovezérlők felépítése" cikkel együtt a következők olvashatók:


http://website/MCS51/tablems.php


http://website/MCS51/SysInstr.php


http://website/MCS51/port.php

ELŐADÁSTERV

1. Bemutatkozás

2. Aritmetikai és logikai utasítások

3. Adatátviteli parancsok

4. Boole-műveletek

5. Ugrási utasítások

1. Bemutatkozás

Parancsrendszer MCS-51 egyetlen utasításkészletet támogat, amelyet úgy terveztek, hogy 8 bites algoritmusokat hajtson végre az aktuátorok vezérléséhez. Használati lehetőség van gyors módszerek címzés a belső RAM-nak, bitműveletek végrehajtása kis adatstruktúrákon. Az egybites változók független adattípusként való megcímzésére kiterjedt rendszer áll rendelkezésre, amely lehetővé teszi az egyes bitek használatát a logikai algebra logikai és vezérlőparancsaiban.

Címzési módok : utasításkészlet MCS-51 a következő címzési módokat támogatja. Közvetlen címzés: Az operandust egy 8 bites cím határozza meg az utasításban. A közvetlen címzést csak az alsó felében használjuk belső memória adatok és nyilvántartások SFR. indirekt címzés: Az utasítás az operandus címét tartalmazó regisztert szólítja meg. Ez a típus a címzést külső és belső RAM-hoz használják. A regiszterek segítségével 8 bites címeket adhatunk meg R0és R1 kiválasztott regisztrációs bank vagy veremmutató SP. A 16 bites címzésnél csak az adatmutató regiszter kerül felhasználásra. DPTR.

Regisztráljon utasításokat : regiszterek R0–R7 az aktuális regiszterbank megszólítható speciális utasításokkal, amelyek egy 3 bites mezőt tartalmaznak, amely magában az utasításban jelzi a regiszterszámot. Ebben az esetben a parancsban nincs megfelelő címmező. Műveletek speciális regiszterekkel: egyes utasítások egyedi regisztereket használnak (például akkumulátoros műveletek, DPTR stb.). Ebben az esetben az operandus címe egyáltalán nincs megadva az utasításban. Az opkód előre meghatározza.

Azonnali állandók : a konstans közvetlenül az opcode mögötti parancsban lehet.

Index címzés : Az indexelt címzés csak a programmemória elérésére használható, és csak olvasási módban. Ebben az üzemmódban a programmemóriában lévő táblázatok tekinthetők meg. 16 bites regiszter ( DPTR vagy programszámláló) jelzi a kívánt tábla alapcímét, az akkumulátor pedig a belépési pontot.

Parancskészlet42 parancsmnemonika van a rendszer 33 funkciójának meghatározásához. A legtöbb assembly nyelvi utasítás szintaxisa egy függvénymnemoniából, majd a címzési módszereket és adattípusokat meghatározó operandusokból áll. különböző típusok Az adatokat vagy a címzési módokat a beállított operandusok határozzák meg, nem a mnemonikus jelölés változásai.

A parancsrendszer feltételesen öt csoportra osztható: aritmetikai parancsok; logikai parancsok; adatátviteli parancsok; bit processzor utasítások; elágazási és átviteli parancsokat. A parancsrendszerben használt jelölések és szimbólumok az alábbiakban találhatók.

Asztal. A parancsrendszerben használt jelölések és szimbólumok

Megnevezés, szimbólum

Célja

Akkumulátor

Az aktuálisan kiválasztott regisztrációs bank nyilvántartásai

A betöltött regiszter parancsban megadott száma

közvetlen

Közvetlenül címezhető 8 bites belső adathely cím, amely lehet belső adat RAM hely (0-127) vagy speciális funkcióregiszter SFR (128-255)

Közvetetten címezhető 8 bites belső adat RAM hely

8 bites azonnali a műveleti kódban (COP) szereplő adatok

adatokH

Azonnali 16 bites adatok MSB-jei (15-8).

adatokL

Alacsony bitek (7-0) az azonnali 16 bites adatokból

11 bites célcím

addrL

A célcím legkevésbé jelentős bitjei

8 bites előjeles offset byte

Közvetlenül címezhető bit, amelynek címe tartalmazza a belső adatRAM-ban vagy az SFR speciális funkcióregiszterben található CPC-t

a15, a14...a0

Célcím bitjei

Az X elem tartalma

Tartalom az X elemben tárolt címen

Kisütés M elem X


+

*
ÉS
VAGY
XOR
/X

Tevékenységek:
kiegészítéseket
kivonás
szorzás
osztály
logikai szorzás (ÉS művelet)
logikai összeadás (VAGY művelet)
kiegészítés modulo 2 (XOR)
elem X inverziója

A függvénymnemonikák egyedileg a címzési módszerek és adattípusok meghatározott kombinációihoz kapcsolódnak. Összesen 111 ilyen kombináció lehetséges a parancsrendszerben.

2. Aritmetikai és logikai utasítások

Hogyan kell példa számtani parancs, az összeadási művelet a következő parancsok egyikével hajtható végre.

HOZZÁADA,7 F 16 - az A regiszter tartalmához adja hozzá a 7-es számot F 16 és mentse az eredményt az A regiszterbe;

HOZZÁADA,@ R0 - az A regiszter tartalmához adja hozzá a címét (@ – kereskedelmi nál nél ) a nyilvántartásban tárolódik R 0 (indirekt címzés), és tárolja az eredményt az A regiszterben;

HOZZÁADJA A,R7- hozzáadni az A regiszter tartalmához a regiszter tartalmát R 7 és mentse el az eredményt az A regiszterbe;

HOZZÁAD A,#127- az A regiszter tartalmához adjunk hozzá egy számot, amelynek tárolócella címe 127 ( # - szám szimbólum), és mentse el az eredményt a regiszterbe t-re A.

Minden aritmetikai utasítás egy gépi ciklusban kerül végrehajtásra, kivéve az utasítást INC DPTR(adatmutató eltolása DPTR a következő bájtig), amely két gépi ciklust, valamint 4 gépi ciklusban végrehajtott szorzási és osztási műveleteket igényel. A belső adatmemória bármely bájtja növelhető és csökkenthető az akkumulátor használata nélkül.

Utasítás MUL AB elvégzi az akkumulátorban lévő adatok szorzását (szorzását) a B regiszter adataival, a szorzatot az A (alsó fele) és a B (felső fele) regiszterbe helyezve.

Utasítás DIV AB osztja (osztja) az akkumulátor tartalmát a B regiszter értékével, a maradékot B-ben, a hányadost pedig az akkumulátorban hagyja.

Utasítás DA A bináris-decimális aritmetikai műveletekhez (bináris-tizedes kódban ábrázolt számokkal végzett aritmetikai műveletekhez). Nem konvertál binárisan erre bináris decimális, de csak akkor adja meg a helyes eredményt, ha két BCD-számot ad hozzá.

Példa logikai parancs: a logikai ÉS művelet a következő parancsok egyikével hajtható végre:

ANLA,7 F 16 - az A regiszter tartalmának logikai szorzása 7-tel F 16 és az eredményt az A regiszterben tároljuk;

ANLA,@ R1 - az A regiszter tartalmának logikai szorzása azzal a számmal, amelynek címét a regiszter tárolja R 1 (közvetett címzés), és tárolja az eredményt az A regiszterben;

ANL A,R6- az A regiszter tartalmának logikai szorzása a regiszter tartalmával R 6, és tárolja az eredményt az A regiszterben;

ANL A,#53 - az A regiszter tartalmának logikai szorzása egy 53 16 cellacímű számmal, és az eredmény mentése az A regiszterbe.

Az akkumulátor tartalmával kapcsolatos összes logikai műveletet egy gépi ciklusban hajtják végre, a többit kettőben. A logikai műveletek végrehajthatók a belső adatmemória alsó 128 bájtjának bármelyikén vagy bármely regiszteren SFR (speciális funkcióregiszterek) közvetlen címzési módban, akkumulátor használata nélkül.

Az RL A, RLC A stb. forgatási műveletek az akkumulátor tartalmát egy bittel jobbra vagy balra mozgatják. Balra történő ciklikus eltolás esetén a legkisebb jelentőségű bit a legjelentősebb pozícióba kerül. Jobbra ciklikus eltolódás esetén ennek az ellenkezője történik.

Művelet CSERÉLÉS A végzi a junior és senior tetradák cseréjét a gyűjtőben.

3. Adatátviteli parancsok

Csapat MOV dest,src lehetővé teszi az adatok átvitelét a belső RAM cellák vagy a speciális funkció regiszter területei között SFR akkumulátor használata nélkül. Ebben az esetben a belső RAM felső felével csak indirekt címzési módban lehet dolgozni, és hozzáférni a regiszterekhez SFR– csak közvetlen címzési módban.

Minden mikroáramkörben MCS-51 a verem közvetlenül az adatrezidens memóriába kerül, és felfelé növekszik. Utasítás NYOM először növeli az értéket a veremmutató regiszterében SP, majd az adatbájtokat a verembe tolja. Csapatok NYOMés POP csak közvetlen címzési módban használatosak (egy bájt írásakor vagy visszaállításakor), de a verem mindig elérhető, ha regiszteren keresztül közvetett címzést végez SP. Így a verem a felső 128 bájt adatmemóriát is használhatja. Ugyanezek a megfontolások kizárják a veremutasítások használatát a regiszterek címzésére. SFR.

Az adatátviteli utasítások 16 bites átviteli műveletet tartalmaznak MOV DPTR,#data16, amely az adatmutató-regiszter inicializálására szolgál DPTR a programmemóriában lévő táblázatok megtekintésekor vagy a külső adatmemória eléréséhez.

Művelet XCH A,byte az akkumulátor és a címzett bájt közötti adatcserére szolgál. Csapat XCHD A,@Ri hasonló az előzőhöz, de csak az operandusok cseréjében részt vevő alsó tetradokra.

A külső adatmemória eléréséhez csak közvetett címzés használható. Az egybájtos címek esetében regisztereket használnak R0 vagy R1 az aktuális regiszterbank, a 16 biteseknél pedig az adatmutató regiszter DPTR. A külső adatmemória elérésének bármely módszere esetén az akkumulátor információforrásként vagy vevőként tölti be.

A programmemóriában található táblák eléréséhez a következő parancsokat kell használni:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

A megfelelő adatmutató regiszter tartalma a tábla alapcíme. DPTR vagy PC(szoftverszámláló), és az eltolás innen történik A. Ezek az utasítások kizárólag a programmemóriából való adatok olvasására szolgálnak, nem pedig a programmemóriába való írásra.

4. Boole-műveletek

Mikroáramkörök MCS-51 tartalmaznak egy logikai processzort. A belső RAM 128 közvetlenül címezhető bitből áll. Különleges funkció regiszter tér SFR akár 128 bites mezőket is támogathat. A bitutasítások feltételes ugrásokat, átviteleket, alaphelyzetbe állításokat, inverziókat, ÉS és VAGY műveleteket hajtanak végre. Minden megadott bit elérhető közvetlen címzési módban.

Hordj kicsit CF a speciális funkcióregiszterben "programállapot szó PSW' egybites logikai processzor-akkumulátorként használatos.

5. Ugrási utasítások

Az ugrásműveletek címeit assembly nyelven egy címke vagy egy valós érték jelöli a programmemória területén. A feltételes elágazási címek egy relatív eltolásba vannak összeállítva – a programszámlálóhoz hozzáadott előjel byte PC ha az átmenet feltétele teljesül. Az ilyen ugrások határai mínusz 128 és 127 között vannak az utasítást követő első bájthoz képest. A speciális függvényregiszterben a "program állapotszó PSW» nincs nulla zászló, így az utasításokat JZés JNZ ellenőrizze az "egyenlő nullával" feltételt az akkumulátorban lévő adatok teszteléseként.

Háromféle feltétel nélküli elágazási utasítás létezik: SJMP, LJMPés AJMP– formátumban eltérő célcímek. Utasítás SJMP relatív eltolásként kódolja a címet, és két bájtot foglal el. Az ugrási távolság mínusz 128-127 bájt tartományban van korlátozva a következő utasításhoz képest SJMP.

Az utasításokban LJMP a célcímet 16 bites konstansként használják. A parancs három bájt hosszú. A rendeltetési hely címe bárhol megtalálható a programmemóriában.

Csapat AJMP 11 bites címkonstanst használ. A parancs két bájtból áll. Amikor ez az utasítás végrehajtódik, a címszámláló alsó 11 bitje lecserélődik az utasítás 11 bites címére. A programszámláló öt legjelentősebb bitje PC változatlanok maradnak. Így az ugrás az utasítást követő utasítást tartalmazó 2K bájtos blokkon belül végezhető el AJMP.

Kétféle alprogramhívási utasítás létezik: LCALLés HÍVÁS. Utasítás LCALL a hívott szubrutin 16 bites címét használja. Ebben az esetben az alprogram bárhol elhelyezhető a program memóriájában. Utasítás HÍVÁS a 11 bites szubrutin címét használja. Ebben az esetben a hívott szubrutinnak ugyanabban a 2K bájtos blokkban kell lennie a következő utasítással HÍVÁS. Az utasítás mindkét verziója benyomja a következő utasítás címét a verembe, és betölti a programszámlálóba. PC a megfelelő új értéket.

Az alprogram az utasítással ér véget RET, amely lehetővé teszi, hogy visszatérjen a parancsot követő utasításhoz HÍVÁS. Ez az utasítás kidobja a visszatérési címet a veremből, és betölti a programszámlálóba. PC . Utasítás RETI a megszakítási rutinokból való visszatéréshez. Az egyetlen különbség RETI tól től RET az, hogy a RETI Tájékoztatja a rendszert, hogy a megszakítási feldolgozás befejeződött. Ha a végrehajtás időpontjában RETI nincs más megszakítás, azonos RET.

Utasítás DJNZ ciklusvezérlésre tervezték. Egy hurkot futtatni N ha egyszer be kell töltenie a számlálóba bájtokat az értékkel N és zárjuk be a huroktestet a paranccsal DJNZ, jelzi a ciklus kezdetét.

Csapat CJNE két operandusát előjel nélküli egész számként hasonlítja össze, és a benne megadott címre ugrik, ha az összehasonlított operandusok nem egyenlőek. Ha az első operandus kisebb, mint a második, akkor a hordozóbit CF állítsa "1"-re.

Összeszerelt formában minden utasítás 1, 2 vagy 3 bájtot foglal el.

Az OMEVM parancsrendszer nagyszerű adatfeldolgozási képességeket biztosít, biztosítja a logikai, aritmetikai műveletek megvalósítását, valamint a valós idejű vezérlést. Bitenkénti, tetrad (4 bit), bájt (8 bit) és 16 bites adatfeldolgozás megvalósítva. MCS-51 család LSI - 8 bites OMEM: ROM, RAM, speciális regiszterek, ALU és külső gumik bájtos szervezettel rendelkezik. A kétbájtos adatokat csak a pointer regiszter (DPTR) és a programszámláló (PC) használja. Megjegyzendő, hogy az adatmutató regiszter használható kétbájtos DPTR regiszterként vagy két egybájtos speciális célú DPH és DPL regiszterként. A programszámlálót mindig kétbájtos regiszterként használjuk. Az OMEVM parancskészlet 42 parancsmnemonikát tartalmaz a rendszer 33 funkciójának meghatározásához. A legtöbb assembly nyelvi utasítás szintaxisa egy függvénymnemoniából, majd a címzési módszereket és adattípusokat meghatározó operandusokból áll. A különböző adattípusokat vagy címzési módokat a beállított operandusok határozzák meg, nem pedig a mnemonikus jelölés változásai. A parancsrendszer feltételesen öt csoportra osztható:
  • Aritmetikai parancsok;
  • Logikai parancsok;
  • Adatátviteli parancsok;
  • Bitprocesszor parancsok;
  • Elágazási és átviteli parancsok.
A következő típusú forrás-operandus címzések léteznek:
  • Címzés regisztrációja
  • Közvetlen címzés
  • Regisztrálja a közvetett címzést
  • Közvetlen címzés
  • Közvetett regisztercímzés alap- és indexregiszterek összegével
Aritmetikai utasítások Az utasításkészlet a következő számtani műveleteket tartalmazza: összeadás, összeadás átviteli jelzővel, kölcsönzés kivonás, növelés, csökkentés, összehasonlítás, tizedesjegy helyesbítése, szorzás és osztás. Az ALU előjel nélküli egész számokkal működik. A két-operandusos műveleteknél: összeadás (ADD), összeadás-hordozás (ADDC) és kivonás-kölcsönzés (SUBB) az akkumulátor az első operandus, és megkapja a művelet eredményét. A második operandus lehet a kiválasztott munkaregiszter-bank munkaregisztere, regiszter-közvetett és közvetlen belső adatmemória-regiszter, vagy azonnali adatbájt. Ezek a műveletek a processzorállapotszóban (PSW) a túlcsordulás, a átvitel, a közbeiktatás és a paritásjelzőket érintik. A hordozóbit használata lehetővé teszi az összeadás (ADDC) és a kivonás (SUBB) műveletek pontosságának megszorzását. Az összeadás és kivonás műveletei az előjel figyelembe vételével végezhetők el programvezérlés a PSW regiszter túlcsordulási jelzője (OV). Az intermediate carry flag (AC) biztosítja, hogy az aritmetikai műveletek binárisan kódolt decimális kódban történjenek. A növelési és csökkentési műveletek nem befolyásolják a jelzőket. Az összehasonlító műveletek nem befolyásolják sem a céloperandust, sem a forrásoperandumot, de a átviteli jelzőket igen. Három aritmetikai művelet van, amelyeket csak az akkumulátoron hajtanak végre: két utasítás az A akkumulátor tartalmának ellenőrzésére (JZ, JNZ), valamint egy decimális korrekciós utasítás a BCD kódok hozzáadásához. A szorzási művelet során az A tároló tartalmát megszorozzuk a B regiszter tartalmával, és az eredményt a következőképpen helyezzük el: az alsó bájt a B regiszterben, a magas bájt az A regiszterben van. az osztásból származó egész szám az A tárolóba, az osztás maradéka a B regiszterbe kerül. Logikai parancsok bájtváltozókkal A parancsrendszer lehetővé teszi a logikai műveletek végrehajtását: "AND", "OR", "EXCLUSIVE OR" a akkumulátor regiszter (A) és a forrás byte. A második operandus (forrás bájt) ebben az esetben egy működő regiszter lehet a kiválasztott munkaregiszter-bankban; egy belső RAM-regiszter, amely regiszter-közvetett címzéssel van megcímezve; közvetlenül címezhető belső RAM cellák és speciális célú regiszterek; azonnali érték. Ezek a logikai műveletek bármely közvetlen címezhető belső RAM regiszteren vagy speciális célú regiszteren megvalósíthatók, második operandusként az A tároló tartalmát vagy az azonnali adatokat használva. Vannak logikai műveletek, amelyeket csak az akkumulátoron hajtanak végre: alaphelyzetbe állítás és invertálás az A mind a nyolc bitjét; ciklikus eltolás balra és jobbra; ciklikus eltolás balra és jobbra, figyelembe véve a hordozási zászlót; a szenior és a junior tetrad (nibbles) helycseréje az akkumulátoron belül. Adatátviteli parancsok A program ROM-ban tárolt karaktertáblák (kódok) adatátviteli parancsokkal választhatók ki közvetett címzés segítségével. A konstans bájt az alapregiszter (PC vagy DPTR) és az indexregiszter (A tartalom) összegével címzett programmemória helyről vihető át az akkumulátorba. Ez például kényelmes eszközt biztosít egy ASCII-kód hétszegmenses kóddá alakítására szolgáló algoritmus megvalósítására. A 256 bájtos külső adat RAM blokk bármely cellája kiválasztható regiszter indirekt címzésével az R0 vagy R1 pointer regisztereken keresztül (kiválasztott működő regiszter bank). A 64 KB-os külső RAM-címtartományon belüli cella a DPTR adatmutató-regiszteren keresztüli regiszter indirekt címzésével is kiválasztható. A közvetlen címezhető regiszterek közötti átviteli parancsok lehetővé teszik az érték bevitelét a portról a belső RAM cellába anélkül, hogy működő regisztereket vagy akkumulátort használna. Egy logikai processzorban bármely előremenő bit elhelyezhető egy hordozóbitben, és fordítva. Az akkumulátor tartalma cserélhető a munkaregiszterek (a kiválasztott bank) és a belső RAM cellák regiszter indirekt címzéssel címzett tartalmával, valamint a közvetlenül címzett belső RAM cellák tartalmával és a tartalmakkal. speciális célú nyilvántartások. Az akkumulátor tartalmának alacsony nibble-je (3-0 bitek) felcserélhető a regiszter indirekt címzésével kiválasztott belső RAM-cellák tartalmának alacsony nibble-jével. Bitprocesszorra vonatkozó utasítások A bitprocesszor az MCS51 mikrokontrollercsalád architektúrájának része, és független bitprocesszornak tekinthető. A bitprocesszor utasításokat hajt végre, saját bitcímezhető RAM-mal és saját I/O-val rendelkezik. A bitutasítások 128 bites (0-127) közvetlen címzést biztosítanak tizenhat belső RAM-helyen (20H-2FH hely), valamint a speciális célú regiszterek közvetlen bitenkénti címzését, amelyek címei nyolcszorosai. Az egyedileg címezhető bitek mindegyike „1”-re állítható, „0”-ra állítható, invertálható, tesztelhető. Az átmenetek megvalósíthatók: ha a bit be van állítva; ha a bit nincs beállítva; elágazás, ha a bit be van állítva, ennek a bitnek a visszaállításával; egy bit felülírható a hordozóbitre (abból). Bármilyen közvetlenül címezhető bit és a carry flag között elvégezhetők az "ÉS", "VAGY" logikai műveletek, ahol az eredményt a carry flag bitjébe írjuk be. A bitenkénti feldolgozási utasítások komplex kombinatorikus logikai függvények megvalósítását és a felhasználói programok optimalizálását biztosítják. Elágazó és vezérlő átviteli parancsok A programmemória címterének nincs olyan oldalszervezése, amely lehetővé teszi a programtöredékek szabad mozgatását a címtéren belül az oldalszám újratöltése (módosítása) nélkül. Az egyes programtöredékek áthelyezése biztosítja, hogy az áthelyezhető programmodulokat különböző programok használhatják. A 16 bites ugrás és szubrutinhívás utasítások lehetővé teszik a 64 KB-os programmemória címterének bármely pontjára történő ugrást. A 11 bites ugrás és szubrutinhívás utasítások ugrásokat biztosítanak egy 2K programegységen belül. A parancsrendszerben vannak parancsok a következő program kezdőcíméhez képest feltételes és feltétel nélküli ugráshoz, a (PC)-128-tól a (3C)+127-ig terjedő tartományban. Az egybites tesztparancsok feltételes ugrásokat tesznek lehetővé az előremenő bitek "0" vagy "1" állapotára. Az akkumulátor tartalmának ellenőrzésére vonatkozó utasítások (nulla / nem nulla esetén) feltételes ugrásokat tesznek lehetővé az A tartalmára vonatkozóan. Az utasításrendszerben a közvetett regiszterugrások az alapregiszterhez (a DPTR vagy a PC tartalmához) viszonyított elágazást biztosítanak egy Az akkumulátorban található eltolás A. Regisztercímzés A regisztercímzés a kiválasztott munkaregiszter-bank nyolc munkaregiszterének elérésére szolgál (ezek a regiszterek közvetlen címzéssel és közvetett regisztercímzéssel választhatók ki a belső adat-RAM normál celláiként). A regisztercímzés az A, B, AB (kettős regiszter), DPTR és a C átviteli jelző eléréséhez használatos. A regisztercímzés segítségével megkaphatja a hárombájtos közvetlen címzési parancsok kétbájtos megfelelőjét. Közvetlen címzés A közvetlen bájtcímzés a belső adatmemória (RAM) helyeinek (0-127) és speciális célú regiszterek elérésére szolgál. A bitenkénti közvetlen címzés a 20H-2FH helyeken található, egyedileg címezhető 128 bithez és a speciális regiszterekben lévő külön címezhető bitekhez való hozzáférésre szolgál. A közvetlen címkód byte magas bitje a RAM-ban vagy a speciális célú regiszterekben található, egyedileg címezhető bitek két csoportjának egyikét választja ki. A közvetlenül címezhető bitek 0-127 (00H-7FH) címmel egy 16 belső RAM cellából álló blokkban helyezkednek el, 20H-2FH címmel. Ezek a cellák szekvenciálisan vannak számozva a legkisebb jelentőségű bájt legkevésbé jelentős bitjétől a legjelentősebb bájt legjelentősebb bitjéig. A speciális célú regiszterekben a külön címezhető bitek a következőképpen vannak számozva: a cím öt legjelentősebb bitje egybeesik magának a regiszternek a címének öt legjelentősebb bitjével, a három legkisebb jelentőségű bit pedig egy különálló ibt helyét határozza meg a regiszteren belül. A regisztráció. Regiszter Indirekt címzés A regiszter közvetett címzése a belső adat-RAM cellák elérésére szolgál. A kiválasztott regiszterbank R10, R1 regiszterei mutatóregiszterekként szolgálnak. A PUSH és POP parancsok a veremmutató (SP) tartalmát használják. A regiszter indirekt címzése a külső adatmemória eléréséhez is használható. Ebben az esetben az R0 és R1 mutatóregiszterek (a munkaregiszterek kiválasztott bankja) segítségével kiválasztunk egy cellát egy 256 bájtos külső adatmemória blokkjából. A blokk számát a P2 port tartalma előre meghatározza. Egy 16 bites adatmutató (DPTR) használható a külső adatmemória címterének bármely helyéhez 64 KB-ig. Közvetlen címzés A közvetlen címzés lehetővé teszi az utasításban kifejezetten meghatározott állandók kiválasztását a program memória címteréből. Közvetett regisztercímzés az alap- és indexregiszterek összegével Indirekt regisztercímzés az összeggel: az alapregiszter plusz az indexregiszter (az A tároló tartalma) leegyszerűsíti a programmemóriában tárolt táblázatok megtekintését. A táblázat bármely bájtja kiválasztható a DPTR vagy PC tartalmának és az A tartalmának összege által meghatározott címen. A parancsrendszerben használt jelölések és szimbólumok táblázata
Megnevezés, szimbólum Célja
DE Akkumulátor
Rn Az aktuálisan kiválasztott regisztrációs bank nyilvántartásai
r A betöltött regiszter parancsban megadott száma
közvetlen Közvetlenül címezhető 8 bites belső adathely cím, amely lehet belső adat RAM hely (0-127) vagy SFR (128-255)
@rr Közvetetten címezhető 8 bites belső adat RAM hely
adatok8 8 bites azonnali adatok a CPC-hez
adatokH Azonnali 16 bites adatok MSB-jei (15-8).
adatokL Alacsony bitek (7-0) az azonnali 16 bites adatokból
addr11 11 bites célcím
addrL A célcím legkevésbé jelentős bitjei
disp8 8 bites előjeles offset byte m
bit Közvetlenül címezhető bit, amelynek címe tartalmazza a belső adat RAM-ban vagy SFR-ben található CPC-t
a15, a14...a0 Célcím bitjei
(X) Az X elem tartalma
((X)) Tartalom az X elemben tárolt címen
(X)[M] Kisütés M elem X
+ - * / ÉS VAGY XOR /X Műveletek: összeadás kivonás szorzás osztás logikai szorzás (ÉS művelet) logikai összeadás (OR művelet) modulo 2 összeadás (kizárólagos VAGY) X elem megfordítása

A függvénymnemonikák egyedileg a címzési módszerek és adattípusok meghatározott kombinációihoz kapcsolódnak. Összesen 111 ilyen kombináció lehetséges a parancsrendszerben. A táblázat a parancsok listáját mutatja ábécé sorrendben.

Mnemonika Funkció Zászlók
ACALL csapat Abszolút szubrutinhívás
ADD A csapat,<байт-источник> Kiegészítés AC, C, OV
ADDC A csapat,<байт-источник> Kiegészítés hordással AC, C, OV
AJMP csapat Abszolút átmenet
ANL csapat<байт-назначения>, <байт-источникa> Logika "ÉS"
ANL C csapat,<байт-источникa> Logikai "ÉS" változó bitekhez
CJNE csapat<байт-назначения>, <байт-источник>, <смещение> Hasonlítsa össze és ugorjon, ha nem egyenlő C
A CLR csapat Akkumulátor visszaállítása
CLR csapat Reset bit C, bit
CPL A csapat Ak umula ora inverzió
CPL csapat Bit inverzió C, bit
DA A csapat Akkumulátor decimális korrekció hazugságra AC, C
DEC csapat<байт> Csökkenés
DIV AB csapat Osztály C, OV
DJNZ csapat<байт>, <смещение> Ha nem nulla, csökkentse és ugorjon
Team I.N.C.<байт> Növekedés
Team INC DPTR Adatmutató növekménye
Team J.B. , Ugrás, ha bit be van állítva
JBC csapat , Elágazás, ha a bit be van állítva, és állítsa vissza ezt a bitet
Team J.C. Ugrás, ha a hordozás be van állítva
JMP @A+DPTR parancs Közvetett átmenet
JNB csapat , Ugrás, ha a bit nincs beállítva
Team JNC Ugrás, ha nincs átvitel beállítva
JNZ csapat Ugrás, ha az akkumulátortartalom nem nulla
JZ csapat Ugrás, ha az akkumulátortartalom 0
LCALL csapat hosszú hívás
LJMP csapat hosszú átmenet
MOV csapat<байт-назначения>, <байт-источника> Továbbítás változó-byte
MOV csapat<бит-назначения>, <бит-источника> Adatbit küldése C
Parancs MOV DPTR,#data16 Adatmutató betöltése 16 bites konstanssal
MOVC utasítás A,@A+( ) Bájt mozgatása a programmemóriából
MOVX csapat<байт приемника>, <байт источника> Külső memóriába (külső memóriából) adatok küldése
MUL AB csapat Szorzás C, OV
NOP csapat Nincs művelet PC
ORL csapat<байт-назначения>, <байт-источникa> Logikai "OR" változó-byte-okhoz
ORL C csapat,<бит источникa> Logikai "OR" a változó bitekhez C
POP csapat Olvasás a veremből
PUSH parancs Írás a verembe
RET csapat Visszatérés a szubrutinból
RETI csapat Visszatérés a megszakításból
RL A csapat Tolja balra az akkumulátor tartalmát
Team RLC A Az akkumulátor tartalmát balra tolja a hordozásjelzőn keresztül
RR A csapat Tolja jobbra az akkumulátor tartalmát
Team RRC A Mozgassa az akkumulátor tartalmát jobbra a hordozásjelzőn keresztül C
A SETB csapata Állítsa be az ütemet C
SJMP csapat<метка> Rövid átmenet
SUBB A csapat,<байт источника> Kivonás kölcsönnel AC, C, OV
SWAP A csapat Notebookok cseréje az akkumulátor belsejében
XCH A csapat,<байт> Akkumulátor tartalmának felcserélése byte változóval
XCHD A,@R1 csapat Notebook csere
XRL csapat<байт-назначения>, <байт-источникa> Logikai XOR változó bájtokhoz