Počítače Okna Internet

Mikrokontroléry MCS-51. Blokové schéma, ALU, datová paměť. Mikrokontroléry z rodiny mcs51 Jak vytvořit port pro příjem mcs 51

Základní verze MCS-51 Stručné informace. Moderní 8bitové mikrokontroléry (MC) mají takové zdroje řízení v reálném čase, pro které se dříve používalo drahé vícečipové uspořádání ve formě samostatných mikropočítačových desek, a to:

● mít dostatečnou kapacitu paměti, její fyzické a logické rozdělení na paměť programovou a datovou (architektura Harvard) a příkazový systém orientovaný na provádění řídicích algoritmů;

● zahrnují všechna zařízení (procesor, ROM, RAM, vstupní/výstupní porty, systém přerušení, nástroje pro zpracování bitových informací atd.) potřebná k implementaci mikroprocesorového řídicího systému s minimální konfigurací. V 70. letech 20. století firma Intel vyvinul a zvládl komerční výrobu rodiny 8bitových mikrokontrolérů MCS-48, spojených řadou společných vlastností (kapacita číslic, příkazový systém, sada základních funkčních bloků atd.). Základní verze této rodiny obsahuje:

● 8bitový procesor;

● vnitřní programová paměť (1/2/4K bajtů);

● vnitřní datová paměť (64/128/256 bajtů);

● až 27 interních a 16 externích I/O linek;

● jeden 8bitový čítač časovače;

● jednoúrovňový systém přerušení se dvěma zdroji požadavků. V roce 1980 stejná společnost vyvinula novou rodinu osmibitových mikrokontrolérů MCS-51, která je kompatibilní s architekturou rodiny MCS-48, ale má širší možnosti.

Architektura rodiny MCS-51 se ukázala být natolik úspěšná, že je dodnes jedním ze standardů pro 8bitové MK. Proto byly jako předmět studia vybrány MC této rodiny, které jsou široce používány v relativně jednoduchých řídicích systémech.

Pro rodinu MCS-51 byly vyvinuty různé nástroje pro přípravu programů (kompilátory, hardwarově-softwarové emulátory atd.) a existuje velké množství knihoven standardních podprogramů. Rodina zahrnuje různé modifikace mikroobvodů (čipové verze) mikrokontrolérů. Články v této sekci dostatečně podrobně pojednávají o základní verzi mikrokontrolérů rodiny MCS-51 (mikroobvod 8051 odpovídá domácímu analogu KP1816BE51), nejjednodušší z hlediska struktury a funkce az hlediska porozumění.

Následné řady mikroobvodů se při zachování kompatibility se základní verzí od ní liší vylepšenou výrobní technologií, elektrickými parametry, přídavným hardwarem a funkčností. Následující články jsou věnovány konstrukčním a funkčním vlastnostem následných úprav mikroobvodů rodiny MCS-51.
Zobecněné blokové schéma MCS–51. Složení MC, jehož zobecněné blokové schéma je znázorněno na Obr. 7.1.1, zahrnuje:

● 8bitová centrální procesorová jednotka CPU, skládající se z ALU, ovládací zařízení U u a generátor adres F;

● maskovaná ROM s kapacitou 4K bajtů pro ukládání programů;

● 128 bajtů RAM pro ukládání dat;

● čtyři programovatelné porty Р0–Р3 pro vstup a výstup informací;

● Blok sériového rozhraní BPI pro výměnu informací s externími zařízeními přes dvouvodičovou linku;

● blok časovačů/počítadel BT/C pro udržení režimu v reálném čase;

● Blok přerušení BP pro organizaci přerušení spustitelných programů. Tyto fondy tvoří rezidentčást mikrokontroléru umístěná přímo na čipu. MC obsahuje velké množství registrů, které jsou přiřazeny samostatným funkčním blokům a nejsou ve schématu znázorněny.

Schéma také nezobrazuje řídicí obvody. Oboustranná výměna informací mezi bloky probíhá přes interní 8-bit datová sběrnice SD-8.

Interní 16bit adresní sběrnice SHA-16, adresa vytvořená v CPU je zobrazena v ROM (12 bitů adresy) a v RAM (8 nízkých bitů).

Při použití externí paměti je 8 bitů nižšího řádu vyvedeno na port P0 a 3 nebo 8 bitů vyššího řádu je vyvedeno na port P2.

Pro logické rozšíření rozhraní se využívá kombinace funkcí portových linek. Jako příklad na Obr. 7.1.1 tečkovaná čára ukazuje čáry portu P3, který funguje alternativní funkce přenosu řídicího signálu, jejichž účel bude diskutován níže. Pro vytvoření generátoru vnitřních hodin je na výstupy mikroobvodu MK připojen křemenný rezonátor a dva kondenzátory (obr. 7.1.1). Místo interního generátoru hodin lze pro synchronizaci použít externí oscilátor. Konvenční grafické označení mikroobvodu MK je na Obr. 7.1.2, označení a účel závěrů - v tabulce. 7.1.1. Zvažte funkční bloky MK a princip jejich fungování. Aritmeticko-logický prostředek. Aritmeticko-logická jednotka je určena k provádění aritmetických (včetně násobení a dělení) a logických operací na osmibitových operandech, dále operacím logického posunu, nulování, nastavení atd. Blokové schéma ALU je na obr. 7.1.3.

ALU zahrnuje

● paralelní osmibitový zmije SM kombinační typ se sekvenčním přenosem, provádějící aritmetické (sčítání a odčítání) a logické (sčítání, násobení, disparita a identita) operace;

baterie A, poskytování funkcí hlavního aritmetického registru;

Registrovat B, sloužící k realizaci operací násobení a dělení nebo jako doplňkový superoperační registr, jehož funkce definuje uživatel;

registrů(programově nedostupné) dočasné úložištěРВХ1, РВХ2, určený pro příjem a ukládání operandů po dobu trvání operace;

● ROM konstanty ROM ukládající opravný kód pro binárně-decimální reprezentaci dat, kód masky pro bitové operace a konstantní kód;

registr stavových slov programu PSW, oprava stavu ALU po provedení operace. V tabulce. 7.1.2 poskytuje informaci o přiřazení bitů jednotlivým číslicím registru PSW. Ovládací zařízení. Řídicí jednotka CPU (CU) zamýšlený ke koordinaci společné práce všech MK uzlů pomocí generovaných hodinových a řídicích signálů. Zahrnuje (obr. 7.1.4):

synchronizační a řídicí jednotka USU, který generuje hodinové impulsy, které nastavují cykly stroje a jejich jednotlivé stavy (S) a fáze (P), a v závislosti na provozním režimu MK generuje potřebnou sadu řídicích signálů. Pro provedení instrukce je přidělen jeden, dva nebo čtyři strojové cykly.

Každý strojový cyklus má šest států S1–S6, A každý stav zahrnuje dvoufázový P1, P2, jejichž trvání je periodou kmitání hodinového generátoru T 0SC.

Délka cyklu stroje je 12T 0SC. Všechny cykly stroje jsou stejné, počínaje fází S1P1 a konče fází S6P2.

Kromě hodinových impulzů generuje hodinové zařízení v každém strojovém cyklu dva (někdy jeden) zábleskové signály dolního bytu adresy ALE jako kladný impulz ve fázích S1P2-S2P1 a S4P2-S5P1. Časové diagramy na Obr. 7.1.5 znázorňují organizaci cyklů stroje;

● RK příkazový registr, příkazový dekodér DC a PLA, umožňující v každém strojním cyklu vytvořit sadu mikrooperací v souladu s mikroprogramem prováděného příkazu;

● vstupně-výstupní logika LVV pro příjem a vysílání signálů, které zajišťují výměnu informací mezi MC a externími zařízeními přes porty Р0–Р3;

● Registr PCON, který má jeden povolený bit SMOD na pozici PCON.7 pro zdvojnásobení rychlosti přenosu dat sériového portu. Zbývající bity jsou rezervovány pro budoucí použití.
Generátor adres. Tvarovač adres (FA) nebo počítač příkazů PC, zamýšlený k vytvoření aktuální adresy 16bitové programové paměti a 8/16bitové adresy externí datové paměti. Zahrnuje (obr. 7.1.6):

● 16bitový vyrovnávací paměť B, která komunikuje mezi 8bitovou datovou sběrnicí SD a 16bitovou interní sběrnicí (IS) generátoru adres;

● Schéma přírůstku SI pro zvýšení hodnoty aktuální adresy paměti programu o jednu;

● registr pro uložení aktuální adresy PTA příkazů přicházejících z SI;

● Registr datového ukazatele DPTR , skládající se ze dvou 8bitových registrů DPH a DPL. Slouží k uložení 16bitové adresy externí datové paměti a lze jej použít jako dvě nezávislá softwarově přístupná RON;

● Registr generátoru adres RFA pro uložení adresy výkonné 16bitové programové paměti nebo 8/16bitové adresy externí datové paměti. Tento registr se také používá k přenosu dat přes port P0 do externích zařízení při provádění instrukcí MOVX @Rm, A a MOVX @DPRT, A.

Datová paměť. Datová paměť zamýšlený pro příjem, ukládání a vydávání informací používaných v procesu provádění programu. Vnitřní (rezidentní) paměť (obr. 7.1.7) dat tvoří RAM o kapacitě 128 bajtů, ukazatel zásobníku SP, registr adres RAM RA a dekodér Dsh. Ukazatel zásobníku SP je 8bitový registr, který přijímá a ukládá adresu umístění zásobníku, ke kterému byl naposledy přístup. Po resetu se ukazatel zásobníku nastaví na adresu 07H, která odpovídá začátku zásobníku s adresou 08H. Adresový registr RA spolu s dekodérem Dsh umožňuje přístup k požadované paměťové buňce obsahující bajt nebo bit informace.

MK poskytuje možnost zvýšit objem datové paměti až na 64 KB připojením externí úložná zařízení. Jako příklad na Obr. 7.1.8 ukazuje stránkování externí datové paměti VPD s kapacitou 2 kB pomocí instrukcí jako MOVX @ Rm(m = 0; 1). V tomto případě port P0 funguje jako multiplexovaná adresová/datová sběrnice, tři linky portu P2 se používají k adresování externí stránky RAM a zbývajících pět linek lze použít jako I/O linky.
Na Obr. 7.1.9 ukazuje časové diagramy cyklů čtení a zápisu, když MK pracuje s externí RAM. Diagramy ukazují:

● PCN - vysoký bajt počítadla příkazů PC;

● DPL, DPH - dolní a horní bajty registru datových ukazatelů DPTR, který se používá jako registr nepřímého adresování v instrukcích MOVX @DPTR,A a MOVX A,@DPTR;

● P2 SFR - západky portu P2;

● Rm (m = 0, 1) - registry používané v instrukcích MOVX @Rm, A a MOVX A, @Rm jako registry nepřímých adres;

● Z - stav vysokého odporu;

● D - doba, po kterou jsou do mikrokontroléru zadávána data z portu P0. Paměť programu. Paměť programu je určena k ukládání programů, má svůj vlastní adresní prostor (oddělený od datové paměti) a je pouze pro čtení. Jeho součástí je dekodér Dsh a ROM (obr. 7.1.10). Paměť programu je adresována 16bitovým PC čítačem, takže její maximální kapacita je 64 kB. Vnitřní programovou paměť tvoří ROM s kapacitou 4K bajtů a 12bitový dekodér. Externí paměť je zapojena podle schématu na obr. 7.1.11. Pokud je na pin ¯EA MCU přivedeno 0 V (jak je znázorněno na obr. 7.1.11), vnitřní programová paměť je deaktivována. Všechny přístupy do paměti začínají na adrese 0000h. Když je pin ¯EA připojen ke zdroji napájení, dojde automaticky k přístupu do interní programové paměti na adresách 0000h–FFFFh a do externí programové paměti na adresách 0FFFh–FFFFh.

Pro čtení externí programové paměti MK je generován signál ¯PSEN. Při práci s vnitřní pamětí se čtený signál nepoužívá. Při přístupu k externí programové paměti se vždy vytvoří 16bitová adresa. Nízký bajt adresy je přenášen přes port P0 v první polovině strojového cyklu a je fixován řezem ALE stroboskopu v registru.V druhé polovině cyklu se port P0 používá k zadání datového bajtu z externí paměti do MCU.

Vysoký bajt adresy je přenášen přes port P2 po celou dobu přístupu do paměti.

Časové diagramy cyklů čtení a zápisu při provozu MK s externí RAM jsou na obr. 7.1.12.
Diagramy ukazují:

● PCL OUT - výstup nízkého bajtu počítadla příkazů PC;

● PCN OUT - vydání horního bytu čítače příkazů PC;

● DPH je horní bajt registru datových ukazatelů DPTR, který se používá jako registr nepřímého adresování v instrukcích MOVX @DPTR,A a MOVX A,@DPTR;

● P2 SFR - západky portu P2;

● INS IN - vstup instrukčního (příkazového) bajtu z paměti programu;

● ADDR OUT - vydání dolního bajtu adresy externí datové paměti z registrů Rm (m = 0, 1) nebo z registru DPL (dolní registr DPTR). I/O porty. Přiřazení portu. Porty P0, P1, P2, P3 zamýšlený k výměně informací mezi MK a externím zařízením a také k provádění následujících funkcí:

● dolní bajt adresy А7…A0 je vyveden přes port Р0; bajt dat je vyveden z MK a zapsán do MK při práci s externí programovou pamětí a externí datovou pamětí (s časovým dělením);

● vysoký bajt adresy A15…A8 je vyveden přes port P2 při práci s externí programovou pamětí a externí datovou pamětí (pouze při použití příkazů MOVX A,@DPTR a MOVX @DPTR,A);

● Linky portu P3 lze použít k provádění alternativních funkcí, pokud je do zámku tohoto řádku zadáno 1, jinak je na výstupu linky pevně nastavena 0. Alternativní funkce výstupů portu P3 jsou uvedeny v tabulce. 7.1.3.

Schematické rysy portů

Na Obr. 7.1.13 ukazuje diagramy pro jeden kanál každého z portů MK, včetně:

● západka pro fixaci bitu přijatých dat;

● výstupní zesílení kaskáda(Řidič);

● uzel spojení s koncový stupeň (kromě P2);

● obvod pro přenos datového bitu z výstupní strany portu sestávající z vyrovnávacích pamětí B2 a B3 (pro port P4). Západka je D-flip-flop, taktovaný interním signálem "Write to latch". Část dat z přímého výstupu D-flip-flopu může být načtena softwarově přes vyrovnávací paměť B1 signálem „Read latch“ na linku interní datové sběrnice (SD) MK.

Výstupní stupeň port P0 je invertor, jehož vlastnosti se projevují tím, že zátěžový tranzistor VT2 se otevírá pouze při přístupu k externí paměti (při přenosu adres a dat přes port). Ve všech ostatních režimech je zátěžový tranzistor uzavřen. Proto, aby bylo možné použít P0 (obr. 7.1.13, a) jako univerzální výstupní port, musí být k jeho výstupům připojeny externí zatěžovací odpory. Při zápisu 1 do západky portu se invertorový tranzistor VT1 vypne a externí pin portu P0.X se převede do stavu vysokého odporu. V tomto režimu může jako vstup sloužit pin portu P0.X. Pokud je port P0 použit jako obecný I/O port, každý z jeho pinů P0.X může fungovat nezávisle jako vstup nebo jako výstup. Výstupní stupně porty P1, P2, P3 (obr. 7.1.13, b, c, d) vyrobeno podle obvodů měničů s vnitřním zatěžovacím rezistorem, který se používá jako tranzistor VT2.

Pro zkrácení spínacího času při přechodu výstupů portu ze stavu 0 do stavu 1 je paralelně se zátěžovým tranzistorem VT2 zaveden další tranzistor VT3. Tranzistor VT3 se pomocí prvků v obvodu hradla odblokuje na dobu rovnající se dvěma periodám oscilace hlavního krystalového oscilátoru (během fází S1P1, S2P2 cyklu stroje). Výstupní stupně porty P0, P2 (obr. 7.1.13, A, c) pomocí MX multiplexeru lze připojit buď k latchům nebo k interním sběrnicím "Adresa / data" a "Adresa". Koncový stupeň portu P1 (obr. 7.1.13, 6) je trvale připojen k západce.

Pokud je pin portu P3 výstup a jeho západka obsahuje 1, pak je jeho koncový stupeň řízen hardwarově interním signálem „Funkce alternativního výstupu“, který zajišťuje odpovídající alternativní funkci, tzn. na externím kolíku se vytvoří jeden ze signálů ¯WR, ¯RD nebo RxD. Pokud je pin portu použit jako vstup, pak je alternativní signál, který na něj přichází (TxD, ¯INT0, ¯INT1, T0, T1), přenášen na vnitřní linku „Alternative Input Function“.

Režim zápisu do portu.

Když je vydán příkaz k zápisu do portu, nová hodnota se zapíše do západky ve fázi S6P2 a odešle se přímo na výstupní kolík portu ve fázi S1P1 příštího strojového cyklu.

Režim čtení portu

Příkazy pro čtení portu čtou informace přímo z externích pinů pinů portu nebo z výstupů západky. V prvním případě je datový bit z výstupu portu načten programově přes buffer B2 signálem „Read outputs“ na linku interní datové sběrnice (SD) MK. Všimněte si, že signály "Write to latch", "Read latch", "Read pins" jsou generovány hardwarem, když jsou provedeny odpovídající příkazy.

Ve druhém případě je implementován tzv. režim "Read-Modify-Write", ve kterém příkaz přečte signál stavu latch, v případě potřeby jej upraví a následně zapíše zpět do latch. Režim Read-Modify-Write je implementován, když jsou provedeny následující příkazy: ANL, ORL, XRL, JBC; CPL; I.N.C.; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Čtení informací z výstupů latch eliminuje chyby při interpretaci logické úrovně na pinu portu. Přečtěte si pokračování článku v.

V současné době různé společnosti vyrábějí mnoho modifikací a analogů této rodiny, a to jak od společnosti Intel, tak od jiných výrobců, frekvence hodin a velikost paměti se zvýšily desetkrát a stále rostou. Doplňuje se také sada vestavěných LSI modulů, do velkého množství moderních modelů je zabudován vysokorychlostní rezidentní ADC, který má až 12 a nyní může být bitů více. Ale srdcem rodiny MSS51 jsou BIS 8051, 80C51, 8751, 87C51, 8031, 80C31 od Intelu, jejichž první vzorky byly vydány v roce 1980.

Mikrokontroléry řady MCS51 jsou vyrobeny pomocí vysoce kvalitní technologie n-MOS (řada 8ХХХ, analogová - řada 1816 v Rusku a Bělorusku) a technologie k-MOS (řada 8ХСХХ, analogová - řada 1830). Druhý znak za 8 znamená: 0 - žádná EEPROM na čipu, 7 - 4K EEPROM s UV mazáním. Třetí znak: 3 - ROM bude krystalizována, 5 - pokud není ROM, pak je na čipu maskovaná ROM.

A tak 80S51 je k-MOS LSI s maskou ROM na čipu, 8031 ​​je n-MOS LSI bez programové paměti (ROM, EPROM) na čipu, 8751 je n-MOS LSI s rezidentním (umístěným na čipu) RPROM s ultrafialovým výmazem. LSI 8751 budeme nadále zvažovat, v případě potřeby učiníme výhrady k rozdílům v jiných obvodech s odkazem na parametry, které byly zveřejněny pro první sériové LSI. V případě potřeby naleznete další informace o všech moderních úpravách ve firemních adresářích a technické dokumentaci.

A. Obecná charakteristika a přiřazení pinů

Rodina MCS51 je založena na pěti modifikacích MK (s identickými hlavními charakteristikami), přičemž hlavním rozdílem mezi nimi je implementace programové paměti a spotřeba energie (viz tabulka 3.1). Mikrokontrolér je osmibitový, tzn. má instrukce pro zpracování osmibitových slov, má architekturu Harvard, hodinová frekvence pro základní vzorky rodiny je 12 MHz.

Tabulka 3.1.

mikroobvody

Vnitřní paměť programu, bajty

Typ paměti programu

Vnitřní datová paměť, bajty

Hodinová frekvence, MHz

Spotřební proud, mA

MK 8051 a 80C51 obsahují programovou paměť ROM programovatelnou maskou s kapacitou 4096 bytů a jsou určeny pro použití v hromadné výrobě. MK 8751 obsahuje 4096 byte EPROM s UV mazáním a je vhodný ve fázi vývoje systému při ladění programů, stejně jako při výrobě v malých sériích nebo při vytváření systémů, které vyžadují

periodická úprava.

MK 8031 ​​​​a 80C31 neobsahují vestavěnou programovou paměť. Ty, stejně jako dříve popsané úpravy, mohou využívat až 64 KB externí programové paměti a efektivně se používají v systémech, které vyžadují podstatně větší (než 4 KB na čipu) programovou paměť ROM.

Každý MK rodiny obsahuje rezidentní datovou paměť o kapacitě 128 bajtů s možností rozšíření celkového množství dat RAM až na 64 KB pomocí externích IC RAM.

    centrální osmibitový procesor;

    4K programová paměť (pouze 8751 a 87C51);

    128 bajtů datové paměti;

    čtyři osmibitové programovatelné vstupně-výstupní porty;

    dva 16bitové multimódové časovače/čítače;

    systém autovektorových přerušení s pěti vektory a dvěma softwarově řízenými úrovněmi priority;

    sériové rozhraní, včetně univerzálního duplexního transceiveru schopného pracovat ve čtyřech režimech;

    generátor hodin.

Příkazový systém MK obsahuje 111 základních příkazů ve formátu 1, 2 nebo 3 bajty. Mikrokontrolér má:

    32 univerzálních registrů RON, organizovaných jako čtyři banky po osmi registrech, každý s názvy R0 ​​... R7, výběr konkrétní banky určuje program nastavením odpovídajících bitů ve stavovém registru programu PSW;

    128 softwarově řízených příznaků (bitový procesor, viz níže);

    soubor registrů speciálních funkcí, které ovládají prvky MC. Mikrokontrolér má následující provozní režimy:

jeden). Generální reset. 2).Normální provoz. 3). Režim nízké spotřeby a režim nečinnosti. 4). Režim programování rezidentní EPROM, pokud existuje.

Zde se zaměříme na první dva režimy provozu, podrobný popis složení a provozu MC ve všech režimech je uveden v příloze P1.

RON a zóna bitového procesoru jsou umístěny v adresním prostoru rezidentní RAM s adresami od 0 do 80h.

V horní zóně adres rezidentní RAM jsou registry speciálních funkcí (SFR, Special Function Registers). Jejich účel je uveden v tabulce. 3.2.

Tabulka 3.2.

Označení

název

baterie

Registrovat B

Registr stavu programu

ukazatel zásobníku

Datový ukazatel. 2 bajty:

nízký bajt

vysoký bajt

Přerušit registr priorit

Registr povolení přerušení

Registrace režimu časovače/počítadla

Registr ovládání časovače/počítadla

Časovač/počítač 0. Vysoký bajt

Časovač/počítač 0. Nízký bajt

Časovač/počítač 1. Vysoký bajt

Časovač/počítač 1. Nízký bajt

Správa sériového portu

Serial Buffer

Řízení spotřeby

* - registry, dovolující kousek po kousku oslovování

Pojďme se rychle podívat na funkce SFR uvedené v tabulce 3.2.

baterie ACC - akumulátorový registr. Týmy navržené k práci

vy s akumulátorem použijte mnemotechnickou pomůcku "A", např. MOV A, R2 . Mnemotechnická pomůcka "ACC" se používá například při adresování akumulátoru bit po bitu. Symbolický název pátého bitu akumulátoru při použití assembleru A5M51 tedy bude následující: ACC. 5.

Registrovat PROTI . Používá se při operacích násobení a dělení. Pro další instrukce lze registr B považovat za dodatečný registr zápisníku.

Registrovat státy programy PSW obsahuje informace o stavu programu a nastavuje se částečně automaticky výsledkem provedené operace, částečně uživatelem. Označení a účel bitů registru jsou uvedeny v tabulkách 3.3 a 3.4.

Tabulka 3.3.

Označení

Tabulka 3.4.

Označení

Přiřazení bitů

Přístup k rytmu

Nosit vlajku. Změny během provádění řady aritmetických a logických instrukcí.

Hardware nebo software

Dodatečná nosná vlajka. Nastaveno/vymazáno hardwarem během provádění instrukcí sčítání nebo odečítání pro indikaci přenosu nebo vypůjčení v bitu 3 při generování nízkého kousnutí výsledku (D0-D3).

Hardware nebo software

Příznak 0. Příznak definovaný uživatelem.

Programově

Programově

Ukazatel na banku pracovních registrů

Programově

Adresy banky 0 (00H - 07H) Adresy banky 1 (08H - 0FH) Adresy banky 2 (10H - 17H) Adresy banky 3 (18H - 1FH)

vlajka přetečení. Nastaveno nebo vymazáno hardwarem během provádění aritmetických instrukcí k označení stavu přetečení.

Hardware nebo software

Náhradní. Obsahuje spouštěč čtení/zápisu, který lze použít

Paritní bit. Resetujte nebo nastavujte hardwarem každý instrukční cyklus tak, aby indikoval sudý nebo lichý počet bitů baterie, které jsou ve stavu „1“.

Hardware nebo software

Ukazatel zásobník SP - 8bitový registr, jehož obsah je inkrementován před zápisem dat do zásobníku během instrukcí PUSH a CALL. Při počátečním resetu je ukazatel zásobníku nastaven na 07H a oblast zásobníku v datové paměti RAM začíná na adrese 08H. Pokud je to nutné, předefinováním ukazatele zásobníku může být oblast zásobníku umístěna kdekoli v interní datové paměti RAM mikrokontroléru.

Ukazatel data DPTR sestává z horního bajtu (DPH) a nízkého bajtu

(DPL). Obsahuje 16bitovou adresu při přístupu k externí paměti. Může být použito

být uložen jako 16bitový registr nebo jako dva nezávislé osmibitové registry.

Port0 - PortZ. Samostatné bity registrů speciálních funkcí P0, P1, P2, P3 jsou bity - "latche" výstupů portů P0, P1, P2, P3.

Buffer konzistentní přístav SBUF představuje dva samostatné registry: vyrovnávací paměť vysílače a vyrovnávací paměť přijímače. Když jsou data zapsána do SBUF, vstoupí do vyrovnávací paměti vysílače a zápis bajtu do SBUF automaticky zahájí jejich přenos přes sériový port. Když jsou data čtena z SBUF, jsou načtena z cílové vyrovnávací paměti.

Registry časovač. Registrové páry (TH0, TL0) a (TH1, TL1) tvoří 16-

bitové čítačové registry časovače/čítače 0 a časovače/čítače 1, v tomto pořadí.

Registry řízení. Speciální funkční registry IP, IE, TMOD, TSON, SCON a PCON obsahují řídicí bity a stavové bity pro systém přerušení, čas-

měření/počítadla a sériový port. Budou podrobně diskutovány níže.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0,0 P0,1 P0,2 P0,3 P0,4 P0,5 P0,6 P0,7

MC během provozu poskytuje:

    minimální doba provádění příkazů sčítání je 1 µs;

    hardwarové násobení a dělení s minimální dobou provádění 4 µs.

MK poskytuje možnost nastavení frekvence interního oscilátoru pomocí křemenného krystalu, LC řetězu nebo externího oscilátoru.

Rozšířený příkazový systém poskytuje bajtové a bitové adresování, binární a binárně-decimální aritmetiku, indikaci přetečení a sudé/liché určování a schopnost implementovat logický procesor.

Nejdůležitějším a nejvýraznějším rysem architektury rodiny MCS51 je, že ALU může, spolu s prováděním operací s 8bitovými datovými typy, manipulovat s jednobitovými daty. Jednotlivé softwarově dostupné bity lze nastavit, resetovat nebo nahradit jejich doplňkem, lze je přeposílat, kontrolovat a

Obr.3.2. Externí nálezy

mikrokontrolér

používá se v logických výpočtech. Zatímco podpora pro jednoduché datové typy (pokud existují

současný trend prodlužování délky slov) se může na první pohled zdát jako krok zpět, tato kvalita činí mikrokontroléry řady MCS51 zvláště vhodnými pro aplikace využívající řadiče. Operační algoritmy posledně jmenovaného svým vlastním způsobem předpokládají přítomnost vstupních a výstupních booleovských proměnných, které je obtížné implementovat pomocí standardních mikroprocesorů. Všechny tyto vlastnosti jsou souhrnně označovány jako booleovský procesor rodiny MCS51. Tato výkonná ALU dělá z rodiny mikrokontrolérů MCS51 stejně vhodnou sadu instrukcí jak pro aplikace řízení v reálném čase, tak pro datově náročné algoritmy.

Schéma zapojení mikrokontroléru je na Obr. 3.2. V základní verzi je zabalen ve 40pinovém DIP pouzdru. Zvažte účel závěrů.

Začněme napájecími kabely «0 PROTI" a "5 PROTI" , jehož prostřednictvím přijímá hlavní výkon. Aktuální spotřeba je uvedena v tabulce. 3.1.

Závěr "RST" - resetujte mikrokontrolér. Když je tento kolík aktivní vysoko, režimu Všeobecné resetovat a MK provádí následující akce:

Nastaví čítač instrukcí PC a všechny registry speciálních funkcí kromě západek portu P0-P3, ukazatele zásobníku SP a registru SBUF na nulu;

    ukazatel zásobníku má hodnotu rovnou 07H;

    deaktivuje všechny zdroje přerušení, čítače časovače a sériové číslo

    vybere BANK 0 RAM, připraví porty P0-RZ pro příjem dat a určí

sdílí piny ALE a PME jako vstupy pro externí hodiny;

      v registrech speciálních funkcí PCON, IP a IE nabývají rezervované bity náhodné hodnoty a všechny ostatní bity jsou resetovány na nulu;

      registr SBUF je nastaven na náhodné hodnoty.

      nastaví západky portů P0-P3 na "1".

Stavy registrů mikrokontroléru po resetu jsou uvedeny v tabulce 3.5.

Tabulka 3.5.

Informace

neurčitý

0XXXX0000B pro k-MOS 0XXXXXXXB pro n-MOS

Výstup RST má také alternativní funkci. Záložní napájení je dodáváno přes něj, aby byl zachován obsah paměti RAM mikrokontroléru beze změny, když je hlavní odstraněna.

závěry bq1, BQ2 navržený pro připojení quartzového rezonátoru, který určuje hodinovou frekvenci MC.

Závěr EA' (E externí A šaty externí adresa) - určený k aktivaci režimu čtení řídicích kódů z externí programové paměti, když je na tento výstup přivedena aktivní nízká úroveň. Výstup má alternativní účel (funkci). V programovacím režimu je napájen programovacím napětím EPROM.

Závěr PME (P program M emoci E ušlechtilý povolení Paměť programy) - určený pro řízení cyklu čtení z paměti programu a automaticky aktivovaný MK v každém cyklu stroje.

Závěr ALE (A šaty L Angličtina E ušlechtilý povolení juniorský adresy) blikne výstup dolní části adresy na portu P0. Výstup se také používá při programování EPROM, přičemž během procesu programování je na něj aplikován zábleskový impuls.

MK obsahuje čtyři skupiny portů: P0, P1, P2 a P3. Jedná se o zbývajících 40 pinů mikrokontroléru. Tyto porty mohou sloužit pro bit po bitu vstup - výstup informací, ale navíc má každý z nich svou specializaci. Zobecněné funkční schéma portu je znázorněno na Obr. 3.3. Port obsahuje výstupní přepínače FET připojené ke kolíku, přepínač funkcí, západku D-latch a řídicí logiku. Jedničku nebo nulu lze zapsat do západky na vnitřní sběrnici MK. Tyto informace jsou přiváděny přes přepínač funkcí k výstupním tlačítkům a výstupu MC. Ve stavu jedna jsou oba tranzistory N a N1 sepnuté, ale N2 je otevřený. V nulovém stavu se N otevírá-

Xia a N2 se zavře. V okamžiku, kdy port vykonává alternativní funkci, na kterou je specializován, je uvolněn stav blokování výstupu. Mikrokontrolér umí samostatně číst stav latch portu a stav jeho výstupu, nastavený externím signálem. K tomu jsou v assembleru MK speciální příkazy, které aktivují odpovídající řádky. Chcete-li přečíst stav kolíku na odpovídající západce portu,

být předem nahraný

Z vnitřního

Manažerská západka

Funkční spínač

Vcc

Víkend

jednotka. Když je na výstupu buňky „AND“, ke které je tato linka připojena, aktivována linka „Západkové čtení“,

její pneumatiky MK D Q

Zápis do západky C Q

čtení západky

Port pin

stav západky, která při aktivaci dorazí na vnitřní sběrnici mikrokontroléru

"reading output" - stav externího výstupu portu.

Přístav P0 – univerzální obousměrný port

vstup výstup. Za tímto přístavem

funkce organizování externích sběrnic adres a

Rýže. 3.3. Funkční schéma portu mikrokontroléru

data pro rozšíření paměti programu a datové paměti

mikrokontrolér. Při přístupu do externí programové paměti nebo při provedení příkazu pro přístup do externí datové paměti se na pinech portu nastaví spodní část adresy (A0…A7), která je na pinu ALE nastavena vysoko. Poté se při zápisu do datové paměti informace zapisované z vnitřní sběrnice MK přivádějí na piny portu P0. Naopak při operacích čtení jdou informace z pinů portu na interní sběrnici. Charakteristickým rysem portu P0 je absence „pull-up“ tranzistoru N2, který zajišťuje napájení výstupu. Když je západka zapsána na port 1, je jednoduše uvedena do stavu vysoké impedance nezbytné pro správnou funkci datové sběrnice. Pokud je nutné napájet jakákoli externí zařízení přes výstup, měly by být z napájecích obvodů na výstup portu poskytnuty externí odpory.

Přístav P1 – univerzální obousměrný I/O port bez alternativních funkcí.

Přístav R2 – univerzální obousměrný I/O port, jako alternativní funkce, přidělující horní část adresy (А8…А15) při přístupu k externí paměti.

Přístav P3 – univerzální obousměrný vstupně-výstupní port, jehož každý bit zajišťuje provádění různých alternativních funkcí. V tomto případě jsou alternativní funkce implementovány pouze tehdy, jsou-li jednotky zapsány do výstupních západek portu, jinak je provádění alternativních funkcí zablokováno. Uvádíme je samostatně pro každý bit:

P3.0 RxD (R hlava e X vnitřní D ate, read external data) – vstup vestavěného sériového transceiveru.

P3.1 TxD (T ano e X vnitřní D ate, přenášet externí data) – vestavěný sériový výstup transceiveru.

P3.2 INT0' (INT errupt, interrupt) - vstup externího přerušení 0.

P3.3 INT1' – vstup externího přerušení 1.

P3.4 С/T0 – vstup nulového vestavěného časovače/počítadla.

R3.5 C/T1 – vstup prvního vestavěného časovače/počítadla.

P3.6 WR' (W rite, write) - řídící výstup cyklu zápisu do datové paměti.

P3.7 RD' (R ead, read) - výstupní řízení čtecího cyklu z datové paměti.

Piny portu P1, P2 a P3 jsou schopné vydávat proud asi 0,2 mA a přijímat proud 3 mA při nule, piny portu P0 jsou výkonnější a schopné dodávat proud asi 0,8 mA při nule a přijímat proud 5 mA při nule. Stručné informace o účelu pinů mikrokontroléru jsou uvedeny v tabulce 3.6.

Tabulka 3.6.

Označení

Výstupní cíl

8bitový obousměrný port P1. Vstup adresy A0-A7 při kontrole interní ROM (RPZU)

zadejte výstup

Obecný resetovací signál. Záložní výstupní napájení RAM z externího zdroje (pro 1816)

8bitový obousměrný port P3 s dalšími funkcemi

zadejte výstup

Sériová data přijímače - RxD

Sériová data vysílače - TxD

Vstup externího přerušení 0- INT0`

Vstup externího přerušení 1-INT1`

Vstup časovače/počítadla 0: - T0

Vstup časovače/počítadla 1: - T1

Výstup zábleskového signálu při zápisu do externí datové paměti: - WR`

Výstup zábleskového signálu při čtení z externí datové paměti - RD`

Závěry pro připojení křemenného rezonátoru.

výstupní vchod

Obecný závěr

8bitový obousměrný port P2. Výstupní adresa A8-A15 v režimu provozu s externí pamětí. V režimu interního testu ROM jsou výstupy P2.0 - P2.6 použity jako vstup adresy A8-A14. Závěr P2.7 - povolení ke čtení ROM.

zadejte výstup

Rozlišení paměti programu

Výstup pro povolení blokování adresy. Při programování signálu EEPROM: PROG

zadejte výstup

Blokování práce s vnitřní pamětí. Při programování EEPROM je dán signál UPR.

zadejte výstup

8bitový obousměrný port P0. Adresová/datová sběrnice pro práci s externí pamětí. Datový výstup D7-D0 v testovacím režimu interní ROM (RPZU).

zadejte výstup

Výkon ze zdroje napětí + 5V

Základem mikrokontroléru (viz obr. 1) je 8bitová aritmetická logická jednotka (ALU). Paměť MK má harvardskou architekturu, tzn. logicky rozdělena: na programovou paměť - PP (interní nebo externí), adresovanou 16bitovým čítačem příkazů (SC) a datovou paměť - interní (Rezidentní datová paměť - RPD) 128 (nebo 256) bytů, a také externí (External datová paměť – VPD) až 64 KB. Fyzicky je programová paměť implementována na ROM (pouze pro čtení) a datová paměť je implementována na RAM (data lze zapisovat a číst).

Příjem a dodávka externích signálů se provádí přes 4 osmibitové porty Р0..Р3. Při přístupu k externí programové paměti (EPM) nebo datové paměti (VPD) se porty P0 a P2 používají jako multiplexní externí adresová/datová sběrnice. Linky portu P3 mohou také provádět alternativní funkce (viz Tabulka 1).

16bitový registr DPTR tvoří adresu VPD nebo základní adresu paměti programu v instrukci převodu Accumulator. Registr DPTR lze také použít jako dva nezávislé 8bitové registry (DPL a DPH) pro ukládání operandů.

8bitový interní registr příkazů (RK) přijímá kód prováděného příkazu; tento kód je dekódován řídicím obvodem, který generuje řídicí signály (viz obr. 1).

Přístup do speciálních funkčních registrů - RSF (SFR - na obr. 1 jsou zakroužkované tečkovanou čarou) je možný pouze pomocí přímého bytového adresování v rozsahu adres od 128 (80h) a více.


Rezidentní datová paměť (RDD) v prvních modelech mikrokontrolérů rodiny MCS-51 měla kapacitu 128 bytů. Dolních 32 bajtů RPD jsou také univerzální registry - RON (4 banky po 8 RON). Program lze uplatnit na jedno z 8 RON aktivní banky. Výběr aktivní banky RON se provádí naprogramováním dvou bitů ve stavovém registru procesoru - PSW.


Tabulka 1 - Přiřazení pinů MCS-51

PIN č. Označení Účel
1..8 P1 8bitový kvazi-obousměrný I/O port
9 RST

Resetovací signál (aktivní úroveň - vysoká);

Signál RST se resetuje: PC a většina registrů speciálních funkcí (SFR), čímž se zablokují všechna přerušení a časovače; vybere RON Bank 0; zapíše "všechny" na porty P0_P3 a připraví je pro vstup; zapíše kód 07H do ukazatele zásobníku (SP);

10..17

8bitový kvazi-obousměrný I/O port; po zápisu do odpovídajícího bitu "1" - provádí další (alternativní) funkce:

Vstup sériového portu - RxD;

Výstup sériového portu - TxD;

Vstup externího přerušení 0 - ~INT0;

Vstup externího přerušení 1 - ~INT1;

Vstup časovače/čítače 0 - T0;

Vstup časovače/čítače 1 - T1;

Stroboskopický výstup. signál při zápisu do VPD - ~ WR;

Stroboskopický výstup. signál při čtení z VPD - ~ RD;

18, 19 X1, X2 Závěry pro připojení křemenného rezonátoru nebo LC obvodu;
20 GND Obecný závěr;
21..28 P2 8bitový kvazi-obousměrný I/O port; nebo výstupní adresa A v režimu externí paměti (VPP nebo VPD);
29 PME Záblesk čtení z externí programové paměti, vydává se pouze při přístupu k externí paměti ROM;
30 ALE Stroboskop adresy externí paměti (VPP nebo VPD);
31 EA Po deaktivaci RPP úroveň "0" na tomto vstupu přepne MK na výběr příkazů pouze z dráhy ;
39..32 P0 8bitový obousměrný I/O port; při přístupu k externí paměti vydá adresy A (které jsou zapsány do externího registru signálem ALE) a poté vymění bajt synchronně se signálem ~PME (pro příkazy) nebo ~WR,~RD (pro data ve VPD) , při přístupu k externí paměti jsou všechny jednotky zapsány do registru portu P0, čímž se zničí informace tam uložené;
40 Ucc Výstup napájecího napětí

Přepínání bank RON zjednodušuje provádění podprogramů a manipulaci s přerušeními, protože. není nutné při volání podprogramu přenášet obsah RON hlavního programu do zásobníku (stačí přejít do jiné aktivní banky RON v podprogramu).

Přístup k RPD je možný pomocí nepřímého nebo přímého bytového adresování (přímé bytové adresování umožňuje přístup pouze k prvním 128 bytům RPD).

Rozšířenou oblast RPD (pro mikrokontroléry řady MCS-52 a následné rodiny) od adresy 128 (80h) do 255 (FFh) lze adresovat pouze pomocí metody nepřímého adresování.

Tabulka 2 - Blokové registry speciálních funkcí (s f r)

Mnemo kód název
0E0h *ACC baterie
0F0h *B Zaregistrujte expandér baterie
0D0h *PSW Stavové slovo procesoru
0B0h *P3 Port 3
0A0h *P2 Port 2
90h *P1 Port 1
80h *P0 Port 0
0B8h * IP Přerušit registr priorit
0A8h *TJ Registr masky přerušení
99h SBUF Vyrovnávací paměť sériového transceiveru
98h * SCON Kontrola/registr stavu sériového portu
89h TMOD Registrace režimu časovače/počítadla
88h * TCON Časovač/Ovládání počitadla/Registr stavu
8Dh ČT1 Časovač 1 (vysoký bajt)
8bh TL1 Časovač 1 (nízký bajt)
8 kanálů TH0 Časovač 0 (vysoký bajt)
8ah TL0 Časovač 0 (nízký bajt)
83h DPH Registr datových ukazatelů (DPTR) (vysoký bajt)
82h DPL Registr datových ukazatelů (DPTR) (nízký bajt)
81h SP Zásobník ukazatele registru
87h PCON Registr řízení poptávky

2. SOFTWAROVÝ MODEL MCS–51


TYPY PŘÍKAZŮ MCS–51

Téměř polovina příkazů se provádí v 1 strojovém cyklu (MC). Při frekvenci krystalového oscilátoru 12 MHz je doba provedení takového příkazu 1 μs. Zbývající příkazy se provádějí ve 2 strojových cyklech, tzn. po dobu 2 ms. Ve 4 strojových cyklech se provádějí pouze instrukce násobení (MUL) a dělení (DIV).

Během jednoho strojového cyklu existují dva přístupy do paměti programu (interní nebo externí) pro čtení dvou bajtů instrukce nebo jeden přístup do paměti externích dat (EDM).

3. ZPŮSOBY (METODY) ŘEŠENÍ MCS–51

1. ADRESA REGISTRŮ - 8bitový operand je umístěn v RON zvolené (aktivní) banky registrů;

2 PŘÍMÉ ADRESOVÁNÍ (označeno znaménkem - #) - operand je umístěn ve druhém (a u 16bitového operandu i ve třetím) bytu příkazu;

3 NEPŘÍMÉ ADRESOVÁNÍ (označeno znakem - @) - operand je v paměti dat (RPD nebo VPD) a adresa paměťové buňky je obsažena v jednom z RON nepřímého adresování (R0 nebo R1); v příkazech PUSH a POP je adresa obsažena v ukazateli zásobníku SP; registr DPTR může obsahovat adresu VPD až 64K;

4 DIRECT BYTE ADDRESSING – (dir) – používá se pro přístup k buňkám RPD (adresy 00h…7Fh) a speciálním funkčním registrům SFR (adresy 80h…0FFh);

5 DIRECT BIT ADDRESSING - (bit) - slouží k adresování samostatně adresovatelných 128 bitů umístěných v buňkách RPD na adresách 20H ... 2FH a k samostatně adresovatelným bitům speciálních funkčních registrů (viz tabulka 3 a model programu);

6 NEPŘÍMÁ INDEXOVÁ ADRESA (označená znakem @) - zjednodušuje prohlížení tabulek v paměti programu, adresa PP je určena součtem základního registru (PC nebo DPTR) a indexového registru (Baterie);

7 IMPLICITNÍ (VESTAVĚNÁ) ADRESA - kód instrukce obsahuje implicitní (implicitně) odkaz na jeden z operandů (nejčastěji na Akumulátor).

4. FORMÁT SLOVA STAVU PROCESORU (PSW).

C - Příznak Carry (CARY) nebo výpůjčka, také funguje jako "booleovský akumulátor" v bitově řízených instrukcích;

AC – pomocný (další) příznak přenosu – nastaven na „1“, pokud příkaz pro sčítání (ADD, ADDC) měl přenos z tetrády nízkého řádu do vyššího řádu (tj. z 3. bitu na 4. bit);

F0 - uživatelský příznak - nastavení, reset a kontrola pomocí softwaru;

RS1 RS0 banka adresa (adresář)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – Výběr banky registrace:

OV - Aritmetický příznak přetečení; jeho hodnota je určena operací XOR vstupních a výstupních přenosových signálů nejvýznamnějšího bitu ALU; jediná hodnota tohoto příznaku označuje, že výsledek aritmetické operace v kódu doplňku dvou je mimo rozsah: –128…+127; při provádění operace dělení se vynuluje příznak OV a v případě dělení nulou se nastaví; při násobení se nastaví příznak OV, pokud je výsledek větší než 255 (0FFH);

Bit PSW - Reserved, obsahuje trigger, dostupný pro zápis nebo čtení;

P - paritní příznak - je přičtení počtu jednotlivých bitů v akumulátoru k sudému číslu; je tvořena kombinačním obvodem (programově dostupný pouze pro čtení).

Mikrokontroléry MCS-51 nemají příznak "Z". Ale v instrukcích podmíněného skoku (JZ, JNZ) kombinační obvod kontroluje aktuální (nulový nebo nenulový) obsah akumulátoru.

Veškeré příkazy k přenosům a výměně operandů lze provádět přes Akumulátor (viz obr. 3). Kromě toho lze přenosy z/do externí paměti (paměť programů nebo datová paměť) provádět pouze prostřednictvím baterie.

Většinu převodů lze také provést přes dopředný bajt (dir). Existují dokonce přenosy dir-to-dir (viz obrázek 3).

Chybějící přenosy z RON do RON lze implementovat jako přenosy z RON do dopředného bajtového adresáře (vzhledem k tomu, že RON se nacházejí v počáteční oblasti rezidentní datové paměti, jejíž buňky lze adresovat jako dir).

XCH výměnné příkazy umožňují posílat bajty bez zničení obou operandů.

Aritmetické příkazy se provádějí pouze v akumulátoru. Proto musí být první operand nejprve umístěn do Akumulátoru a poté musí být přidán nebo odečten druhý operand. Výsledek se uloží do Akumulátoru.


Příkaz SUBB odčítání se provádí pouze s výpůjčkou (tj. příznak Cary se také odečítá od výsledku). Proto, aby bylo možné provést instrukci odečítání bez půjčování, je nutné nejprve provést instrukci Clear Flag C (CLRC).

Instrukce pro násobení jednobajtových operandů - MULAB - umístí dvoubajtový (16bitový) výsledek: dolní bajt je v Akumulátoru, vysoký bajt je v registru B.

Výsledek provedení instrukce pro dělení jednobajtových operandů - DIVAB - je umístěn: podíl - akumulátor, zbytek - do registru B.

Aritmetická instrukce INC přidá jedničku k vybranému operandu. Aritmetická instrukce DEC odečte jedničku od zvoleného operandu. Instrukce Accumulator Decimal Correction (DAA) vám pomůže přidat binárně kódovaná desítková čísla (BCD), aniž byste je museli převádět do hexadecimálního (hexadecimálního) formátu. Zdrojové operandy musí být ve formátu BCD, tzn. v každé tetrádě o jednom bajtu jsou pouze čísla od 0 do 9 (nemohou být hexadecimální čísla: A, B, C, D, E, F). Jeden bajt tedy může obsahovat čísla od 00 do 99 pro sbalená BCD čísla nebo čísla od 0 do 9 pro rozbalená BCD čísla.

Příkaz DA A - decimální oprava provádí akce s obsahem akumulátoru po přidání čísel BCD v procesoru (čísla byla přidána podle zákonů hexadecimální aritmetiky) následovně (viz příklad):

· pokud je obsah tetrády nízkého řádu Akumulátoru větší než 9 nebo je nastaven příznak pomocného přenosu (AC = 1), pak se k obsahu Akumulátoru přičte 6 (tj. chybějících šest číslic v hex. formát);

· pokud je poté obsah vysokého řádu Akumulátoru větší než 9 nebo je nastaven příznak C, pak se k vyššímu řádu Akumulátoru přidá číslo 6.

Instrukce dekadické korekce DA A není použita po instrukci inkrementace (INC), protože instrukce inkrementace neovlivňuje (nemění) příznaky C a AC.

Logické příkazy:

Logické "AND" - ANL,

Logické "OR" - ORL,

Logický příkaz XOR - XRL - se provádí v Akumulátoru (stejně jako aritmetika), ale je možné provádět logické příkazy i v byte přímé adresy (dir). V tomto případě může být druhý operand:

v baterii popř

Okamžitý operand v instrukci.

Rotační instrukce (RR A, RL A) a rotační instrukce přes příznak CARY (RRC A, RLC A) otáčejí obsah akumulátoru o 1 bit. Bitové operandy jsou odesílány pouze přes příznak C.

MDT 681,5, 681,325,5 (075,8)

BBK 32.973.202-018.2 i 73

Ščerbina A. N.Výpočetní stroje, systémy a sítě. Mikrokontroléry a mikroprocesory v řídicích systémech: Cheb. příspěvek / A.N. Shcherbina, P.A. Něčajev-SPb.: Z polytechniky. un-ta, 2012.-226 s.

Odpovídá obsahu státního vzdělávacího standardu pro oblasti školení a odborností v oblasti managementu v technických systémech, elektroenergetice a elektrotechnice a obsahu vzorového učiva oboru "Počítače, systémy a sítě".

Základní otázky logické organizace mikroprocesorových systémů jsou zvažovány na příkladu základní architektury řady mikrokontrolérů MCS-51 od Intelu. Je popsána technologie programování mikrokontrolérů v jazycích Assembler a SI.

Může být užitečný pro studenty a učitele vyšších technických institucí, specialisty na automatizaci technologických procesů a výrobních zařízení i pro konstruktéry mikroprocesorových systémů.

Odpovídá také obsahu státního vzdělávacího standardu oborů „Mikrokontroléry a mikroprocesory v řídicích systémech“ a „Elektronická zařízení automatizace“ pro bakalářské, inženýrské a magisterské studium ve směru 140400 „Elektrotechnika a elektrotechnika“.

Vychází rozhodnutím redakční a nakladatelské rady

Petrohradská státní polytechnická univerzita.

© Shcherbina A. N., Nechaev P. A., 2012

© Stát Petrohrad

polytechnická univerzita, 2012

ISBN 978-5-7422-3553-8


Úvod.. 7

Kapitola 1. Architektura rodiny MCS51. 10

1.1 Obecná charakteristika 10

1.2 Blokové schéma 11



1.3 Přiřazení pinů mikrokontroléru 8051 15

1.4 Organizace paměti 17

1.4.1 Programová paměť (ROM) 18

1.4.2 Datová paměť (RAM) 19

1.4.3 Registry speciálních funkcí. dvacet

1.4.4 Registr příznaků (PSW) 23

1.5 Ovládací a synchronizační zařízení 26

1.6 Organizace I/O portů 27

1.6.1 Obecné informace. 27

1.6.2 Alternativní funkce. 27

1.7. Časovače / čítače mikrokontrolérů řady 8051. 28

1.7.1. Struktura časovačů-čítačů. 28

1.7.2 Provozní režimy časovačů-počítadel. třicet

1.8. Sériový port 32

1.8.1. Struktura sériového portu. 32

1.8.2. Řídicí/stavový registr transceiveru SCON.. 34

1.8.3. Registr řízení výkonu PCON.. 36

1.9. Systém přerušení 37

1.9.1. Struktura systému přerušení. 37

1.9.2 Provedení rutiny přerušení. 40

Kapitola 2 Vlastnosti mikrokontroléru 80C51GB.. 42

2.1 Vlastnosti 42

2.2 I/O porty P0-P5 43

2.2.1 Provoz I/O portů. 43

2.2.2 Zápis do portu.. 46

2.3 Vlastnosti systému přerušení 8XC51GB.. 49

Povolit/zakázat přerušení. 50

Přerušit správu priorit. 51

vnější přerušení. 54

2.3. Uzel ADC 56

2.4. Hlídač hardwaru 61

2.5. Detekce selhání hodin 63

2.6. Matice programovatelných čítačů RSA 64

2.6.1. Struktura PCA.. 64

2.6.2. Registr režimu čítače PCA (CMOD) 66

2.6.3. Řídicí registr čítače PCA (CON) 67

2.6.4. Porovnejte/opravte moduly. 68

2.7. Vylepšený sériový port 76

2.8. Časovače/počítadla 79

Přiřazení pinů mikrokontrolérů skupiny 8XC51GB.. 86

Kapitola 3 Programování MK 8051GB.. 89

3.1. Softwarový model 89

3.2 Datové typy 93

3.3 Způsoby adresování dat 93

3.4 Příkazový systém 95

3.4.1 Obecná charakteristika. 95

3.4.2 Typy příkazů. 96

3.4.3 Typy operandů. 97

3.4.4 Příkazy pro přenos dat mikrokontroléru. 98

3.4.5 Aritmetické instrukce 8051.101

3.4.6 Logické příkazy 8051 MCU. 104

3.4.7 Operační příkazy 8051 Bit. 106

3.5 Ladění programů 111

Kapitola 4. Programovací jazyk ASM-51. 112

4.2 Psaní textu programu 113

4.3 Jazyková abeceda. 114

4.4 Identifikátory. 115

4.5 Čísla 117

4.6 Směrnice 118

4.7 Implementace podprogramů v ASM51 122

4.7.1 Struktura procedury podprogramu v jazyce ASM51. 122

4.7.2 Předávání proměnných parametrů do podprogramu. 123

4.7.3 Implementace podprogramů-funkcí v jazyce ASM51. 123

4.7.4 Implementace rutin pro obsluhu přerušení v jazyce ASM51. 124

4.8 Strukturované programování v jazyce symbolických instrukcí. 125

4.9 Zvláštnosti překladu vícemodulových programů.. 126

4.10 Použití segmentů 128

4.10.1 Rozdělení paměti MK na segmenty .. 128

4.10.2 Absolutní paměťové segmenty. 129

4.10.2 Přemístitelné paměťové segmenty. 131

Kapitola 5. Programovací jazyk C-51. 134

5.1 Obecná charakteristika jazyka 134

5.3 Struktura programů C-51 136

5.3. Prvky programovacího jazyka C-51 138

5.3.1. Symboly.. 138

5.3.2. Lexikální jednotky, oddělovače a použití mezer. 141

5.3.3 Identifikátory.. 142

5.3.4 Klíčová slova. 143

5.3.5 Konstanty.. 143

5.4. Výrazy v jazykových prohlášeních 146

programování C-51 146

5.5. Operační priority 148

5.6. Příkazy programovacího jazyka C-51 149

5.6.1. deklarační operátory. 150

5.6.2 Spustitelné příkazy.. 150

5.6.3 Operátor přidělení. 151

5.6.4 Podmíněné prohlášení. 151

5.6.5 Strukturální operátor (). 152

5.6.6 Příkaz cyklu for. 152

5.6.7 Příkaz smyčky s kontrolou podmínky až po tělo smyčky while. 153

5.6.8 Příkaz smyčky s kontrolou podmínky poté, co tělo smyčky udělá while. 154

5.6.9 Příkaz break. 155

5.6.10 Pokračování. 155

5.6.11 Prohlášení o výběru přepínače. 155

5.6.12 Operátor goto. 157

5.6.13 Výraz operátora. 158

5.6.14 Příkaz Return z podprogramu return. 158

5.6.15 Prázdný výpis. 158

5.7. Deklarace proměnných v programovacím jazyce C-51. 159

5.7.1. Deklarace proměnné. 159

5.7.3 Celočíselné datové typy. 161

5.7.4 Čísla s pohyblivou řádovou čárkou. 162

5.7.5 Proměnné výčtového typu. 162

5.7.6. Deklarace polí v programovacím jazyce C-51. 164

5.7.7. Struktury.. 165

5.7.8. Asociace (směsi) 166

5.8. Použití ukazatelů v C-51 167

5.8.1. Vyhlášení ukazatelů. 167

5.8.2. Netypové ukazatele. 168

5.8.3. Ukazatele závislé na paměti. 169

5.9. Deklarování nových typů proměnných 169

5.10. Inicializace dat 170

5.11. Použití podprogramů v programovacím jazyce C-51. 170

5.11.1. Definice podprogramů.. 171

5.11.2. Parametry podprogramu .. 173

5.11.3. Předběžná deklarace podprogramů.. 174

5.11.4 Volání podprogramů.. 176

5.11.5 Rekurzivní volání podprogramu.. 176

5.11.6 Rutiny pro přerušení. 177

5.11.7 Rozsah proměnných a podprogramů.. 178

5.12. Vícemodulové programy 179

Kapitola 6. Příprava programů v integrovaném vývojovém prostředí Keil μVision2. 182

6.1 Vytvoření projektu ASM-51 182

6.2 Příklad vytvoření C projektu pro tréninkový kontrolér v Keil μVision2 IDE 188

Kapitola 7 Učení popisu ovladače .. 199

7.1. Struktura ovladače 199

7.2. Adresní prostor 200

7.2.1. Alokace paměti. 200

7.2.2 Externí paměť. 201

7.2.3. Interní datová paměť. 202

7.3. Alokace I/O portu 202

7.4. Sériový port…………………………………...203

7.5. Práce s LCD 205

7.6. Ovládací panely……………………………………………………… 213

PŘÍLOHA P2 STRUKTURA ZPRÁVY O LABORATORNÍ PRÁCI……..217

Dodatek P3 Kódy strojových příkazů. 217

Reference... 224


Úvod

Při vývoji specialit souvisejících s automatizací technologických procesů a výroby je studium mikrokontrolérů jedním z důležitých úseků.

Ve světě se neustále vyvíjí a objevuje se stále více 16- a 32bitových mikrokontrolérů a mikroprocesorů, ale největší podíl na světovém trhu mikroprocesorů stále zůstává u 8bitových zařízení. Podle všech prognóz analytických společností pro nejbližší období bude vedoucí pozice 8bitových mikrokontrolérů na světovém trhu i nadále pokračovat.

V současné době je mezi všemi 8bitovými mikrokontroléry rodina MCS-51 nesporným lídrem v počtu odrůd a počtu společností vyrábějících její modifikace. Své jméno nese po prvním zástupci této rodiny - mikrokontroléru 8051. Úspěšná sada periferií, možnost flexibilního výběru externí nebo interní programové paměti a přijatelná cena zajistily tomuto mikrokontroléru úspěch na trhu.

Výhody rodiny MCS-51:

architektura, která je de facto standardem;

Extrémní šíře rodiny a rozmanitost příležitostí;

Dostupnost vysoce výkonných a rozšířených verzí procesorů;

značné množství volně dostupného vývoje softwaru a hardwaru;

snadnost programování hardwaru, včetně programování v obvodu;

nízká cena a dostupnost základních čipů;

Dostupnost specializovaných verzí ovladačů pro zvláštní podmínky použití

Dostupnost verzí ovladačů se sníženou úrovní elektromagnetického rušení;

· široká popularita mezi vývojáři starší generace, a to jak ve světě, tak v zemích SNS;

Podpora architektury předními vzdělávacími institucemi světa.

A konečně hlavní výhoda: po zvládnutí základního čipu rodiny je snadné začít pracovat s takovými výpočetními „monstry“, jako jsou mikrokontroléry Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

Rodina MCS-51 zahrnuje celou řadu mikroobvodů od nejjednodušších mikrokontrolérů až po ty docela složité. K dnešnímu dni existuje více než 200 modifikací mikrokontrolérů rodiny 8051, které vyrábí téměř 20 společností. Každý rok existuje stále více variant zástupců této rodiny.

Hlavní oblasti vývoje jsou:

zvýšení rychlosti (zvýšení taktovací frekvence a přepracování architektury);

snížení napájecího napětí a spotřeby energie;

· zvýšení množství RAM a FLASH paměti na čipu s možností in-circuit programování;

· zavádění složitých zařízení, jako jsou systémy řízení pohonů, rozhraní CAN a USB atd. do periferie mikrokontrolérů.

Mikrokontroléry řady MCS-51 umožňují provádět jak úkoly řízení různých zařízení, tak implementaci jednotlivých uzlů analogového obvodu. Všechny mikroobvody této rodiny pracují se stejným řídicím systémem. Většina z nich se provádí ve stejných pouzdrech se stejným pinoutem (číslování nohou u pouzdra). To umožňuje použít pro vyvíjené zařízení mikroobvody různých výrobců, aniž by se měnilo schéma zapojení zařízení a programu.

Hlavními výrobci odrůd 51. rodiny na světě jsou Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems a řada dalších.

Charakteristiky analogů mikrokontrolérů řady MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) s pokročilými funkcemi jsou uvedeny v tabulce. V 1.

Tabulka B.1

RAM ROM SAR ADC WDT T/C Po narození. Kanály Zvláštnosti
Atmel: AT89C2051
- - - - UART Flash 2 Kb
AT89C4051 - - - - UART Flash 4 Kb
AT89S4D12 128 tis - - - UART, SPI Flash 4 Kb
Polovodič DALLAS: DS5000FP
- - - + UART bootstrap loader
DS5001FP - - - + UART bootstrap loader
DS8xC520 16 tis - - + 2xUART 2DPTR
SIEMENS: C505C
16 tis - + + UART, CAN 8DPTR
C515C 64 tis - + + UART+SSC+CAN 4 PWM, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, lvl 4 přerušení, vypnutí hodin, Flash 8K
P51XAG1x 8 tis - - + 2 UARTy
Intel: 8xC51RA
8 tis - + + UART 4 úrovně IRQ, hodiny mimo
8XC196KC 64 tis 16 tis - + - UART 3 PWM
80C196KB 64 tis 8 tis - + - UART PWM

Kapitola 1 Architektura rodiny MCS51

8bitové jednočipové mikrokontroléry rodiny MCS-51 si získaly velkou oblibu mezi vývojáři mikroprocesorových řídicích systémů díky své dobře navržené architektuře. Architektura mikrokontroléru je soubor interních a externích softwarově dostupných hardwarových prostředků a systém příkazů. Architektura rodiny MCS-51 je do značné míry určena jejím účelem – konstrukcí kompaktních a levných digitálních zařízení. Mikrokontroléry, které provádějí všechny funkce mikropočítače pomocí jediného mikroobvodu, se nazývají jednočipové počítače (OEVM).

Intel vydal zhruba 50 modelů založených na operačním jádře mikrokontroléru Intel 8051. Ve stejné době zahájilo výrobu svých mikrokontrolérů vyvinutých ve standardu MCS-51 mnoho dalších společností, jako například Atmel, Philips.

Obecná charakteristika

Hlavní rysy rodiny:

· 8bitová centrální procesorová jednotka (CPU), zaměřená na řízení výkonných zařízení;

· CPU má vestavěný obvod 8bitového hardwarového násobení a dělení čísel;

Přítomnost velkého počtu operací pro práci s přímo adresovatelnými bity v instrukční sadě umožňuje hovořit o procesoru pro práci s bitovými daty (Booleovský procesor);

interní (on-chip) programová paměť maskového nebo přeprogramovatelného typu, která má objem 4 až 32 Kb pro různé krystaly, u některých verzí chybí;

· alespoň 128 bajtů datové rezidentní paměti RAM, která se používá pro organizaci, banky registrů, zásobník a ukládání uživatelských dat;

· alespoň 32 obousměrných linek rozhraní (portů), individuálně konfigurovaných pro vstup nebo výstup informací;

· dva 16bitové multirežimové čítače/časovače používané k počítání externích událostí, organizování časových zpoždění a taktování komunikačního portu;

· obousměrný duplexní asynchronní transceiver (UART), navržený k organizaci komunikačních kanálů mezi mikrokontrolérem a externími zařízeními s širokým rozsahem rychlostí přenosu informací. Existují prostředky pro hardwarově-softwarovou integraci mikrokontrolérů do připojeného systému;

· dvouúrovňový prioritní systém přerušení, který podporuje alespoň 5 vektorů přerušení ze 4 interních a 2 externích zdrojů událostí;

vestavěný generátor hodin.

Strukturální schéma

Blokové schéma regulátoru je znázorněno na obrázku 1.1 a skládá se z následujících hlavních funkčních jednotek: řídicí jednotka, aritmetická logická jednotka, jednotka časovače/počítadla, jednotka sériového rozhraní a přerušení, programový čítač, datová paměť a paměť programu. Oboustranná výměna se provádí pomocí interní 8bitové datové dálnice. Téměř všichni zástupci rodiny MCS-51 jsou postaveni podle tohoto schématu. Různé mikroobvody této rodiny se liší pouze ve speciálních registrech (včetně počtu portů).

Řídicí a synchronizační jednotka (Timing and Control)- určený ke generování synchronizačních a řídicích signálů, které zajišťují koordinaci společného provozu jednotek OEVM ve všech přípustných režimech jeho provozu. Řídící jednotka obsahuje:

zařízení pro tvarování časových intervalů;

vstupně-výstupní logika;

registr pokynů;

registr řízení spotřeby elektřiny;

dekodér příkazů, logika řízení počítače.

Rýže. 1.1. Strukturní schéma regulátoru I8051.

Time sloting zařízení je určen pro generování a výstup vnitřních synchronizačních signálů fází, cyklů a cyklů. Počet strojových cyklů určuje dobu provádění instrukce. Téměř všechny příkazy OEVM jsou vykonávány v jednom nebo dvou strojových cyklech, kromě instrukcí násobení a dělení, jejichž trvání je čtyři strojové cykly. Frekvenci hlavního oscilátoru označme pomocí F g. Doba trvání cyklu stroje je 12/F g neboli 12 period signálu hlavního oscilátoru. Vstupně-výstupní logika je navržena pro příjem a vydávání signálů, které zajišťují výměnu informací s externími zařízeními přes vstupní/výstupní porty P0-P3.

Registr příkazů je navržen tak, aby zaznamenával a ukládal 8bitový operační kód prováděného příkazu. Operační kód je pomocí dekodéru příkazů a počítačové řídicí logiky převeden na mikroprogram pro provádění příkazů.

Registr řízení poptávky (PCON) umožňuje zastavit provoz mikrokontroléru pro snížení spotřeby energie a snížení úrovně rušení mikrokontroléru. Ještě většího snížení spotřeby energie a snížení hluku lze dosáhnout zastavením hlavního oscilátoru mikrokontroléru. Toho lze dosáhnout přepínáním bitů v řídicím registru požadavku PCON. U varianty výroby n-MOS (řada 1816 nebo zahraniční čipy, které nemají uprostřed názvu "c") obsahuje registr řízení napájení PCON pouze jeden bit, který řídí přenosovou rychlost sériového portu SMOD a neexistují žádné řídicí bity spotřeby energie.

Aritmetická logická jednotka (ALU) je paralelní osmibitové zařízení, které poskytuje aritmetické a logické operace. ALU se skládá z:

akumulátorové registry, přídržné registry TMP1 a TMP2;

ROM konstanty;

zmije;

doplňkový registr (registr B);

baterie (ACC);

registr stavu programu (PSW).

Registrovat akumulátorové a přídržné registry- osmibitové registry určené k příjmu a ukládání operandů po dobu operací na nich. Tyto registry nejsou programově přístupné.

ROM konstanty zajišťuje vývoj opravného kódu pro binárně-dekadickou reprezentaci dat, maskovacího kódu pro bitové operace a konstantního kódu.

Paralelní 8bitová sčítačka je obvod kombinačního typu se sekvenčním přenosem, určený k provádění aritmetických operací sčítání, odčítání a logických operací sčítání, násobení, neekvivalence a identity.

Registrovat B- osmibitový registr používaný při operacích násobení a dělení. Pro další instrukce jej lze považovat za doplňkový zápisník.

baterie- osmibitový registr určený k příjmu a ukládání výsledku získaného při provádění aritmeticko-logických operací nebo operací posunu

Sériové rozhraní a blok přerušení (SIP) navržený k organizaci vstupu - výstupu sekvenčních informačních toků a organizaci systému přerušení programu. Blok obsahuje:

vyrovnávací PIP;

řídicí logika;

řídicí registr;

vyrovnávací paměť vysílače;

vyrovnávací paměť přijímače;

transceiver sériového portu;

registr priority přerušení;

registr povolení přerušení;

logika zpracování příznaku přerušení a schéma generování vektorů.

Počítadlo programů je navržen tak, aby tvořil aktuální 16bitovou adresu vnitřní programové paměti a 8/16bitovou adresu externí programové paměti. Programový čítač se skládá z 16bitové vyrovnávací paměti PC, registru PC a inkrementačního obvodu (zvyšuje obsah o 1).

Datová paměť (RAM) je určen pro dočasné uložení informací používaných během provádění programu.

Porty P0, P1, P2, P3 jsou kvazi-obousměrné vstupně-výstupní porty a jsou navrženy tak, aby zajišťovaly výměnu informací mezi OEVM a externími zařízeními, které tvoří 32 vstupně-výstupních linek.

Registr stavu programu (PSW) je určen k ukládání informací o stavu ALU během provádění programu.

Programová paměť (EPROM) určený k ukládání programů a je to paměť pouze pro čtení (ROM). Různé mikroobvody používají maskované, UV vymazatelné nebo FLASH ROM.

Registr datových ukazatelů (DPTR) navržený pro uložení 16-bitové adresy externí datové paměti.

Ukazatel zásobníku (SP) je osmibitový registr určený k organizaci speciální datové paměťové oblasti (stack), do které lze dočasně uložit libovolnou paměťovou buňku.

1.3 Přiřazení pinů mikrokontroléru 8051(obr. 1.2)

· U ss - potenciál společného vodiče ("zem");

U cc - hlavní napájecí napětí +5 V;

· X1,X2 - závěry pro připojení křemenného rezonátoru;

· RST - vstup generálního resetu mikrokontroléru;

PSEN - oprávnění k externí paměti programu, vydané pouze při přístupu k externí ROM;

· ALE - blesk adresy externí paměti;

· EA - deaktivace interní programové paměti; úroveň 0 na tomto vstupu způsobí, že mikrokontrolér spustí program pouze z externí ROM; ignorování vnitřního (pokud to druhé existuje);

Rýže. 1.2. Přiřazení pinu 8051.

· P1 - osmibitový kvazi-obousměrný vstupní/výstupní port, každý bit portu lze naprogramovat pro vstup i výstup informací, bez ohledu na stav ostatních bitů;

· P2 - osmibitový kvazi-obousměrný port, podobný P1, piny tohoto portu se používají k vydávání adresových informací při přístupu k externí programové nebo datové paměti (pokud je použito 16bitové adresování druhé). Kromě toho se při programování používají piny portu pro zadávání bitů vyššího řádu adresy do mikrokontroléru;

R3 - osmibitový kvazi-obousměrný port, podobný P1, piny tohoto portu mohou provádět řadu alternativních funkcí, které se používají při provozu časovačů, sériového I / O portu, řadiče přerušení a externího programu a datová paměť;

· P0 - multiplexovaný osmibitový obousměrný port vstupu-výstupu informací, přes tento port je v různých okamžicích vyveden spodní bajt adresy a dat.

Organizace paměti

Celá řada MCS-51 má Harvardskou architekturu, tedy samostatné adresní prostory programové a datové paměti. Struktura paměti je znázorněna na Obr. 1.3.

Velikost vnitřní (rezidentní) programové paměti (ROM, EPROM nebo OTP ROM) umístěné na čipu, v závislosti na typu mikroobvodu, může být 0 (ROMless), 4K (základní čip), 8K, 16K nebo 32K. V případě potřeby může uživatel rozšířit paměť programu instalací externí ROM. Přístup k interní nebo externí paměti ROM je určen hodnotou signálu na kolíku EA (External Access):

EA=V cc (napájecí napětí) - přístup k interní ROM;

EA=V ss (zemní potenciál) - přístup k externí ROM.

U čipů ROMless musí být pin EA trvale připojen k Vss.

Rýže. 1.3. Organizace paměti rodiny MCS-51

Externí čtení ROM - (Program Store Enable) je generováno při přístupu k externí programové paměti a je neaktivní během přístupu k ROM umístěné na čipu. Oblast adresy s nízkou programovou pamětí je využívána systémem přerušení. Architektura základního čipu 8051 podporuje pět zdrojů přerušení:

dvě externí přerušení;

dvě přerušení od časovačů;

přerušení ze sériového portu.

Na Obr. 1.4 ukazuje mapu spodní oblasti paměti programu.

Rýže. 1.4. Mapa spodní oblasti paměti programu

Programová paměť (ROM)

U mikrokontrolérů řady 8051 jsou programová paměť a datová paměť nezávislá a nezávislá zařízení, která jsou adresována různými příkazy a řídicími signály.

Velikost vestavěné programové paměti umístěné na čipu mikrořadiče 8051 je 4 KB (v rodině až 32). Při přístupu k externí programové paměti používají všechny mikrokontroléry 8051 vždy 16bitovou adresu, která jim poskytuje přístup k 64 KB ROM. Mikrokontrolér přistupuje do programové paměti při čtení operačního kódu a operandů (pomocí PC programového čítače) a také při provádění instrukcí pro zkopírování bajtu z programové paměti do akumulátoru. Při provádění příkazů kopírování dat lze adresování programové paměťové buňky, ze které budou data čtena, provádět jak pomocí PC čítače, tak pomocí speciálního dvoubajtového registru ukazatelů dat DPTR.

Datová paměť (RAM)

Velikost datové paměti na čipu je 128 bajtů. Externí datová paměť může mít až 64 KB. Prvních 32 bajtů je uspořádáno do čtyř bank obecných registrů, označených příslušně banka 0 - banka 3. Každá z nich se skládá z osmi registrů R0-R7. V programu je kdykoli k dispozici s adresováním registrů pouze jedna banka registrů, jejichž číslo je obsaženo ve třetím a čtvrtém bitu stavového slova programu PSW.

8051 Adresy bitové oblasti mikrokontroléru

Tabulka 1.1

Bytová adresa (hexadecimální) Bitové adresy po bitech
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5 D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

Zbývající adresní prostor může vývojář nakonfigurovat podle vlastního uvážení: může pojmout oblast zásobníku, systému a uživatelských dat. K buňkám datové paměti lze přistupovat dvěma způsoby. Prvním způsobem je přímé adresování paměťové buňky. V tomto případě je adresa buňky operandem odpovídající instrukce. Druhým způsobem je nepřímé adresování pomocí ukazatelových registrů R0 nebo R1: před provedením příslušného příkazu musí jeden z nich obsahovat adresu buňky, do které je potřeba přistupovat.

Pro přístup k externí datové paměti se používá pouze nepřímé adresování pomocí registrů R0 a R1 nebo pomocí 16bitového registru ukazatele DPTR.

Součástí datové paměti je bitová oblast, má možnost pomocí speciálních bitových příkazů adresovat každou číslici paměťových buněk. Adresu přímo adresovatelných bitů lze také zapsat ve tvaru (ByteAddress).(Bit). Korespondenci mezi těmito dvěma způsoby adresování lze určit z tabulky. 1.1.

Příkazový systém OMEVM poskytuje skvělé možnosti zpracování dat, poskytuje implementaci logických, aritmetických operací a také řízení v reálném čase. Implementováno bitové, tetradové (4 bity), byte (8 bitů) a 16bitové zpracování dat.

Rodina LSI MCS-51 - 8bitový OMEVM: ROM, RAM, speciální registry, ALU a externí sběrnice mají bajtovou organizaci. Dvoubajtová data jsou využívána pouze registrem ukazatelů (DPTR) a programovým čítačem (PC). Je třeba poznamenat, že registr datových ukazatelů lze použít jako dvoubajtový registr DPTR nebo jako dva jednobajtové účelové registry DPH a DPL. Programový čítač se vždy používá jako dvoubajtový registr.

Sada příkazů OMEVM má 42 mnemotechnických povelů pro specifikaci 33 funkcí tohoto systému.

Syntaxe většiny instrukcí v jazyce symbolických instrukcí se skládá z mnemotechnické zkratky funkce následované operandy určujícími metody adresování a datové typy. Různé datové typy nebo režimy adresování jsou určeny nastavenými operandy, nikoli změnami v mnemotechnickém zápisu.

Příkazový systém lze podmíněně rozdělit do pěti skupin:

Existují následující typy adresování zdrojového operandu:

  • Nepřímé adresování registrů součtem základních a indexových registrů

Tabulka označení a symbolů používaných v systému velení

Označení, symbol Účel
A baterie
Rn Registry aktuálně vybrané banky registrů
r Číslo načteného registru zadané v příkazu
Přímo Přímo adresovatelná 8bitová adresa interního umístění dat, což může být umístění interní datové paměti RAM (0-127) nebo SFR (128-255)
@rr Nepřímo adresovatelné umístění 8bitové interní datové paměti RAM
údaje8 8bitová okamžitá data zahrnutá v CPC
dataH MSB (15-8) okamžitých 16bitových dat
dataL Nízké bity (7-0) okamžitých 16bitových dat
adr11 11bitová cílová adresa
addrL Nejméně významné bity cílové adresy
disp8 8bitový offsetový bajt se znaménkem
bit Přímo adresovatelný bit, jehož adresa obsahuje CPC umístěný v interní datové paměti RAM nebo SFR
a15, a14...a0 Bity cílové adresy
(X) Obsah prvku X
((X)) Obsah na adrese uložené v prvku X
(X)[M] Výboj M prvek X

+
-
*
A
NEBO
XOR
/X
Operace:
dodatky
odčítání
násobení
divize
logické násobení (operace AND)
logické sčítání (operace OR)
přídavný modul 2 (XOR)
inverze prvku X

Mnemotechniky funkcí jsou jednoznačně spojeny se specifickými kombinacemi metod adresování a datových typů. Celkem je v systému velení možných 111 takových kombinací. Tabulka zobrazuje seznam příkazů seřazených abecedně.

Mnemotechnické pomůcky Funkce Vlajky
Tým ACALL Volání absolutního podprogramu
Přidání AC, C, OV
Přidání s nošením AC, C, OV
tým AJMP Absolutní přechod
Logika "A"
Logické "AND" pro proměnné bity C
Porovnejte a skočte, pokud se nerovná C
Tým CLR A Reset baterie
tým CLR Reset bit C, bit
CPL tým A Inverze baterie
Tým CPL Bitová inverze C, bit
Tým DA A Akumulátorová desetinná oprava pro sčítání AC, C
tým DEC<байт> Dekrementovat
Tým DIV AB Divize C, OV
Tým DJNZ<байт>, <смещение> Dekrementujte a skočte, pokud není nula
Tým I.N.C.<байт> Přírůstek
Tým INC DPTR Přírůstek datového ukazatele
Tým J.B. , Skok, pokud je bit nastaven
Tým JBC , Větev, pokud je bit nastaven, a resetujte tento bit
Tým J.C. Skok, pokud je nastaven přenos
Příkaz JMP @A+DPTR Nepřímý přechod
tým JNB , Skok, pokud bit není nastaven
Tým JNC Skočit, pokud není nastaven žádný přenos
Tým JNZ Skočit, pokud je obsah akumulátoru nenulový
Tým JZ Skočit, pokud je obsah akumulátoru 0
Tým LCALL dlouhý hovor
Tým LJMP dlouhý přechod
Dopředný proměnný bajt
Odeslání datového bitu C
Příkaz MOV DPTR,#data16 Načíst datový ukazatel s 16bitovou konstantou
MOVC instrukce A,@A+( ) Přesunout byte z paměti programu
Odeslání dat do externí paměti (z externí paměti).