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
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 |
|
|
Tevékenységek: |
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.
- Aritmetikai parancsok;
- Logikai parancsok;
- Adatátviteli parancsok;
- Bitprocesszor parancsok;
- Elágazási és átviteli parancsok.
- 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
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 |