Počítače Okna Internet

Mikrokontroléry MCS-51: softwarový model, struktura, příkazy. Mikrokontroléry MCS-51: model programu, struktura, příkazy Mikrokontroléry rodiny mcs 51

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 krouž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) u prvních modelů 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 se nachází 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; jedna 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 provede 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řidá 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.

Architektura rodiny MCS-51 je do značné míry předurčena jejím účelem - stavbou kompaktní a levný digitální zařízení. Všechny funkce mikropočítače jsou realizovány pomocí jediného mikroobvodu. Rodina MCS-51 zahrnuje celou řadu mikroobvodů od nejjednodušších mikrokontrolérů až po ty docela složité. 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 velitelský systém MCS-51, většina z nich se provádí ve stejných případech s odpovídající pinout(číslování nohou pro pouzdro). To vám umožňuje používat pro vyvíjené zařízení čipy od různých společností - Maxim, Atmel, NXP atd. (catalog..php?page=components_list&id=39"> s.m. Hledat podle parametrů) beze změny schématu zapojení zařízení a programu.

Obrázek 1. Blokové schéma regulátoru I8751

Blokové schéma regulátoru je znázorněno na obrázku 1 a skládá se z následujících hlavních funkčních jednotek: řídicí jednotka, aritmetická logická jednotka, jednotka časovače/čítače, 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.

Podívejme se blíže na účel každého bloku. 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í systém všech ovladačů rodiny MCS-51 obsahuje 111 základních příkazů o formátu 1, 2 nebo 3 bajty a nemění se při přechodu z jednoho čipu na druhý. To poskytuje vynikající přenositelnost programů z jednoho čipu na druhý.

Řídicí a synchronizační jednotka

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

  • - zařízení na tvarování časových intervalů,
  • - I/O logika,
  • - registr pokynů,
  • - registr řízení spotřeby elektřiny,
  • - příkazový dekodér, logika řízení počítače.

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 se provádějí v jednom nebo dvou strojových cyklech, kromě příkazů násobení a dělení, jejichž trvání je čtyři strojové cykly. Kmitočet hlavního oscilátoru označme pomocí F g. Doba trvání cyklu stroje je pak 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, dočasné úložné registry TMP1 a TMP2,
  • - ROM konstanty,
  • - zmije,
  • - další registr (registr B),
  • - akumulátor (ACC),
  • - registr stavu programu (PSW).

Registrovat baterie a vedení rejstříků- 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 kombinační obvod 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í, disparity 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) je navržen tak, aby organizoval vstup-výstup sekvenčních informačních toků a organizoval systém přerušení programu. Blok obsahuje:

  1. - PIP buffer,
  2. - logika ovládání,
  3. - kontrolní registr,
  4. - vyrovnávací paměť vysílače,
  5. - vyrovnávací paměť přijímače,
  6. - transceiver sériového portu,
  7. - registr priority přerušení,
  8. - registr povolení přerušení,
  9. - logika pro zpracování příznaků 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 k zajištění výměny informací mezi OEVM a externími zařízeními, které tvoří 32 vstupně-výstupních linek.

Časovač zařízení Základní modely řady mají dva programovatelné 16bitové časovače/čítače (T/C0 a T/C1), které lze použít jako časovače i jako externí čítače událostí.

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 využívají maskované ROM, které jsou vymazány ultrafialovým zářením popř BLIKAT ROM.

Registr datových ukazatelů (DPTR) je určen k uložení 16bitové adresy externí datové paměti nebo paměti programu.

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



Stav systému přerušení je dotazován na konci každého strojového cyklu ve fázi S5P2, s výjimkou instrukcí RETI a jakýchkoli instrukcí, které přistupují k registrům IE a IP. Trvá 38 až 86 period frekvence fOSC od okamžiku, kdy je požadavek na přerušení přijat k obsluze přerušení, v závislosti na fázi požadavku a počtu strojových cyklů instrukce, během kterých byl požadavek přijat.

Při hardwarové implementaci přerušení se provede instrukce LCALL addr16, která zajistí uložení aktuálního stavu programového čítače do zásobníku (uložení návratové adresy) a přechod na počáteční adresu addr16 příslušné servisní procedury. provedeno. Každý zdroj požadavku na přerušení má svůj vlastní přidružený

počáteční adresa (vektor přerušení):

Externí přerušení INT0.

Přerušení časovače/počítadla TC0.

Externí přerušení INT1.

Přerušení časovače/počítadla TC1.

Přerušení sériového portu.

2.7. Způsoby adresování a příkazový systém rodiny MCS-51

Příkazový systém rodiny MCS-51 je zaměřen na organizaci flexibilního vstupu/výstupu dat přes univerzální porty P0...P3 a primární zpracování informací. Zvláštní pozornost je věnována operacím s bity a převodu řízení jejich hodnotou. Instrukce, které takové operace provádějí, tvoří velkou skupinu a spolu s odpovídajícím hardwarem tvoří tzv. „Booleovský procesor“ jako součást architektury MCS-51.

Příkazový systém poskytuje programátorovi možnost používat většinu operací s úplnou sadou metod adresování a softwarově přístupných hardwarových prostředků.

2.7.1. Metody adresování

Každá instrukce říká procesoru operaci, která má být provedena, a metody přístupu k operandům. Kód příkazu má několik polí, která mají specifický funkční účel. Nejdůležitějšími poli každého příkazu jsou operační kód (COP), který určuje akci příkazu, a část adresy. Pole adresové části obsahují informace o adresách operandů a výsledku operace a v některých případech informace o adrese další instrukce.

Pokud adresa ukazuje na číslo paměťové buňky, ve které se operand nachází nebo kde je zadán, pak se nazývá přímá adresa.

Metody adresování jsou sadou mechanismů pro přístup k operandům. Některé z nich jsou jednoduché, výsledkem je kompaktní formát instrukce a rychlý přístup k operandu, ale mají omezené množství dostupných zdrojů. Jiné vám umožňují pracovat se všemi prostředky dostupnými v systému, ale příkaz se ukáže být dlouhý,

vstup a provedení stráví spoustu času. Sada metod adresování v každé sadě instrukcí je kompromisní kombinací známých mechanismů adresování zvolených návrháři architektury na základě sady úloh, které mají být řešeny.

Níže jsou uvedeny hlavní metody adresování používané v systému příkazů rodiny MCS-51.

Implicitní adresování. Příkaz neobsahuje explicitní údaje o adrese operandu účastnícího se operace nebo adrese, na které je umístěn výsledek operace, ale tato adresa je implikovaná. V příkazech je akumulátor nejčastěji implicitně adresován jako cíl výsledku operace. Například výsledek sečtení obsahu akumulátoru (A) a registru R1 aktuální databanky instrukcí ADD A,R1 je zapsán do implicitně adresovaného akumulátoru. Celá zadaná instrukce zabírá v paměti jeden bajt, přičemž adresa pouze akumulátoru (8Eh oblasti SFR) obsahuje jeden bajt.

Přímé adresování. V poli adresy příkazu, obsahovat

Nežije adresa operandu, ale operand samotný. Přímé adresování je označeno speciálním znakem # před číslem. Například příkaz MOV A,#15h načte do akumulátoru šestnáctkové číslo 15 (druhý bajt příkazu). V příkazovém systému se přímé adresování označuje jako #data, kde data jsou číslo

(data = 00h...FFh).

Přímé adresování. Pole adresy instrukce udává přímou adresu umístění datové paměti, ve které je operand umístěn nebo kde je zapsán. Například instrukce MOV A,15h načte obsah buňky DSEG na adrese 15h do akumulátoru. Paměťová buňka je adresovatelná přímo, zatímco akumulátor je adresován implicitně. V závislosti na umístění adresovaného operandu se přímé adresování dále dělí na přímé adresování registru a absolutní adresování.

Přímé adresování registru. Pole adresy příkazu obsahuje přímou adresu registru aktuální banky registrů. V každé bance je osm registrů a k jejich adresování je potřeba tříbitová přímá adresa. V mnemotechnických povelech je adresovatelný registr označen Rn, kde n=0...7. Všechna pole příkazu se vejdou do jednoho bajtu. Takové adresování se nazývá krátké. Například MOV R4, R1.

Přímé absolutní adresování umožňuje přístup k libovolné buňce DSEG a oblasti SFR. Přímá adresa v tomto případě trvá jeden bajt a příkaz dva bajty. V příkazovém systému je bajt přímé adresy označen slovem direct (přímý) (přímý = 00h ... FFh). Například instrukce MOV 80h,R2 (nebo MOV P0,R2) načte obsah registru R2 aktuální databanky do portu P0 (umístění 80h SFR). Pokud jsou oba operandy přímo absolutně adresovatelné, pak se instrukce stane tříbajtovou instrukcí (např. MOV 80h,15h).

nepřímé adresování. Pole adresy obsahuje adresu paměťového místa, kde se nachází přímá adresa operandu. V příkazovém systému je nepřímé adresování označeno speciálním znakem @. vlastnictví

registry R0 a R1 (@Ri, i = 0,1) každé banky registrů musí uložit přímou adresu. Pokud je například obsah registru R1 aktuální banky registrů 15h, pak instrukce MOV A,@R1 provede stejnou akci jako výše uvedená instrukce MOV A,15h – načte obsah paměťového místa DSEG. s adresou 15h do akumulátoru. Příkaz MOV A, @ R1 je však jednobajtový, ale hlavně je možné programově změnit adresu změnou obsahu registru R1.

Relativní adresování. Při relativním adresování je přímá adresa tvořena přidáním základní adresy do pole adresy instrukce. Obsah programového čítače se používá jako základní adresa a adresové pole instrukce je osmibitový rel (relativní) offset. Číslo rel je příkazem interpretováno jako celé číslo se znaménkem reprezentované dvojkovým doplňkem. Jeho prezentační rozsah je (-128...+127). Při určování čísla rel mějte na paměti, že počítadlo programu ukazuje na další instrukci, která má být provedena. Relativní adresování je široce používáno v řídicích přenosových instrukcích, což umožňuje vytváření přemístitelných programových modulů. Řídicí přenosové povely s relativním adresováním umožňují větvení vzhledem k aktuální pozici PC programu v obou směrech o (-128...+127) bytů.

V programech v assembleru lze pole offset použít k určení štítku, na který se má přejít. Výsledkem překladu je, že assembler vypočítá hodnotu offsetu, pokud nepřekročí (-128…+127). V opačném případě se zobrazí chybové hlášení.

Základní adresování představuje určitý druh relativního adresování. Přímá adresa je v tomto případě tvořena přidáním adresy uvedené v příkazu k obsahu základního registru, ve kterém je uložena základní adresa. Funkci základního registru v rodině MCS-51 plní registr datových ukazatelů DPTR nebo čítač programů PC. Tento typ adresování je zvláště užitečný při zpracování tabulek a datových polí. V instrukcích MOVC A,@A+DPTR a MOVC A,@A+PC je 16bitová přímá adresa tvořena součtem obsahů registrů DPTR a A nebo PC a A.

Adresování stránek. Při použití adresování stránek je paměť rozdělena na několik stránek stejné délky. Adresování stránek se provádí samostatným registrem stránek a paměťové buňky v rámci stránky jsou adresovány adresou obsaženou v instrukci. Přímá adresa je tvořena zřetězením (připojením) adresy stránek a adresy paměťové buňky v rámci stránky. V instrukci MOVX A,@Ri plní port P2 (vysoký bajt adresy) funkci registru stránky a obsah registru Ri (nízký bajt adresy) udává adresu v rámci stránky. V tomto případě je paměť rozdělena na 256 stránek po 256 buňkách v každé z nich.

Adresování zásobníku používá se v bezadresných příkazech a je kombinací metod auto-inkrementace a auto-dekrementace adresování, pracující na principu LIFO (Last I nput - First O output) - „poslední dovnitř - první ven“. Zásobník je umístěn v DSEG a roste ve směru rostoucí adresy. Adresa vrcholu zásobníku je obsažena v ukazateli zásobníku SP. Když je bajt vložen do zásobníku, obsah SP se nejprve zvýší a poté se zapíše adresa. Při čtení bajtu ze zásobníku nejprve čtěte na adrese, na kterou ukazuje SP, a poté snižujte SP. Při použití zásobníku mějte na paměti, že hloubka zásobníku (maximální počet paměťových buněk obsazených zásobníkem) není řízena hardwarem. Při nadměrném nárůstu zásobníku mohou být paměťové buňky, které k tomu nejsou určeny, zaměstnány ztrátou informací v nich. Hardwarový zásobník se používá k uložení návratové adresy při obsluze přerušení.

2.7.2. Velitelský systém rodiny MCS-51

Systém příkazů je uveden v tabulkách A2.1...A2.6 Přílohy 2. Tabulky udávají název příkazu, jeho mnemotechnickou pomůcku, binární operační kód, vliv provedeného příkazu na příznaky C, OV, AC a P, délka příkazu v bajtech (B) a doba provádění ve strojových cyklech (C), stejně jako obsah převodu prováděného instrukcí. Čárka se používá jako oddělovač adresních polí v příkazech. Pro zlepšení čitelnosti lze za čárku přidat mezery, pokud to používaný assembler podporuje.

Celou sadu příkazů lze rozdělit do 5 skupin: operace přenosu dat, aritmetické operace, logické operace, operace s bity a operace přenosu řízení.

Skupina příkazů operace přenosu dat(Tabulka A2.1) spolu-

obsahuje příkazy MOV (přenos dat mezi DSEG a RSEG), MOVC (mezi CSEG a A), MOVX (mezi XSEG a A), PUSH a POP a dva výměnné příkazy XCH a XCHD. Všechny instrukce přenosu dat, jejichž cílem je akumulátor, nastavují paritní příznak P obsahu akumulátoru a instrukce přímé adresy, jejichž cílem je registr PSW, mění všechny příznaky. Nejprostornější je instrukce MOV, která využívá čtyři způsoby adresování: přímý registr (A, Rn, DPTR), přímý (přímý), nepřímý (@Ri), přímý (#data, #data16). Druhý operand příkazu je zdroj, první operand je cíl. Existují tři způsoby adresování (kromě přímého) pro určení cíle a všechny čtyři pro určení zdroje. 3bajtová přímá, přímá instrukce MOV poskytuje přenos mezi libovolnými dvěma paměťovými buňkami (DSEG a SFR), včetně RSEG. Pro výměnu s RSEG jsou k dispozici speciální dvou- a jednobajtové formáty:

Speciální instrukce MOV DPTR,#data16 načte 16bitový ukazatel DPTR s hodnotou data16.

Instrukce MOVC umožňuje číst informace z paměti programu CSEG nikoli do příkazového registru řídicího zařízení, ale do akumulátoru ovládacího zařízení. Příkaz používá dva způsoby adresování: založené na DPTR a relativně k PC. V obou případech je celočíselný offset (index) bez znaménka uložen v akumulátoru. Akumulátor slouží také jako přijímač výsledku. Příkaz umožňuje provádět rychlé překódování podle tabulek.

K externí paměti se přistupuje pomocí instrukce MOVX. Výměna probíhá po bytech mezi akumulátorem a externím XSEG. Buňku XSEG lze adresovat dvěma způsoby: nepřímo prostřednictvím 16bitového ukazatele DPTR a po stránce nepřímo prostřednictvím 8bitového ukazatele Ri, i=0,1. V druhém případě je registr stránek P2.

Přenos dat zajišťují neadresné příkazy PUSH a POP

mezi DSEG, RSEG a SFR.

Příkaz XCH exchange poskytuje obousměrnou výměnu bajtů a příkaz XCHD poskytuje nižší tetrády bajtových operandů.

Skupina instrukcí pro aritmetické operace(Tabulka A2.2) co-

obsahuje Add ADD, Carry Add ADDC, Půjčit si odečíst SUBB, Inkrementovat a Dekrementovat o jeden INC a DEC, Packed BCD Decimal Correction, Multiply MUL a Divide DIV. Operace se provádějí na celých číslech bez znaménka. V operacích sčítání a odčítání je akumulátor prvním operandem a cílem výsledku. K definici druhého operandu se používá přímý registr, přímé absolutní, přímé a nepřímé adresování. Operace INC a DEC se vztahují na akumulátor, přímo adresovatelný registr, přímo nebo nepřímo adresovatelné paměťové místo. Kromě toho se operace INC vztahuje na obsah 16bitového registru ukazatele DPTR.

Operace násobení celého čísla a dělení bez znaménka zahrnují akumulátor a registr B. Násobení násobí 8bitovou hodnotu A 8bitovou hodnotou B a zapisuje 16bitový výsledek do páru BA. V tomto případě registr B ukládá nejvyšší část produktu. Příznak OV je nastaven, pokud je součin větší než 255. Když je 8bitová hodnota A dělena 8bitovou hodnotou B, podíl se zapíše do A a zbytek do B. Pokus o dělení 0 nastaví příznak přetečení OV.

Příkaz DA dekadické korekce akumulátoru je umístěn za příkazem sčítání. Termíny musí být uvedeny v kódu BCD. Korekce se provádí standardním způsobem.

Skupina logických instrukcí(Tabulka A2.3 ) obsahuje tři typické operace: ANL - logické AND, ORL - logické OR, XRL - logické výlučné OR. Zdroj prvního operandu

je buď akumulátor A nebo přímo adresovatelná paměťová buňka. Druhý operand je specifikován jednou ze čtyř základních metod adresování. Do skupiny patří také jednotlivé operace nad obsahem akumulátoru: CLR - nulování, CPL - inverze, dále RL, RLC, RR a RRC - operace cyklických a prodloužených řazení vpravo a vlevo. Patří sem i operace výměny tetrád ve SWAP akumulátoru, kterou lze interpretovat jako cyklický posun bajtu o čtyři bity.

Skupina instrukcí bitové operace(tabulka A2.6) obsahuje ko-

příkazy SETB - nastavit bit na 1, CLR - bit resetovat na 0, CPL - bitová inverze, ANL a ORL - logické AND a logické OR obsahu příznaku C a přímo adresovaného bitu, MOV - přesměrování bitů.

PROTI V bitových operacích hraje příznak C roli logického akumulátoru. Jako operandy se používá obsah příznaku C nebo přímo adresovatelný bit oblasti BSEG. V operacích ANL a ORL můžete použít obsah přímo adresovaného bitu (bit) nebo inverzní hodnotu obsahu (/bit).

PROTI tato skupina také zahrnuje instrukce podmíněného skoku s relativním 8bitový offset rel. Podmíněná větev může být provedena buď když je bit nastaven (příkaz JB), nebo vymazán (příkaz JNB). Za zmínku stojí zejména instrukce JBC, která po nastavení bitu implementuje větev a zároveň bit resetuje na 0.

Skupina příkazů pro přenos řízení(Tabulky A2.4 a A2.5)

drží pokyny pro nepodmíněné skoky AJMP, LJMP, SJMP, JMP, podmíněný skok JZ, JNZ, CJNE, volání ACALL, LCALL, návrat RET, RETI a aktualizace podmíněným skokem DJNZ. Je zde také zahrnut prázdný příkaz NOP.

PROTI Relativní adresování je široce používáno v příkazech pro přenos řízení, aby bylo možné vytvářet přemístitelné programové moduly. Relativní adresa je 8bitový offset rel je bajt se znaménkem, který poskytuje přechod na (-128… +127) bajtů vzhledem k aktuální poloze počítače. Přímou adresu addr16 nebo nepřímou adresu @A+DPTR lze použít k přeskočení na jakýkoli jiný bod v adresním prostoru o velikosti 64 kB. V druhém případě je obsah A interpretován jako celé číslo bez znaménka. Pro kompatibilitu s rodinou MCS-48 je představena varianta krátkého přímého adresování addr11 v rámci aktuální stránky 2K.

Všechny tyto typy adresování se používají v instrukcích skoku. Příkazy volání používají pouze přímé metody adresování addr16 a in-page addr11. Všechny podmíněné příkazy používají pouze relativní adresování.

Když mikrokontrolér rozpozná požadavek na přerušení, vydá instrukci LCALL addr16, která automaticky uloží návratovou adresu do zásobníku. Informace o stavu programu (obsah registru PSW) se automaticky neukládají. V čem

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í projektu v jazyce C 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 rozvoji specialit souvisejících s automatizací technologických procesů a odvětví je studium mikrokontrolérů jedním z důležitých úseků.

Ve světě dochází k neustálému vývoji a vzniku 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 patří 8bitovým zařízením. 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 získal podle prvního zástupce 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 předurč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 ovládání 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é multimódové čítače/časovače používané pro 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 se provádějí v jednom nebo dvou strojových cyklech, kromě příkazů 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 k zajištění výměny 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í paměti programu nebo dat (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 používat speciální bitové příkazy k adresování každé číslice paměťových buněk. Adresu přímo adresovatelných bitů lze také zapsat ve tvaru (ByteAddress).(Bit). Shoda mezi těmito dvěma způsoby adresování může být určena z tabulky. 1.1.

Ministerstvo všeobecného a odborného vzdělávání Ruské federace Novosibirská státní technická univerzita V.N. Vepřík, V.A. Afanasiev, A.I. Družinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko MIKROKONTROLÉRY RODINY MCS-51 Učebnice o kurzech "Mikroprocesorové systémy" a "Návrh mikroprocesorových systémů" pro starší studenty Fakulty automatizace a výpočetní techniky všech forem vzdělávání Novosibirsk 1997 V.N. Vepřík, V.A. Afanasiev, A.I. Družinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko. Mikrokontroléry rodiny MCS-51: Návod. - Novosibirsk. Učebnice, na kterou jste upozornili, obsahuje obecný popis architektury, funkčnosti a příkazového systému rodiny jednočipových mikrokontrolérů (Embedded Microcontrollers) MCS-51, výrobce INTEL. Druhá část návodu popisuje výukový mikroprocesorový řadič UMPC-51, nabízený studentům jako předmět studia při provádění cyklu laboratorních prací. Materiál příručky lze použít při navrhování kurzů a diplomů a může být také užitečný pro obvodové inženýry zabývající se vývojem a provozem elektronických zařízení. Autoři vyjadřují hlubokou vděčnost společnosti CJSC „New Technologies“, oficiálnímu distributorovi společnosti INTEL, za poskytnutí materiálů, na jejichž základě byla tato práce provedena. Tabulka 15, obr. 25, seznam lit. 12 titulů Recenzenti: E.D. Baran, G.G. Matuškin. Práce byla zpracována na katedře počítačového inženýrství státu Novosibirsk © Technická univerzita 2 ÚVOD. Rodina 8bitových jednočipových mikrokontrolérů MCS-51 se objevila na světovém trhu počátkem osmdesátých let. První úpravy krystalů (asi 7) byly vyrobeny kvalitní technologií n-MOS (HMOS) a byly funkčně dokončeny jednočipové mikropočítače harvardské architektury, jejichž jedním z hlavních principů je logické oddělení programu a dat. adresní prostory paměti. S rozvojem polovodičové technologie se další verze mikroobvodů MCS-51 začaly vyrábět pomocí pokročilejší a nízkopříkonové technologie CMOS (CHMOS) (v aktivním režimu byla spotřeba krystalů zvýšena na 1050 mA). Velitelský systém MCS-51, zaměřený na implementaci různých digitálních řídicích algoritmů, při zachování určité vnější podobnosti s řídicím systémem předchozí rodiny MCS-48, se kvalitativně rozšířil, objevily se v něm zásadní novinky: bitově orientované operace a bitová pole adresovaná v datové paměti, která umožnila hovořit o implementaci bitového procesoru na čipu; implementované provádění příkazů násobení, dělení a odčítání; zlepšená práce se zásobníkem; byla rozšířena skupina příkazů pro přenos řízení; Řídící systém začal vypadat symetricky, tedy méně závislý na datových přenosech přes baterii. Funkčnost vestavěných periferií byla také rozšířena zavedením: dvou 16bitových časovačů; hardwarový sériový duplexní port; dvouúrovňový systém přerušení; čtyři 8bitové I/O porty. Zásadní změny ve struktuře časového cyklu procesoru vedly k rychlejší práci s externí programovou a datovou pamětí a také reakcí na vnější a vnitřní přerušení. Celková velikost adresního prostoru externí programové a datové paměti se zvětšila na 128 KB. 16bitové registry programového čítače (Program Counter) a datového ukazatele (Data Pointer) umožňovaly přímý přístup k celému rozsahu adres, což dalo vývojářům možnost implementovat algoritmy pro rychlé zpracování velkých datových polí. Všechny softwarově dostupné uzly mikrokontroléru byly zredukovány na speciální datovou paměťovou oblast (Special Function Register), která k nim umožňovala přistupovat téměř stejně jako k běžným buňkám rezidentní RAM. V pozdějších modifikacích krystalů šlo vylepšení cestou zvýšení dodatečné funkčnosti při zachování plné softwarové kompatibility s dřívějšími verzemi. Vlastnosti nejnovějších modifikací mikrokontrolérů řady MCS-51 jsou: zcela statické provedení; 3- a 5-voltové verze krystalů; široká škála vestavěných periferií; maximální taktovací frekvence - 24 MHz; pro jednotlivé skupiny krystalů - 33 MHz. Aktuálně MCS-51 obsahuje asi 60 verzí krystalů, navíc je dostupná a dostupná podrobná proprietární dokumentace (bohužel zatím nebyla přeložena do ruštiny). K přípravě softwaru pro mikrokontroléry MCS-51 se používají především jazyky ASM-51, C, pro které existuje řada poměrně osvědčených překladačů, knihoven standardních podprogramů a softwarových emulátorů vyráběných různými zahraničními i tuzemskými společnostmi. . 3 Přes dostatečnou „starobylost“ rodiny (více než 15 let) a na světovém trhu se v posledních letech objevují jednočipové mikrokontroléry vyššího výkonu a vylepšené architektury – MCS-51, MCS-251, MCS-96, Regulátory MCS-51 budou dlouhou dobu široce používány v relativně jednoduchých vestavěných řídicích systémech. 4 1. SYSTÉM OZNAČOVÁNÍ SOUČÁSTÍ INTEL A FUNKČNÍ SLOŽENÍ RODINY MCS-51 K označování mikročipů používá INTEL systém zápisu skládající se z několika polí: , automobilová verze pro rozšířený teplotní rozsah (-40 / +125 C) M (Vojenské) , verze dle vojenských norem (-55 / +125 C) Q nebo C (Commercial), "komerční" teplotní rozsah (0 / +70 C ) s (160 8) - hodinový dynamický tepelný trénink; L nebo E (Extended), "rozšířený" teplotní rozsah (-40/+85 C) s (160 8) hodinovým dynamickým tepelným tréninkem; T (Extended), "rozšířený" teplotní rozsah (-40/+85 C) bez tepelného tréninku; I (Industrial), provedení dle průmyslových norem. Druhé pole obsahuje jedno- nebo dvoupísmennou předponu označující typ balení mikroobvodu (Package Type). Dnes existuje několik desítek různých typů mikroobvodových pouzder, proto jako příklad uvedeme pouze některá označení: A Ceramic Pin Grid Array, (PGA); C Ceramic Dual In-Line Package, (CDIP); K Ceramic Quad Flatpack Package, (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); KU Plastic Quad Flatpack Package, Fine Pitch, Die Up, (PQFP); N Plastový olovnatý nosič čipů, (PLCC); P Plastový duální in-line balíček, (PDIP); SM Single In-Line Leadless Memory Module, (SIMM); U Plastové Dual In-Line Package, Shrink Dip, (PDIPS); Z Cikcak In-Line Package, (ZIP). Třetí pole může obsahovat až 15 číselných a abecedních znaků označujících typ konkrétního zařízení umístěného na čipu. Čtvrté pole může obsahovat až šest číselných a abecedních znaků, které odrážejí různé vlastnosti a verze mikroobvodů. Další informace o typech pouzder a jejich provedení naleznete v knize: Objednací číslo balení 240800. S ohledem na popisované mikrokontroléry rodiny MCS-51 je první znak třetího pole tradičně (pro Intel) roven "8". Druhý znak třetího pole obvykle označuje typ vestavěné paměti ROM: 0 programová maska ​​ROM; krystal bez ROM (pro pozdější verze krystalů); 1 maska ​​programy ROM (standardní kód ROM, firmware); 3 maska ​​ROM (pro novější verze krystalů), (přizpůsobitelný ROM kód); 7 UFPROM nebo jednorázová programovatelná ROM (EPROM nebo OTP ROM); 8 EEPROM (Flash - paměť na čipu) Dále může následovat písmeno označující technologické vlastnosti výroby: bez písmene technologie HMOS, napájení 5V; S technologií CHMOS, napájení 5V; l technologie CHMOS, napájení 3V; 5 Dalšími znaky třetího pole pro mikrokontroléry řady MCS-51 jsou čísla (např. 31,32,51,54,58,152) a jedno až čtyři písmena, která odrážejí funkční vlastnosti čipů (např. velikost ROM, specifika skupiny čipů, přítomnost systémové ochrany programové paměti před neoprávněným přístupem, možnost použití pokročilejšího programovacího algoritmu „Quick Pulse“ a podobně). V původní technické dokumentaci od Intelu jsou všechny mikrokontroléry rodiny MCS-51 seskupeny do skupin ("Produktová řada"), z nichž každá kombinuje svou funkčností a elektrickými parametry nejbližší verze krystalů. Vzhledem k tomu, že názvy mikroobvodů jedné skupiny se mírně liší, pak se pro označení každé jednotlivé skupiny používá zobecněná symbolika, vytvořená z označení konkrétních mikroobvodů, nahrazením různých znaků písmenem „X“. Lze tedy rozlišit následující skupiny mikrokontrolérů. 1. Skupina 8X5X (produktová řada 8051 a produktová řada 8052): 8031AN, 8051AN, 8751H, 8051AHP, 8751H-8, 8751VN, 8032AN, 8052AN, 8752VN. 2. Skupina 8ХС51 (80С51 produktová řada): 80С31ВН, 80С51ВН, 87С51. 3. Skupina 8ХС5Х (8ХС52/54/58 Produktová řada): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Skupina 8XC51FX (8XC51FA/FB/FC produktová řada): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Skupina 8XL5X (produktová řada 8XL52/54/58): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Skupina 8XL51FX (8XL51FA/FB/FC Produktová řada): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Skupina 8XC51RX (8XC51RA/RB/RC Produktová řada): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Skupina 8XC51GB (produktová řada 8XC51GX): 80C51GB, 83C51GB, 87C51GB. 9. Skupina 8XC152JX (8XC152 Produktová řada): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Skupina 8XC51SL (produktová řada 8XC51SL): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51C51SL-AH,87C51C51AH, 80C51C51SLAL-808C51SL-BG, 80C51SL-BG 87C51SL-AL. První skupina mikrokontrolérů zahrnuje mladší modely rodiny, vyrobené pomocí technologie n-MOS a nedoporučované pro použití v novém vývoji, všechny ostatní skupiny jsou vyrobeny pomocí moderní technologie CMOS. Mikroobvody druhé, třetí a čtvrté skupiny jsou dnes klasickými zástupci rodiny MCS-51. Pátá a šestá skupina zahrnuje 3voltové verze krystalů (Low-Voltage). Krystaly sedmé skupiny jsou vybaveny rozšířenou RAM (Expanded RAM), jejíž objem je 512 bajtů. Mikroobvody osmé, deváté a desáté skupiny jsou mikrokontroléry specializované na aplikace (Application Specific). Mnoho dnešních aplikací vyžaduje vysoce výkonné řídicí mikrokontroléry, které využívají pokročilé možnosti adresování, architekturu registrů, velkou vnitřní paměť RAM a zásobník a efektivně podporují programování v jazyce na vysoké úrovni. Mezi tyto mikrokontroléry patří mikrokontroléry New Architecture z rodin MCS-5 a MCS-251, které Intel uvedl na trh v roce 1995. Funkční složení a klíčové vlastnosti mikrokontroléru MCS-51/MCS-251 jsou uvedeny v příloze. 6 2. HLAVNÍ CHARAKTERISTIKY ZÁKLADNÍHO MODELU RADY MIKROOVLÁDAČŮ MCS-51. Základním modelem rodiny mikrokontrolérů MCS-51 a základem pro všechny následné úpravy je mikrokontrolér I-8051. Jeho hlavní vlastnosti jsou následující: osmibitový CPU optimalizovaný pro řídicí funkce; vestavěný generátor hodin; adresní prostor programové paměti - 64 K; adresní prostor datové paměti - 64 K; vnitřní programová paměť - 4 K; vnitřní datová paměť - 128 bajtů; další funkce pro provádění operací booleovské algebry (bitové operace); 32 obousměrných a individuálně adresovatelných I/O linek; 2 x 16bitové multifunkční časovače/čítače; plně duplexní asynchronní transceiver; vektorový systém přerušení se dvěma úrovněmi priority a šesti zdroji událostí. Blokové schéma I-8051 je na obr. 1, přiřazení pinů mikroobvodu je na obr. 2. Externí přerušení Přerušení 128 bajtů Čítač T/C 0 4K Řízení ROM RAM T/C 1 vstupy CPU BUS 4 I/O Sériové řízení OSC Porty Port P0 P1 P2 P3 T D R D Adresa/data Obrázek 1. Blokové schéma I-8051 Celá řada MCS-51 má harvardskou architekturu, tedy samostatné adresní prostory programové a datové paměti. Organizace paměti je znázorněna na obrázku 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í ROM je určen hodnotou signálu na pinu EA (External Access): EA=Vcc (napájecí napětí) - přístup k interní ROM; EA=Vss (zemní potenciál) - přístup k externí ROM. U čipů ROMless musí být pin EA trvale připojen k Vss. Externí čtecí záblesk ROM - PS EN (Program Store Enable) je generován při přístupu k externí programové paměti a je neaktivní během přístupu k ROM umístěné na čipu. 7 Oblast nízké programové paměti využívá systém přerušení, architektura čipu 8051 poskytuje podporu pro 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. P1.0 1 40 Vcc P1.1 2 39 P0. 0 (AD0) P1,2 3 38 P0,1 (AD1) P1,3 4 37 P0,2 (AD2) P1,4 5 36 P0,3 (AD3) P1,5 6 35 P0,4 (AD4) P1. 6 7 34 P0,5 (AD5) P1,7 8 33 P0,6 (AD6) RESET 9 32 P0,7 (AD7) (RD) P3,0 10 31 EA/Vpp (TD) P3,1 11 30 ALE/ PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 ( A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Obr.2. Přiřazení pinů I-8051 Programová paměť (čtení) Datová paměť (čtení/zápis) FFFFH Externí ROM FFFFH Externí @DPTR RD paměť PSEN WR data @PC MOVC EA=0 Interní paměť @DPTR data @PC Externí Interní FFH horní 128 SFR MOVX ROM ROM 80H EA=0 0000H EA=1 spodní 128 00H 0000H PSEN Obr.3. Organizace paměti rodiny MCS-51 8 Obrázek 4 ukazuje mapu spodní oblasti paměti programu. ROM Programová paměť 0033H 002BH Sériový port 0023H Vector Timer1 001BH přeruší EINT1 0013H Timer0 000BH EINT0 0003H Start address 0000H (Reset) Obr.4. Paměť programu Adresy vektoru přerušení jsou umístěny v intervalech po 8 bytech: - 0003H externí přerušení 0 (External Interrupt 0) - výstup IN T 0 ; - 000BH přerušení od časovače 0 (příznakem přetečení časovače - T F 0); - 0013H externí přerušení 1 (External Interrupt 1) - výstup IN T 1; - 001BH přerušení od časovače 1 (příznakem přetečení časovače - T F 1); - 0023H přerušení sériového portu (sériové přerušení = přerušení příjmu nebo přerušení vysílání); atd. Paměť dat je oddělená od paměti programu. V této oblasti lze řešit 64K externí RAM. Při přístupu k externí datové paměti CPU mikrokontroléru generuje odpovídající signály pro čtení (RD) nebo zápis (W R), interakce s interní datovou pamětí se provádí na úrovni příkazů, zatímco signály RD a W R nejsou generovány. Externí programovou paměť a externí datovou paměť lze zkombinovat kombinací signálů R D a PS EN logickým AND způsobem pro vytvoření externí paměti (program/data) stroboskop. Spodních 128 bajtů interní datové paměti (dolních 128) je přítomno na všech čipech MCS-51 a je znázorněno na obrázku 5. Prvních 32 bajtů jsou 4 banky (banka registrů) z 8 registrů (R7...R0). Registry R0 a R1 v obou bankách lze použít jako registry nepřímých adres. 16 bajtů následujících za bankami registrů tvoří blok bitově adresovatelného prostoru. Instrukční sada MCS-51 obsahuje širokou škálu bitových operací a 128 bitů v tomto bloku je přímo adresovatelných a adresy se pohybují od 00H do 7FH. Všechny bajty ve spodní 128bajtové polovině paměti lze adresovat přímo nebo nepřímo. Horní 128bajtová polovina paměti RAM (horních 128) není přítomna v čipu I-8051, ale je k dispozici ve verzích čipů s 256 bajty RAM. V tomto případě je oblast "Upper 128" dostupná pouze s nepřímým adresováním. Oblast SFR (Special Function Register) je k dispozici pouze s přímým adresováním. Umístění registrů speciálních funkcí v prostoru SFR je znázorněno na obr.6. Zahrnují registry portů, časovače, ovládání periferií a tak dále. 9 7Fh Pull-čas-adresovatelná oblast 30H (přímá, nepřímá) 2FH 7Fh 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74h 73H 72H 71H 74h 73H 71H 71H 77H 71H 71H 71H 71H 0FH 0FH 0H 0DH 0CH 0FH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP po RESETU 00H RB0(R7+R0) Obr.5. Spodních 128 bajtů vnitřní paměti RAM. D bitové adresování 8 bajtů F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 97H 98H SCON1 DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Obr.6. Umístění registrů speciálních funkcí v prostoru SFR. Pro 16 adres v prostoru SFR je možné bytové i bitové adresování. U bitově adresovatelných registrů končí hexadecimální adresa "0H" nebo "8H". Bitové adresy v této oblasti mají hodnoty od 80H do FFH. Celá série krystalů rodiny MCS-51 má základní sadu SFR, stejně jako čip I-8051, umístěnou na stejných adresách. V krystalech, které představují další vývoj rodiny v regionu SFR, jsou však přidány nové registry pro rozšíření 10