Blokové schéma, ALU, datová paměť. Mikrokontroléry MCS-51

V současné době různé firmy vyrábějí mnoho modifikací a analogů této rodiny, a to jak od Intelu, tak od jiných výrobců, hodinová frekvence a kapacita paměti se zdesetinásobily a stále rostou. Doplňuje se také sada modulů zabudovaných v LSI, velké množství moderních modelů je vybaveno rezidentním vysokorychlostním ADC, které má až 12 a nyní může být více číslic. Ale srdcem rodiny MCS51 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 8XXX, analogová - řada 1816 v Rusku a Bělorusku) a technologie k-MOS (řada 8ХСХХ, analogová - řada 1830). Druhý znak za 8 znamená: 0 - žádná EPROM na čipu, 7 - 4K ultrafialová vymazatelná EPROM. Třetí symbol: 3 - ROM bude krystalizována, 5 - pokud není EPROM, pak bude na čipu maska ​​ROM.

A tak 80S51 - LSI podle technologie k-MOS s maskovanou ROM na čipu, 8031 ​​​​- LSI n-MOS bez programové paměti (ROM, EPROM) na čipu, 8751 - LSI n-MOS s rezidentem (umístěný na čip) EPROM s ultrafialovým výmazem. Dále se budeme zabývat LSI 8751 a v případě potřeby učiníme výhrady k rozdílům v jiných obvodech a uvedeme ty 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 manuálech a technické dokumentaci.

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

Rodina MCS51 je založena na pěti modifikacích MK (se shodnými základní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 základních vzorků rodiny je 12 MHz.

Tabulka 3.1.

Mikroobvody

Vnitřní programová paměť, bajty

Typ paměti programu

Vnitřní datová paměť, bajty

Hodinová frekvence, MHz

Spotřební proud, mA

MK 8051 a 80C51 obsahují maskově programovatelnou ROM programové paměti s kapacitou 4096 bytů při výrobě krystalu a jsou určeny pro použití v hromadné výrobě. MK 8751 obsahuje EPROM o kapacitě 4096 bajtů 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í re-

periodická úprava.

MK 8031 ​​​​a 80C31 neobsahují vestavěnou programovou paměť. Stejně jako dříve popsané modifikace mohou využívat až 64 kB externí programové paměti a lze je efektivně použít v systémech vyžadujících mnohem větší objem (než 4 kB na čipu) programové paměti.

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

    centrální osmibitový procesor;

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

    datová paměť 128 bajtů;

    čtyři osmibitové programovatelné I/O porty;

    dva 16bitové multirežimové časovače / čítače;

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

    sériové rozhraní obsahující univerzální duplexní transceiver schopný 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 jedné nebo druhé banky je určen programem 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é řídí prvky MK. Existují následující provozní režimy mikrokontroléru:

1). Generální reset. 2) Normální fungování. 3) Režim nízké spotřeby a klidový režim. 4). Rezidentní programovací režim 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 A1.

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í paměti s libovolným přístupem jsou umístěny 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:

Nejméně významný bajt

Vysoký bajt

Přerušit registr priorit

Registr povolení přerušení

Registr režimu časovače / čítače

Registr ovládání časovače / čítače

Timer / Counter 0. High Byte

Timer / Counter 0. Low Byte

Timer / Counter 1. High Byte

Timer / Counter 1. Low Byte

Ovládání sériového portu

Vyrovnávací paměť sériového portu

Řízení spotřeby

* - registry, přiznávající bitový oslovování

Podívejme se rychle na funkce registrů SFR uvedených v tabulce 3.2.

baterie ACC - registr baterií. Příkazy navržené tak, aby fungovaly

jste s baterií, použijte mnemotechnickou pomůcku "A", např. MOV A, P2 ... Mnemotechnická pomůcka "ACC" se používá například pro bitové adresování baterie. Takže symbolický název pátého bitu akumulátoru při použití assembleru A5M51 bude následující: ACC. 5.

Registrovat PROTI ... Používá se při operacích násobení a dělení. Pro ostatní instrukce lze registr B považovat za doplňkový superoperační registr.

Registrovat bohatství programy PSW obsahuje informace o stavu programu a instaluje se částečně automaticky na základě výsledku 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 bitu

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

Hardware nebo software

Dodatečná nosná vlajka. Hardware nastaven / vymazán během instrukcí sčítání nebo odčítání, aby indikoval přenos nebo vypůjčení v bitu 3, když je generován nejméně významný kousíček výsledku (D0-D3).

Hardware nebo software

Příznak 0. Uživatelem definovaný příznak.

Programově

Programově

Ukazatel banky pracovního registru

Programově

Banka 0 s adresami (00H - 07H) Banka 1 s adresami (08H - 0FH) Banka 2 s adresami (10H - 17H) Banka 3 s adresami (18H - 1FH)

Vlajka přetečení. Hardware je nastaven nebo vymazán během provádění aritmetických instrukcí, aby indikoval stav přetečení

Hardware nebo software

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

Paritní bit. Hardware se vymaže nebo nastaví v každém instrukčním cyklu, aby indikoval sudý nebo lichý počet bitů baterie 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 při provádění příkazů 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 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érů.

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 zapsán 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" portů P0, P1, P2, P3.

Buffer konzistentní přístav SBUF sestává ze dvou samostatných registrů: vyrovnávací paměti vysílače a vyrovnávací paměti 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čítána z vyrovnávací paměti přijímače.

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

bitové počítací registry pro časovač / čítač 0 a časovač / čítač 1.

Registry řízení. Registry speciálních funkcí IP, IE, TMOD, TCON, SCON a PCON obsahují řídicí bity a stavové bity systému přerušení, časovač

měřiče / čítače 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 1 EA

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

Při provozu MK poskytuje:

    minimální doba pro provedení 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í quartz, LC-řetězce nebo externího oscilátoru.

Rozšířený instrukční systém poskytuje byte a bitové adresování, binární a binárně-decimální aritmetiku, indikaci přetečení a sudou / lichou paritu a možnost implementace logického procesoru.

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

Obrázek 3.2. Externí závěry

mikrokontrolér

používané v logických výpočtech. Zatímco podpora jednoduchých datových typů (s existujícími

trend ke zvětšování délky slov) se může na první pohled zdát jako krok zpět, tato kvalita činí rodinu mikrokontrolérů MCS51 zvláště vhodnou pro aplikace, ve kterých se používají regulátory. 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 rodina procesorů MCS51 Boolean. S tak výkonnou ALU je řada instrukcí MCS51 stejně dobře vhodná pro aplikace řízení v reálném čase a datově náročné algoritmy.

Schematické schéma mikrokontroléru je na Obr. 3.2. V základní verzi je zabalen ve 40pinovém DIP pouzdru. Podívejme se na účel závěrů.

Začněme napájecími kolíky «0 PROTI" a "5 PROTI" , za kterou dostává hlavní jídlo. Spotřeba proudu je uvedena v tabulce. 3.1.

Výstup "RST" - reset mikrokontroléru. Když je na tento kolík aplikována aktivní vysoká úroveň, režimu běžný dumping a MK provádí následující akce:

Nastaví čítač příkazů 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 je nastaven na 07H;

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

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

odděluje piny ALE a PME jako vstupy pro externí synchronizaci;

      v registrech speciálních funkcí PCON, IP a IE jsou náhradní bity náhodně uspořádány a všechny ostatní bity jsou nastaveny na nulu;

      náhodné hodnoty se nastavují v registru SBUF.

      nastaví latches-latche portů P0-P3 na "1".

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

Tabulka 3.5.

Informace

Neurčitý

0ХХХ0000В pro k-MOS 0XXXXXXXB pro n-MOS

Pin RST má také alternativní funkci. Jeho prostřednictvím je přiváděno záložní napájení, které udrží obsah paměti RAM mikrokontroléru beze změny, když je hlavní odstraněna.

závěry BQ1, BQ2 určený pro připojení křemenného rezonátoru, který určuje hodinový kmitočet MK.

Výstup 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ň. Čep má alternativní účel (funkci). Je napájen napětím programování EPROM v programovacím režimu.

Výstup PME (P rogram M emory E ušlechtilý povolení Paměť programy) - určený k řízení cyklu čtení z paměti programu a je automaticky aktivován MC v každém cyklu stroje.

Výstup Ale (A šaty L ength E ušlechtilý povolení juniorský adresy) blikne výstup spodní části adresy na portu P0. Výstup se používá i při programování EPROM, přičemž je do něj přiváděn zábleskový impuls.

MK obsahuje čtyři skupiny portů: P0, P1, P2 a P3. Jedná se o zbytek ze 40 pinů mikrokontroléru. Tyto porty mohou sloužit pro bit-by-bit I/O informace, ale kromě toho má každý z nich svou vlastní specializaci. Zobecněné funkční schéma portu je na Obr. 3.3. Port obsahuje výstupní FET spínače připojené ke kolíku, funkční spínač, západku na D-flip-flopu a řídicí logiku. Západka na vnitřní sběrnici MK může být zapsána jedna nebo nula. Tato informace prochází přepínačem funkcí k výstupním tlačítkům a kolíku MK. Ve stavu jedna jsou oba tranzistory N a N1 vypnuty, ale N2 je zapnutý. 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 stav pinu uvolněn. Mikrokontrolér umí samostatně číst stav západky portu a stav jeho výstupu, nastavený externím signálem. K tomu v assembleru MK existují speciální příkazy, které aktivují odpovídající řádky. Ke čtení stavu kolíku musí být odpovídající západka portu

být předem nahrané

Z vnitřního

Ovládání západky

Volič funkcí

Vcc

Víkendy

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

má pneumatiky MK D Q

Latch zápis C Q

Čtení západky

Port pin

Stav západky, která je přiváděna na interní sběrnici MC, se aktivuje, když

"Read 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 adresových sběrnic a

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

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

mikrokontrolér. Při přístupu do externí programové paměti nebo při provedení příkazu pro přístup k externí datové paměti se na pinech portu nastaví spodní část adresy (A0 ... A7), která je hradla vysoko na pinu ALE. Poté se při zápisu do datové paměti nahrané informace z vnitřní sběrnice MC přivedou na piny portu P0. Při operacích čtení naopak informace z pinů portu jdou na interní sběrnici. Charakteristickým rysem portu P0 je absence „pull-up“ tranzistoru N2, který zajišťuje napájení výstupu. Zápis do západky portu jednotky jej jednoduše uvede do stavu vysoké impedance, který je nezbytný pro normální provoz datové sběrnice. Pokud je nutné napájet nějaká externí zařízení přes výstup, měli byste na výstup portu umístit externí odpory z napájecích obvodů.

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

Přístav P2 - univerzální obousměrný I/O port, jako alternativní funkce, provádějící vydání nadřazené části adresy (A8 ... A15) 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 implementaci různých alternativních funkcí. V tomto případě jsou alternativní funkce implementovány pouze tehdy, jsou-li jedničky zapsány na západky pinů portu, jinak je provádění alternativních funkcí zablokováno. Uveďme je zvlášť pro každý bit:

P3.0 RxD (Rčíst e X vnitřní D ate, read externí 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) - výstup vestavěného sériového 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 C / T0 - vstup nulového vestavěného časovače / čítače.

P3.5 C / T1 - vstup prvního vestavěného časovače / čítače.

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 schopny dodávat proud asi 0,2 mA v jedné jednotce a přijímat proud 3 mA při nule, piny portu P0 jsou výkonnější a schopné dodat proud asi 0,8 mA na jednotku a příjem proudu 5 mA při nule. Stručné informace o účelu pinů mikrokontroléru jsou uvedeny v tabulce 3.6.

Tabulka 3.6.

Označení

Přiřazení pinu

8bitový obousměrný port P1. Vstup adresy A0-A7 při kontrole vnitřní paměti ROM (EPROM)

vstoupit do výstupu

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

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

vstoupit do výstupu

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 / čítače 0: - T0

Časovač / Čítač 1 Vstup: - 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`

Vývody pro připojení křemenného rezonátoru.

výstupní vchod

Obecný závěr

8bitový obousměrný P2. Adresový výstup A8-A15 v režimu provozu s externí pamětí. V režimu vnitřní kontroly ROM jsou jako vstup adresy A8-A14 použity piny P2.0 - P2.6. Závěr P2.7 - povolení ke čtení ROM.

vstoupit do výstupu

Rozlišení paměti programu

Výstupní signál povolení blokování adresy. Při programování signálu EPROM: PROG

vstoupit do výstupu

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

vstoupit do výstupu

8bitový obousměrný port P0. Adresová / datová sběrnice r práce s externí pamětí. Datový výstup D7-D0 v režimu kontroly interní ROM (EPROM).

vstoupit do výstupu

Napájení ze zdroje napětí + 5V

U zrodu výroby mikrokontrolérů je Intel s osmibitovými mikrokontroléry rodiny 8048 a 8051. Architektura MCS-51 získala své jméno podle prvního zástupce této rodiny - mikrokontroléru 8051, vydaného v roce 1980 na základě technologie HMOS. Úspěšná sada periferních zařízení, flexibilní výběr externí nebo interní programové paměti a přijatelná cena zajistily tomuto mikrokontroléru úspěch na trhu. Z hlediska technologie byl mikrokontrolér 8051 na svou dobu velmi složitým produktem - v krystalu bylo použito 128 tisíc tranzistorů, což bylo 4x více než počet tranzistorů v 16bitovém mikroprocesoru 8086.

Hlavní prvky základní architektury jsou:
- 8bitová ALU založená na architektuře baterie;
- 4 banky registrů, 8 v každé;
- vestavěná programová paměť 4Kbyte;
- vnitřní RAM 128 bajtů;
- booleovský procesor
-2 šestnáctibitové časovače;
- řadič sériového kanálu (UART);
- řadič zpracování přerušení se dvěma úrovněmi priority;
- čtyři 8bitové I/O porty, z nichž dva se používají jako adresová/datová sběrnice pro přístup k externí programové a datové paměti;
- vestavěný generátor hodin.

Právě tento mikrokontrolér je vývojářům nejznámější a je oblíbeným ovládacím nástrojem v celé řadě zařízení. K dispozici je mnoho emulátorů, debuggerů a programátorů 8051, takže vývoj softwaru je snadný.

Dalším zásadním krokem ve vývoji MCS-51 byl převod výrobní technologie na CHMOS. To umožnilo implementovat režimy Idle a Power Down, což umožnilo drasticky snížit spotřebu energie krystalu a otevřelo cestu k použití mikrokontroléru v nestabilních aplikacích, například v samostatných bateriích. zařízení.

A poslední zásadní etapou ve vývoji tohoto směru ze strany Intelu v rámci 8bitové architektury bylo vydání mikrokontrolérů 8xC51FA / FB / FC, které jsou pro stručnost často označovány jako 8xC51FX. Hlavním rozlišovacím znakem této skupiny krystalů je přítomnost řady programovatelných čítačů (PCA). Blokové schéma PCA je na obr. 2. Obr.

PCA zahrnuje:

Počítadlo časovače obsluhuje všech pět vzorkovacích a porovnávacích modulů, které lze naprogramovat tak, aby vykonávaly jednu z následujících funkcí:

16bitové vzorkování hodnoty časovače na kladné hraně externího signálu;
16bitové vzorkování hodnoty časovače na záporné hraně externího signálu;
16bitové vzorkování hodnoty časovače na libovolné hraně externího signálu;
16bitový softwarový časovač;
16bitové vysokorychlostní výstupní zařízení (HSO);
8bitové PWM

Všechny výše uvedené funkce jsou prováděny v PCA na hardwarové úrovni a nenačítají se procesor, což umožňuje zvýšit celkovou propustnost systému, zlepšit přesnost měření a zpracování signálu a zkrátit dobu odezvy mikrokontroléru na vnější události, což je důležité zejména pro systémy pracující v reálném čase. PCA implementovaná v 8xC51FX se ukázala být natolik úspěšná, že se architektura FX mikrokontrolérů stala de facto průmyslovým standardem a samotná PCA byla opakovaně reprodukována v různých modifikacích mikrokontrolérů od různých firem.

Původním úzkým hrdlem architektury MCS-51 byla 8bitová baterie ALU a relativně pomalé provádění instrukcí (nejrychlejší instrukce vyžadují k provedení 12 hodinových cyklů). To omezilo použití mikrokontrolérů této rodiny v aplikacích vyžadujících vysoký výkon a složité výpočty (16- a 32-bit). Otázka zásadní modernizace staré architektury se stala naléhavou. Problém modernizace byl komplikován skutečností, že na začátku 90. let již bylo vytvořeno mnoho vývoje v oblasti softwaru a hardwaru a jedním z hlavních úkolů vývoje nové architektury byla implementace hardwaru a softwaru. kompatibilita se starým vývojem založeným na MCS-51. K vyřešení tohoto problému byl vytvořen společný tým specialistů společností Intel a Philips. V důsledku toho se v roce 1995 objevily dvě výrazně odlišné rodiny: MCS-251/151 od Intelu a 51XA od Philipsu (u posledně jmenované se zastavíme níže).

Hlavní vlastnosti architektury MSC-251:

24bitový lineární adresní prostor, adresování až 16M paměti(vyráběné mikrokontroléry řady MCS-251 mají paměťový adresní prostor 256K);
Instrukční sada mikrokontroléru rodiny MCS-251 obsahuje všech 111 instrukcí obsažených v instrukční sadě mikrokontroléru rodiny MCS-51 ("staré" instrukce) a navíc obsahuje 157 "nových" instrukcí. Některé nové kódy příkazů jsou ve 4bajtovém formátu.
Před použitím mikrokontroléru je nutné jej nakonfigurovat, tzn. s pomocí programátoru „vypalte“ konfigurační bajty, které určují, která z instrukčních sad bude po zapnutí aktivní. Pokud nainstalujete instrukční sadu MCS-51, bude MSC-251 binárně kompatibilní s MCS-51. Tento režim se nazývá binární režim. Rozšířené instrukce v tomto režimu jsou však dostupné také prostřednictvím „okna“ – vyhrazený kód instrukce 0A5h. Přirozeně se pak délka každé rozšířené instrukce zvětší o 1 bajt. Pokud zpočátku nainstalujete sadu rozšířených instrukcí, pak v tomto případě budou programy napsané pro MCS-51 vyžadovat rekompilaci křížových prostředků pro MCS-51, protože nyní budou standardní instrukce dostupné přes stejné "okno" 0A5h a jejich délka se také prodlouží o 1 bajt. Tento režim se nazývá Source Mode. Umožňuje vám vytěžit maximum z rozšířených instrukcí a získat nejlepší výkon, ale vyžaduje přepracování softwaru.
architektura registrů, která umožňuje přístup k registrům jako bajty, slova a dvojitá slova;
režim adresování stránek pro urychlení výběru instrukcí z externí programové paměti;
fronta pokynů;
rozšířená instrukční sada včetně 16bitových aritmetických a logických instrukcí;
rozšířený adresní prostor zásobníku až na 64 kB;
provedení nejrychlejší instrukce ve 2 hodinových cyklech;
kompatibilita na úrovni binární kód s programy pro MCS-51.

Pro uživatele orientované na použití mikrokontrolérů MCS-251 jako mechanické náhrady za MCS-51 Intel vyrábí mikrokontroléry MCS-251 s předprogramovanými konfiguračními bity ve stavu Binary Mode. Takové mikrokontroléry obdržely index MCS-151.

Kromě samotného Intelu jsou mikrokontroléry MCS-251 licencovány společností Temic Semiconductors.

Univerzální sériová sběrnice(Universal Serial Bus nebo USB), rozšiřuje technologii Plug-and-Play na externí I/O zařízení používaná v moderních vysoce výkonných osobních počítačích.

Aby bylo možné připojit různé periferní zařízení, USB standard jsou definovány čtyři režimy přenosu: Control, Isochronous, Pulse a Array přenos. Každé periferní zařízení musí podporovat režim řízení pro přenos konfiguračních parametrů, příkazů a informací o stavu zařízení. Izochronní přenos poskytuje zaručený přístup ke sběrnici, konstantní šířku pásma a toleranci chyb, tento přenosový režim lze použít v audio výstupních zařízeních a počítačové telefonii. Pulzní přenos je určen pro vstupní zařízení, jako je myš, joystick nebo klávesnice, která přenášejí informace zřídka a po malých částech, ale s omezenou servisní dobou. Přenos pole umožňuje zařízením, jako jsou skenery, faxy nebo digitální fotoaparáty, přenášet velké množství dat do osobního počítače, jakmile se uvolní kanál sběrnice.

Hlavní vlastnosti produktu

Plně kompatibilní se "Universal Serial Bus Specification 1.0"
Integrovaný USB transceiver Serial Bus Interface Engine (SIE)
Čtyři FIFO fronty pro přenos
Tři 16bajtové FIFO fronty
Čtyři FIFO fronty pro příjem
Tři 16bajtové FIFO fronty
Jedno konfigurovatelné FIFO (až 1024 bajtů)
Automatické řízení příjmu / vysílání ve frontách FIFO
Zastavit / obnovit operace
Tři vektory přerušení sběrnice USB
Cyklus fázového závěsu
Přenosové rychlosti: 12 Mbps a 1,5 Mbps
Režim pomalého cyklu
Externí adresní prostor s kapacitou 256 KB
Úsporné režimy: pohotovostní režim a vypnutí
Uživatelsky definovatelné parametry
Čekání v reálném čase
1KB RAM na čipu
Čtyři I/O porty
Programovatelné pole čítačů (PCA)
Standardní (MCS 51) mikrokontrolér UART
Hardwarový hlídací časovač
Tři flexibilní 16bitové časovače / čítače
Kompatibilní s instrukční sadou mikrokontroléru MCS 51 a MCS 251
Architektura mikrokontroléru MCS 251 založená na registrech
Pracovní frekvence 6 nebo 12 MHz

Ovladač 8x930Hx má další funkce:

USB hub
Možnosti ovládání USB hubu
Správa připojení
Detekce připojení / rozpojení s výstupním zařízením
Správa napájení včetně zastavení / obnovení
Detekce a obnova poruch sběrnice
Podporuje vysokorychlostní a nízkorychlostní výstupní zařízení
Výstupní kontakt pro spínání napájení portu
Vstupní kontakt pro detekci přetížení

Čtyři různé režimy přenosu dat přes USB jsou poskytovány třemi prvky, které spolupracují: Host, Hub, Funkční zařízení. Hostitel řídí přenos obsahu a řídicí informace na sběrnici. Funkční zařízení rozšiřují hostitelské systémy. Patří sem typické typy práce s PC: vstup z klávesnice nebo joysticku, výstup na monitor; a složitější činnosti, jako je digitální telefonování a přenos obrazu. Pro ovládání funkčních zařízení byl navržen mikrokontrolér Intel 8x930Ax. Konečně rozbočovače poskytují prodlužovací bod USB, který poskytuje přístup k dalším funkčním zařízením. Mikrokontrolér Intel 8x930Hx, který kombinuje funkce ovládání funkčních zařízení a USB hubu, je prvním sériovým USB hubem určeným pro moderní PC periferie.

Rozbočovače USB hrají zásadní roli při rozšiřování světa uživatelů PC. S příchodem periferních zařízení – klávesnic, monitorů, tiskáren a dalších – s vestavěnými rozbočovači je připojení nebo odpojení nového zařízení stejně snadné jako zapojení do elektrické zásuvky. Nové úrovně výkonu a pokročilé připojení USB by mohly vést k pracovním a zábavním zařízením nové generace. Dny vložených karet, konfliktů IRQ a zamotaných drátů jsou sečteny.

Kabel USB sběrnice se skládá pouze ze čtyř vodičů: Vbus, D+, D- a GND - což zjednodušuje a sjednocuje připojení. Ke stejnému účelu slouží jediný standardní konektor pro připojení periferních zařízení ke sběrnici USB. Data se po kabelech D + a D- přenášejí odlišně, buď plnou rychlostí 12 Mbps, nebo nízkou rychlostí 1,5 Mbps. Transceiver je zabudován do krystalu, takže nejsou potřeba externí elektronické obvody. Výjimkou je koncový pull-up rezistor na vedení D + i D-, který je nutný pro určení typu zařízení: vysokorychlostní nebo nízkorychlostní.

Přehled rodiny
Rodina Intel 8x930 se skládá ze dvou jednočipových řadičů.

Řadič Intel 8x930Ax je 8bitové zařízení založené na architektuře mikrokontroléru MCS 251 a navržené pro práci s USB periferiemi. Na druhou stranu 8x930Hx používá stejné jádro mikrokontroléru MCS 251 plus vylepšené možnosti integrovaného rozbočovače USB. Použití architektury MCS 251 v obou řadičích sběrnice USB nabízí následující výhody:

Vysoký výkon
Použití smíšených typů paměti a adresování
Nízká spotřeba energie
Nízká hladina hluku
Efektivní jazyková podpora na vysoké úrovni
Rozšířená sada příkazů
Vestavěné schopnosti

Pokyny pro 8x930Ax mohou být pokyny jak ze sady mikrokontrolérů MCS 51, tak ze sady mikrokontrolérů MCS 251. Tento přístup šetří uživatelům investice do softwaru a vytlačuje z aplikací maximální výkon.

Mikrokontroléry 8x930 jsou tak plné různých vestavěných funkcí, že vypadají výkonněji než pouhé mikrokontroléry. Programmable Counter Array (PCA) poskytuje flexibilitu pro aplikace, které vyžadují porovnání nebo zachycení v reálném čase, vysokorychlostní komunikaci nebo pulzně šířkovou modulaci. Kromě toho ovladač obsahuje rozšířený sériový port, tři 16bitové časovače / čítače, hardwarový hlídací časovač, čtyři 8bitové I/O porty a dva režimy úspory energie: pohotovostní režim a vypnutí.

Ovladače řady 8x930Ax jsou vybaveny 1 KB paměti a lze je použít ve verzích bez trvalé paměti, nebo s 8 nebo 16 KB permanentní pamětí. Mohou adresovat až 256K bajtů externí paměti pro instrukce a data a 40 bajtů univerzálních registrů, které jsou umístěny v CPU jako soubor registrů. V závislosti na použité kombinaci může soubor registrů obsahovat 16 bajtových registrů, 16 dvoubajtových registrů a 10 čtyřbajtových registrů.

Kontroléry mají flexibilní rozhraní s externí pamětí. Je možné přidat tři čekací smyčky pro přístup k zařízením s pomalou pamětí a zavolat funkci v reálném čase pro generování více smyček. Načítání externích instrukcí může zlepšit výkon pomocí režimu stránky, ve kterém jsou data vyprázdněna do bajtu vyššího řádu adresy.

Oba řadiče 8x930 jsou vybaveny osmi FIFO frontami pro podporu vnitřní zařízení výstup: čtyři fronty pro přenos a čtyři fronty pro příjem. Čtyři FIFO pro vysílání / příjem podporují čtyři koncová funkční zařízení (0 až 3). Fronta 0 se skládá z 16 bajtů a je určena pro přenos řídicích informací. Fronta 1 je uživatelsky konfigurovatelná a má kapacitu až 1 024 bajtů. Fronty 2 a 3 se skládají z každé 16 bajtů a lze je použít k přenosu informací v pulzním, izochronním režimu a režimu přenosu pole. V případě řadiče 8x930Hx jsou uvedené fronty zesíleny dvojicí FIFO front pro vstupní zařízení. Tyto fronty v řadiči 8x930Hx jsou podporovány volitelným opakovačem, který je zodpovědný za opětovné vysílání datových toků generovaných výstupními zařízeními.

Přehled architektury
Strukturálně lze implementaci USB v mikrokontrolérech 8x930Ax a 8x930Hx rozdělit do čtyř bloků: fronty FIFO, blok rozhraní s funkčními zařízeními, blok rozhraní se sériovou sběrnicí a transceiver. Ovladač 8x930Hx má další jednotky pro ovládání funkcí hubu: jednotku rozhraní s hubem a opakovačem.

FIFO pro vysílání a příjem na obou ovladačích jsou kruhové. Fronty podporují až dvě samostatné datové sady s proměnnou velikostí a obsahují registry počtu bajtů, které udávají počet bajtů v datových sadách. Fronty jsou vybaveny příznaky indikujícími, zda je fronta plná nebo prázdná, a jsou také schopny opakovat příjem nebo přenos aktuálního souboru dat. Jednotka rozhraní s funkčními zařízeními (IFD) distribuuje vysílané nebo přijímané USB data podle typu přenosu a stavu front. Kromě toho jednotka IFU monitoruje stav transakce, spravuje fronty FIFO a hlásí výskyt řídicích událostí centrálnímu procesoru 8x930 pomocí požadavku na přerušení.

Jednotka rozhraní sériové sběrnice implementuje přenosový protokol USB: sekvenčně objednává pakety, generuje a rozpoznává signál, generuje a kontroluje kontrolní součty, kóduje / dekóduje data pomocí metody NRZI, vyplňuje bity, generuje a rozpoznává identifikátor paketu (PID).

Integrovaný transceiver na mikrokontrolérech USB je přizpůsoben jednoduchému čtyřvodičovému rozhraní definovanému specifikací USB 1.0. Řada řadičů 8x930 má tři přerušení související s USB. Dochází k nim při každém začátku rámce, konci příjmu / přenosu dat do koncových funkčních zařízení, v případě globálního pozastavení nebo obnovení práce. V rozbočovači 8x930Hx se jednotka rozhraní rozbočovače používá k ovládání a sledování stavu připojení k výstupním portům. Opakovač je zodpovědný za šíření signálů USB nahoru a dolů.

Mikrokontroléry rodiny MCS-51 jsou postaveny podle Harvardské architektury, ve které je paměť programu a datová paměť oddíly mají své vlastní adresní prostory a způsoby, jak k nim přistupovat.

Paměť programu


Maximální velikost paměti je 64K bajtů, z toho 4K, 8K, 16K nebo 32K bajtů paměti (tabulka 7.3.1) je umístěno na matrici, zbytek je mimo matrici.
S napětím na svorce EA = V CC používá se interní i externí paměť, přičemž EA = V CC = 0 - pouze externí paměť.
Tabulka 7.3.1 ukazuje adresa adresy na paměť programu pro indikované případy.
Spodní oblast paměti programu je vyhrazena pro spuštění činnosti mikrokontroléru (počáteční adresa 0000h po resetu) a pro zpracování přerušení (adresy přerušení jsou umístěny s intervalem 8 bajtů: 0003h, 000Bh, 0013h atd.).


Programová paměť je pouze pro čtení a při přístupu:

● do externí paměť programy, je generován signál ¯PSEN a je vždy vytvořena 16bitová adresa.
Nízký bajt adresy je přenášen přes port P0 v první polovině strojového cyklu a je fixován na okraji ALE stroboskopu v registru.
V druhé polovině cyklu je port P0 použit pro vložení datového bytu z externí paměti do MC.
Byte vyššího řádu adresy je přenášen přes port P2 po celou dobu přístupu do paměti (obr. 7.1.11);

● do vnitřní paměť čtený signál se negeneruje a na vnitřní sběrnici mikrokontroléru se používají výměnné cykly.

Datová paměť

Vnitřní paměť data lze podmíněně rozdělit do tří bloků (tab. 7.3.2).

Vnitřní paměť je vždy adresována byte, který adresuje pouze 256 paměťových míst.
Proto, jak je vidět z tabulky 7.3.2, pro adresování horních 8bitových buněk vnitřní RAM a registrů speciálních funkcí SFR, zabírajících stejný adresní prostor, používají příkazy různé způsoby adresování: nepřímé a přímé.

Funkce organizace spodní oblasti vnitřní paměti RAM jsou uvedeny v tabulce 7.3.3.

Nízkých 32 bajtů vnitřní paměti RAM s adresami 00h.
1Fh jsou seskupeny ve čtyřech bankách po osmi registrech (R0.R7).
Dalších 16 bajtů RAM s 20h adresami.
2Fh představuje paměťovou oblast 8 × 16 = 128 bitů, která umožňuje přístup ke každému jednotlivému bitu.
Pro výběr adresy bankovního registru se používá jeho název R0.
R7, pro výběr banky - bity RS0, RS1 registru stavových slov PSW.

Bitové adresy

Bitové adresy jsou uvedeny v tabulce 7.3.3.

Provádí se adresování Přímo způsob.

Seznam všech registrů speciálních funkcí SFR s jejich adresami je uveden v tabulce 7.2.2.
Pro přehlednost v tabulce 7.3.

4 představení registrovat mapu adresySFR z uvažovaných mikroobvodů rodiny MCS-51.
Adresa SFR je určena kombinací čísel sloupců a řádků v hexadecimálním zápisu.

Například registr CMOD má adresu D9h.

U registrů SFR, jejichž adresy končí na 0h nebo 8h (jsou vyznačeny tučně), kromě byte povoleno bitový oslovování.

V tomto případě adresa bitu obsazeného v registru N. pozice, je definováno jako XXh + ​​0Nh, kde XXh je adresa registru SFR, N = 0,7.
Bitové adresy v této oblasti se pohybují od 80H do FFH.
Například bitové adresy ACC akumulátoru jsou v rozsahu E0h-E7h.

Externí paměť data (až 64 KB) jsou vytvářena přídavnými paměťovými čipy, které jsou připojeny k MC.
Pro práci s externí datovou pamětí se používají speciální příkazy, takže adresní prostory externí a vnitřní paměti se nepřekrývají a lze tedy používat oba typy datové paměti současně.

Pro přístup k buňkám externí datové paměti se používají (obrázek 7.1.8):
● příkazy s nepřímým adresováním;
● signály pro čtení ¯RD a zápis ¯WR;
● port P0 pro přenos nejméně významného bytu adresy a příjem / přenos datového bytu;
● Port P2 pro přenos bajtu vyššího řádu adresy.
Metody adresování.
Příkazový systém používá:
● přímé, nepřímé, registr, nepřímý-registr, přímé a indexové adresování (nepřímé adresování součtem bazických a indexových registrů) zdrojové operandy;
● přímé, registrační a nepřímé registrační adresování cílové operandy.
Kombinace těchto metod (adresování) poskytuje 21 režimů adresování.
Tato a následující tabulky příkazového systému používají následující zápis:

Přímé adresování.

U tohoto způsobu adresování je umístění bajtu nebo datového bitu určeno 8bitovou adresou druhého (a třetího) příkazového bajtu.
Přímé adresování se používá pouze pro přístup k interní datové paměti (dolních 128 bajtů RAM) a speciálním funkčním registrům.

Registrovat adresování.


Tento způsob adresování poskytuje přístup k datům uloženým v jednom z osmi registrů R0.
R7 současné banky pracovních registrů.
Lze jej také použít pro přístup k registrům A, B, AB (duální registr), registru ukazatelů DPTR a přenášení vlajky C.
Adresa těchto registrů je součástí operačního kódu, čímž se snižuje počet bajtů příkazů.

Nepřímé adresování registru.


V tomto případě je adresa dat uložena v registru ukazatelů, jehož umístění je určeno operačním kódem.
Tato metoda adresování se používá pro přístup k externí paměti RAM a horní polovině vnitřní paměti RAM.
Registry-ukazatele 8bitových adres mohou být registry R0, R1 zvolené banky pracovních registrů nebo stack pointer SP, pro 16bitové adresování se používá pouze registr datových ukazatelů DPTR.

Přímé adresování.


Při tomto způsobu adresování jsou data přímo indikována v příkazu a jsou umístěna ve druhém (nebo ve druhém a třetím) bytu příkazu, tzn.
není potřeba adresování paměti.
Například příkazem MOV A, # 50 se do akumulátoru A načte číslo 50.

Indexované adresování.


Tato metoda je nepřímé adresování registru, ve kterém je adresa datového bytu určena jako součet obsahů základních (DPTR nebo PC) a indexových (A) registrů.
Způsob používá se pouze pro přístup do paměti programu a pouze v režimu čtení; usnadňuje prohlížení tabulek pevně zapojených do paměti programu.

Struktura příkazů.

Délka příkazu je jeden (49 příkazů), dva (45 příkazů) nebo tři (17 příkazů) bajty.
První bajt příkazu vždy obsahuje operační kód (OP), zatímco druhý a třetí bajt jsou adresy operandů nebo okamžitých datových hodnot.

Jako operandy lze použít jednotlivé bity, tetrády, byty a dvoubajtová slova.
Existuje 13 typů příkazů, které jsou uvedeny v tabulce 7.3.5:

● A, PC, SP, DPTR, Rn (n = 0, 7) - akumulátor, čítač instrukcí, ukazatel zásobníku, registr ukazatelů dat a aktuální bankovní registr;
● Rm (m = 0, 1) - registr aktuální banky používaný pro nepřímé adresování;
● direct - 8bitová adresa přímo adresovaného operandu;
● bit - adresa přímo adresovaného bitu;
● rel - relativní adresa přechodu;
● addr11, addr16 - 11- a 16bitová absolutní adresa přechodu;
● # data8, # data16 - přímá data (operandy) o délce 8 a 16 bitů;
● A10, A9, A0 - jednotlivé bity 11bitové adresy;
● (.) - obsah paměťové buňky na adrese uvedené v závorkách;
● SB, MB - horní a dolní bajty 16bitového operandu.

Obecné informace o systému velení.

Příkazový systém poskytuje velké možnosti pro zpracování dat ve formě bitů, zápisníků, bajtů, dvoubajtových slov a také řízení v reálném čase.
K popisu příkazů se používá makro assembler ASM51. Syntaxe většiny příkazů sestává z mnemotechnické zkratky (zkratky) operace, která má být provedena, a za ní následují operandy.
K označení se používají operandy různé způsoby adresování a datové typy.

Konkrétně zkratka MOV má 18 různých instrukcí určených ke zpracování tří typů dat (bitů, bajtů, adres) v různých adresových prostorech.
Sada příkazů má 42 mnemotechnických označení 111 typů příkazů pro konkretizaci 33 funkcí MK.

Ze 111 instrukcí je 64 vykonáno v jednom strojovém cyklu, 45 ve dvou cyklech a pouze dvě instrukce (MUL - násobení a DIV - dělení) jsou provedeny ve 4 cyklech. Při taktovací frekvenci 12 MHz je doba trvání strojového cyklu (12 hodinových cyklů) 1 μs. Podle funkční vlastnost týmy lze rozdělit do pěti skupin. Níže je uveden popis příkazů pro každou skupinu ve formě tabulek. Pro kompaktnost tabulek vyberme skupinu příkazů (tabulka 7.3.6), jejichž provedení vlivy(označeno +) o stavu vlajek registr stavových slov PSW.

Příkazy pro přenos dat

Přenosové příkazy lze rozdělit do samostatných podskupin.
Příkazy pro přenos a výměnu dat mezi buňkami vnitřní paměti(Tabulka 7.3.7).

Příkazy 1-16, které mají mnemotechnický znak MOV dest, src, jsou pro přeposílání bajt nebo dva bajty (příkaz 16) dat ze zdrojového zdroje do cílového cíle, přičemž:
● k označení zdroj(src) používají se čtyři způsoby adresování: registr (příkazy 2-4, 6, 8), přímý (příkazy 1, 7, 9, 11), nepřímý (příkazy 5, 10) a přímý (příkazy 12-16);
● k označení přijímač(cíl) používají se tři způsoby: registr (příkazy 1, 3 ... 5, 9, 12, 14, 16), přímý (příkazy 2, 7, 8, 10, 13), nepřímý (příkazy 6, 11, 15).

Týmy 17-20 poskytují výměna informace mezi dvěma buňkami vnitřní paměti dat (nebo obousměrný přenos).
Když se provádějí příkazy XCH, vyměňují se bajty a příkazy XCHD se vyměňují s nižšími tetrádami bajtových operandů.

Jednou z buněk je vždy akumulátor A. Jako další buňka se při výměně bajtů využívá některý z Rn registrů aktuální banky, A je také přímo či nepřímo adresovatelná buňka vnitřní paměti; při výměně tetrád - pouze nepřímo adresovatelná buňka vnitřní paměti.

Protože ve všech MCU je zásobník umístěn v interní paměti RAM, tato podskupina zahrnuje příkazy(20, 21) zásobníkový přístup PUSH src, POP dest.
Tyto příkazy používají pouze metodu přímého adresování, zapisují bajt do zásobníku nebo jej obnovují ze zásobníku.
Je třeba mít na paměti, že v těch MCU, které nemají horních 128 bajtů v paměti RAM, vede zvýšení zásobníku nad 128 bajtů ke ztrátě dat.

Příkazy přenosu dat mezi interní a externí datovou pamětí(Tabulka 7.3.8).

Tyto příkazy používají pouze nepřímé adresování, přičemž jednobajtová adresa může být umístěna v P0 nebo R1 aktuální banky registrů a dvoubajtová adresa může být umístěna v registru ukazatele dat DPRT.
Při jakémkoli přístupu k externí paměti hraje baterie A roli přijímače nebo zdroje operandů ve vnitřní paměti.

Pokyny pro přenos dat z paměti programu(Tabulka 7.3.9).

Tyto příkazy jsou pro čtení tabulek z paměti programu.

Instrukce MOVC A, @ A + DPTR se používá k odkazování na tabulku s počtem vstupů od 0 do 255.

Do akumulátoru se nahraje číslo požadovaného záznamu tabulky a registr DPTR se nastaví na počáteční bod tabulky. Charakteristickým rysem druhého příkazu je, že počítač programu PC se používá jako základní ukazatel a tabulka je přístupná z podprogramu. Nejprve se do akumulátoru nahraje číslo požadovaného vstupního bodu, poté se vyvolá podprogram příkazem MOVC A, @ A + PC. Tabulka může mít 255 vstupů s čísly od 1 do 255, protože 0 se používá pro adresu příkazu RET výstupu podprogramu.

Příkazy pro zpracování aritmetických dat. Všechny aritmetické příkazy se provádějí na celých číslech bez znaménka. Operace na dvou operandech(Tabulka 7.3.10). V operacích dodatky PŘIDAT, přenesení přidání ADDC a odpočet půjčky SUBB:

● zdrojem jednoho 8bitového operandu a příjemcem výsledku je akumulátor;
● zdrojem dalšího operandu je buď jeden z pracovních registrů Rn (n = 0-7) aktuální banky, nebo přímo Přímo nebo nepřímo @Rm (m = 0, 1) adresovatelné paměťové místo RAM nebo přímá data #data.

Operace násobení MUL a divize DIV se provádějí nad obsahem registrů A a B. Při násobení se horních 8 bitů výsledku zapíše do registru B, spodních 8 bitů - do registru A.
Pokud je součin větší než 255, je nastaven příznak přetečení OV; nést příznak C je vždy vymazán. Instrukce DIV dělí 8bitový operand akumulátoru A 8bitovým operandem registru B.
Při dělení je podíl (nejvýznamnější bity) zapsán do registru v A, zbytek (nejméně významné bity) - v B. Příznaky přenosu C a přetečení OV jsou vymazány.
Pokus o dělení 0 nastaví příznak přetečení OV. Operace dělení se běžněji používá pro směny a základní konverze.

Když je binární číslo děleno 2 N, posune se o N bitů doleva.
Extra bity jsou přeneseny do registru B.

Operace na jednobajtových operandech(Tabulka 7.3.11).

Příkaz DA se používá k provádění operací BCD. Příkazy INC, DEC umožňují příslušné zvýšení nebo snížení obsahu paměťové buňky o jednu.
Týkají se obsahu akumulátoru A, jednoho z pracovních registrů Rn nebo přímo i nepřímo adresované paměťové buňky.
Operace zvýšení platí také pro obsah 16bitového registru ukazatele DPTR.

Booleovské příkazy.

Dvojité operace

(Tabulka 7.3.12).

Příkazy AML, ORL, XRL umožňují provádět tři dvoumístné logické operace na 8bitových operandech: ANL - logické násobení (AND), ORL - logické sčítání (OR), XRL - exkluzivní OR (XOR).
Operace se provádějí na jednotlivých bitech operandů. Zdrojem jednoho z operandů a zároveň příjemcem výsledku je buď akumulátor (A), nebo přímo adresovatelná paměťová buňka (direct).
Pro zdroj jiného operandu se používá metoda registr, přímé, nepřímé nebo přímé adresování.

Jednotlivé operace

(Tabulka 7.3.13).
Skupina dále zahrnuje řadu jednomístných operací s obsahem akumulátoru A: clearing (CLR), logický doplněk nebo inverze (CPL), cyklické a rozšířené cyklické posuny o 1 bit doprava (RL, RLC) a doleva ( RR, RRC), výměnné tetrady nebo cyklický posun bajtu o 4 bity (SWAP), A je také prázdná operace (NOP), v důsledku čehož zůstává stav všech registrů MC (kromě programového čítače) nezměněn. .

Ovládání příkazů přenosu

Bezpodmínečné skokové příkazy

(Tabulka 7.3.14).

Příkazy 1-3 se liší pouze formátem cílové adresy.

Příkaz LJMP (L - Long) provede "dlouhý" nepodmíněný skok na zadanou adresu addr16 a načte čítač PC druhým a třetím příkazovým bytem.
Příkaz poskytuje skok do libovolného bodu v adresním prostoru 64 kB.

Příkaz AJMP (A - Absolute) poskytuje "absolutní" skok na adresu v rámci 2K bajtové stránky, jejíž počáteční adresa je nastavena pěti nejvýznamnějšími bity čítače PC programu (na začátku je obsah PC zvýšené o 2).

Příkaz SJMP (S - Short) umožňuje "krátký" nepodmíněný skok na adresu, která se vypočítá přidáním podepsaného offsetu rel do druhého bajtu příkazu s obsahem PC čítače, dříve zvýšeného o 2.

Adresa skoku je v rozmezí -128 + 127 bytů vzhledem k adrese příkazu.
Chcete-li přejít na jakýkoli jiný bod v adresním prostoru 64 kB, lze také použít příkaz 4 s nepřímou adresou @ A + DPTR.
V tomto případě je obsah A interpretován jako celé číslo bez znaménka.

Nulová operace (NOP), v důsledku čehož zůstává stav všech registrů mikroprocesoru (kromě programového čítače) nezměněn.

Příkazy podmíněného skoku

(Tabulka 7.3.15).

Pomocí příkazů JZ a JNZ je proveden skok, pokud je obsah akumulátoru roven nebo není roven nule.
Adresa skoku se vypočítá přidáním relativního offsetu znaménka rel k obsahu čítače příkazů PC po přidání 2 (délka příkazu v bajtech).

Obsah baterie zůstává nezměněn.
Příkazy nemají vliv na příznaky.

Příkazy CJNE (3-6) se používají k implementaci podmíněného skoku na základě výsledku porovnání dvou 8bitových operandů, jejichž umístění je uvedeno v příkazech.
Pokud se jejich hodnoty nerovnají, vytvoří se větev.

Adresa skoku se vypočítá přidáním offsetu rel k obsahu PC čítače, dříve zvýšeného o 3.
Jinak se provede další příkaz.

Sloupec Algoritmus zobrazuje vliv hodnot porovnávaných 8bitových operandů na příznak přenosu C.
Příkazy DJNZ (7) jsou určeny k organizaci programových smyček.

Registr Rn nebo přímo adresovatelná buňka představuje čítač opakování smyčky a rel offset (ve druhém a třetím příkazovém bajtu) je relativní adresa skoku na začátek smyčky.
Po provedení příkazů se obsah počítadla sníží o jedničku a zkontroluje se, zda neobsahuje nulu.
Pokud není obsah čítače roven nule, provede se přechod na začátek cyklu.
V opačném případě se provede následující příkaz.

Adresa skoku se vypočítá přidáním offsetu k obsahu čítače, který byl předtím zvýšen o délku příkazu (o 2 nebo 3).
Příkazové příznaky nejsou ovlivněny.

Příkazy pro volání podprogramů a návrat z programů

(Tabulka 7.3.16).
Příkazy LCALL long call a ACALL absolute call bezpodmínečně volají podprogram umístěný na zadané adrese.

Rozdíl mezi těmito instrukcemi a instrukcemi nepodmíněného skoku diskutovanými výše je v tom, že ukládají návratovou adresu (obsah čítače) do hlavního programu na zásobníku.
Příkaz return z podprogramu RET obnoví hodnotu obsahu programového čítače ze zásobníku a příkaz RETI umožňuje i přerušení servisní úrovně.

Relativní adresování je široce používáno v příkazech pro přenos řízení, které podporuje přemístitelné programové moduly.
8bitový offset rel se znaménkem funguje jako relativní adresa, která zajišťuje větvení z aktuální pozice PC čítače v obou směrech o ± 127 bytů.

Chcete-li přejít na jakýkoli jiný bod v 64kbajtovém adresním prostoru, lze použít buď přímou adresu addr16, nebo nepřímou adresu @ A + DPTR.
V druhém případě je obsah A interpretován jako celé číslo bez znaménka.

Pro kompatibilitu s architekturou MK48 byla představena varianta krátkého přímého adresování addr11 v rámci 2K-bajtové aktuální stránky.

Všechny tyto typy adresování lze aplikovat pouze na provoz větve a pro operaci volání jsou povoleny pouze přímé metody adresování addr16 a interní addr11.
Ve všech podmíněných operacích lze použít pouze relativní adresování.

Když MK51 rozpozná požadavek na přerušení, vygeneruje jeden z příkazů, jako je LCALL addr16, který automaticky zajistí uložení návratové adresy do zásobníku.
Na rozdíl od MK48 však MK51 nemá automaticky uložené stavové informace.

V tomto případě přestane logika přerušení reagovat na požadavky úrovně, která byla přijata pro službu.
Pro snížení úrovně přerušení se používá příkaz k návratu z přerušení RETI, který kromě operace ekvivalentní RET zahrnuje operaci povolení přerušení této úrovně.
Operace JZ, JNZ patří také mezi standardní podmíněné operace MK51.
Existuje však nová operace „Porovnat a jít“ CJNE.

U tohoto příkazu se nejprve porovná operand podle pravidel odečítání celých čísel s konstantou a v souladu s výsledkem porovnání se nastaví příznak CY, poté se v případě neshody s konstantou provede větvení. provedeno. Porovnáním akumulátoru, registru nebo paměťové buňky s posloupností konstant získáme pohodlný způsob kontroly náhod, například za účelem identifikace speciálních případů.

Ve skutečnosti je příkaz CJNE členem operátoru CASE na vysoké úrovni.

Tým DJNZ byl dále rozvíjen.
Nyní může programátor jako čítač používat nejen jeden z pracovních registrů Rn, ale i libovolnou paměťovou buňku DSEG.

Příkazy pro bitové operace.

Skupinu tvoří 12 příkazů, které umožňují provádět operace na jednom nebo dvou bitech (reset, set, bitová inverze, A také logické AND a OR), a 5 příkazů určených k implementaci podmíněných skoků (tab. 7.3.17).

Instrukce poskytují přímé adresování 128 bitů umístěných v šestnácti buňkách vnitřní RAM s adresami 20h.
2Fh (tabulka 7.3.3) a 128 bitů umístěných ve speciálních registrech, jejichž adresy jsou násobky osmi (v tabulce 7.3.4 jsou zvýrazněny tučně).

Při provádění operací na dvou jednobitových operandech se jako logický akumulátor používá klopný obvod registru PSW, který ukládá příznak přenosu C (tab. 7.1.2).

Provádějí se instrukce MOV (1,2). náklad bitů z jedné přímo adresovatelné bitové buňky vnitřní paměti RAM do klopného obvodu C nebo naopak.
Příkazy CRL (3, 4), SETB (5, 6). skládka na nulu resp založit na jeden příznak přenosu C nebo určený bit.
Pomocí příkazů CPL, ANL, ORL (7-12) se provádějí logické operace inverze, sčítání a násobení.

Skupina také obsahuje příkazy (13-17) pro implementaci operací podmíněného větvení s relativním 8bitovým offsetem rel.
Přechody lze implementovat jak když je nastaven příznak bit nebo carry (příkazy 13, 16), tak když je vymazán (příkazy 14, 17).

Příkaz JBC kromě přesunu na vypočítanou adresu při splnění podmínky (bit) = 1 vynuluje tento bit.
Při provádění podmíněných příkazů větvení se adresa skoku vypočítá po přičtení čísel 3 nebo 2 k obsahu čítače (odráží počet bajtů v příkazu).

Stav systému přerušení je dotazován na konci každého strojového cyklu ve fázi S5P2, s výjimkou příkazů RETI a jakýchkoli příkazů přistupujících k registrům IE a IP. Od okamžiku zafixování požadavku na přerušení po obsluhu přerušení trvá 38 až 86 period frekvence fOSC, v závislosti na fázi požadavku a počtu strojových cyklů příkazu, při jehož provádění 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 (uložení návratové adresy) do zásobníku a přechod na počáteční adresu addr16 příslušné servisní procedury. Každý zdroj požadavku na přerušení má svůj vlastní

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

Externí přerušení INT0.

Časovač přerušení / čítač TC0.

Externí přerušení INT1.

Časovač přerušení / čítač TC1.

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

2.7. Metody adresování a příkazový systém řady MCS-51

Řídící systém rodiny MCS-51 je zaměřen na organizaci flexibilního vstupu a 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řenosu řízení jejich hodnotou. Instrukce provádějící takové operace tvoří velkou skupinu a spolu s odpovídajícím hardwarem tvoří tzv. „Booleovský procesor“ v architektuře MCS-51.

Instrukční sada poskytuje programátorovi možnost používat většinu operací s úplnou sadou metod adresování a hardwarovými prostředky dostupnými v softwaru.

2.7.1. Metody adresování

Každá instrukce říká procesoru operaci, kterou má provést, a způsoby 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 (CPC), 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šího příkazu.

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

Metody adresování jsou souborem mechanismů pro přístup k operandům. Některé z nich jsou jednoduché, vedou ke kompaktnímu formátu instrukce a rychlému přístupu k operandu, ale mají omezené množství dostupných zdrojů. Jiné 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í je časově náročné. Sada metod adresování v každé sadě instrukcí je kompromisní kombinací známých mechanismů adresování zvolených architekty na základě sady úloh, které mají být řešeny.

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

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

Přímé adresování... Pole adresy příkazu obsahuje

Adresa není adresou operandu, ale operandem samotným. Přímé adresování je označeno speciálním znakem # před číslem. Například příkazem MOV A, # 15h se do akumulátoru načte hexadecimální číslo 15 (druhý bajt příkazu). V příkazovém systému je přímé adresování označeno jako #data, kde data jsou číslo

(data = 00h ... FFh).

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

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á dopředná adresa. V mnemotechnických pomůckách příkazů je adresovatelný registr označen Rn, kde n = 0 ... 7. Všechna příkazová pole se vejdou do jednoho bajtu. Tomu se říká krátké adresování. Například MOV R4, R1.

Přímé absolutní adresování umožňuje odkazovat na jakoukoli buňku DSEG a oblast 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ý = 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 oblasti SFR). Pokud mají oba operandy přímé absolutní adresování, pak se instrukce stane tříbajtovou (například MOV 80h, 15h).

Nepřímé adresování... Pole adresy obsahuje adresu paměťové buňky, ve které se nachází přímá adresa operandu. V příkazovém systému speciální symbol @ označuje nepřímé adresování. Vlastnictví

registry R0 a R1 (@Ri, i = 0,1) každé banky registrů mají 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é buňky DSEG. s adresou 15h do akumulátoru. Příkaz MOV A, @ R1 je však jednobajtový, ale hlavně existuje možnost 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 k poli adresy příkazu. Obsah programového čítače se používá jako základní adresa a pole adresy příkazu je osmibitový offset rel (relativní). Číslo rel je příkazem interpretováno jako celé číslo se znaménkem, reprezentované dvojkovým doplňkem. Rozsah jeho prezentace je (-128 ... + 127). Při určování čísla rel mějte na paměti, že počítadlo programu ukazuje na další příkaz, který se má provést. Relativní adresování je široce používáno v příkazech pro přenos řízení, což umožňuje vytvářet přemístitelné programové moduly. Řídicí přenosové příkazy s relativním adresováním umožňují organizovat větvení vzhledem k aktuální poloze PC programu v obou směrech po (-128 ... + 127) bytů.

V programech v assembleru můžete určit popisek, na který se má přejít, v poli odsazení. V důsledku překladu asembler vypočítá hodnotu offsetu, pokud nepřekročí (-128 ... + 127). V opačném případě se zobrazí chybová zpráva.

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. Funkcí základního registru v rodině MCS-51 je registr datových ukazatelů DPTR nebo čítač programů pro PC. Tento typ adresování je užitečný zejména při zpracování tabulek a datových polí. V instrukcích MOVC A, @ A + DPTR a MOVC A, @ A + PC je 16bitová dopředná adresa tvořena součtem obsahů DPTR a A nebo PC a A.

Adresování stránek... Při použití stránkování je paměť rozdělena na řadu stránek stejné délky. Stránky jsou adresovány samostatným registrem stránek a paměťové buňky ve stránce jsou adresovány adresou obsaženou v příkazu. 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 port P2 (vysoký bajt adresy) vykonává funkci registru stránky a obsah registru Ri (dolní bajt adresy) nastavuje 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 neadresovatelných příkazech a je kombinací metod auto-inkrementálního a auto-dekrementálního adresování, fungující na principu LIFO (Last I nput - First O output) - "last in - first out". 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 zapsán do zásobníku, obsah SP se nejprve zvýší a poté se provede zápis na tuto adresu. Když čte bajt ze zásobníku, čte nejprve na adrese, na kterou ukazuje SP, a poté snižuje SP. Při použití zásobníku je třeba mít 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. Sada příkazů rodiny MCS-51

Systém příkazů je uveden v tabulkách A2.1 ... A2.6 v Dodatku 2. Tabulky udávají název příkazu, jeho mnemotechnickou pomůcku, binární operační kód, vliv prováděného příkazu na příznaky C, OV , AC a P, délku příkazu v bajtech (B) a dobu provádění ve strojových cyklech (C) a také obsah transformace prováděné instrukcí. Čárka se používá jako oddělovač adresních polí v příkazech. Chcete-li zlepšit čitelnost, můžete za čárku přidat mezery, pokud je použitý assembler podporuje.

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

Skupina příkazů pro operace přenosu dat(tabulka A2.1) s-

obsahuje MOV (přenos dat mezi DSEG a RSEG), MOVC (mezi CSEG a A), MOVX (mezi XSEG a A), PUSH a POP stack přístupové příkazy a dva výměnné příkazy XCH a XCHD. Všechny příkazy přenosu dat, které přijímají baterii, nastavují příznak parity P obsahu baterie a příkazy přímé adresy, které přijímají registr PSW, mění všechny příznaky. Nejprostornější je instrukce MOV, která využívá čtyři způsoby adresování: registrovat přímé (A, Rn, DPTR), přímé (přímé), nepřímé (@Ri), přímé (#data, # data16). Druhý operand instrukce je zdroj, první je cíl. Existují tři způsoby adresování (kromě přímého) k označení cíle a všechny čtyři k označení zdroje. Tříbajtový přímý přímý příkaz MOV se přenáší mezi libovolnými dvěma paměťovými místy (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 daty16.

Instrukce MOVC umožňuje číst informace z paměti programu CSEG nikoli do příkazového registru řídicího zařízení, ale do baterie provozní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. Baterie slouží také jako přijímač výsledku. Příkaz umožňuje provádět rychlé překódování napříč tabulkami.

K externí paměti se přistupuje pomocí instrukce MOVX. Výměna probíhá po bytech mezi baterií a externím XSEG. Buňka XSEG může být adresována dvěma způsoby: nepřímo přes 16bitový ukazatel DPTR a stránkování nepřímo přes 8bitový ukazatel Ri, i = 0,1. V druhém případě se jako registr stránek použije registr P2.

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

mezi DSEG, RSEG a SFR.

Instrukce XCH exchange poskytuje obousměrnou výměnu bytů a instrukce XCHD - nejméně významné tetrády bytových operandů.

Skupina aritmetických příkazů(tabulka A2.2) co-

obsahuje instrukce pro sčítání ADD, sčítání s přenášením ADDC, odečítání s vypůjčením SUBB, inkrementaci a dekrementaci o jeden INC a DEC, sbalený formát BCD sčítání, násobení MUL a dělení 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 příjemcem 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 nebo přímo či nepřímo adresovatelné paměťové místo. Kromě toho se operace INC vztahuje na obsah 16bitového registru ukazatele DPTR.

Operace násobení a dělení celého čísla bez znaménka zahrnují akumulátor a registr B. Při násobení se 8bitová hodnota A vynásobí 8bitovou hodnotou B a 16bitový výsledek se zapíše do páru BA. V tomto případě registr B ukládá horní čá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 se zapíše do B. Při pokusu pro dělení 0 je nastaven příznak přetečení OV.

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

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

slouží 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 - clear, CPL - inverze a dále RL, RLC, RR a RRC - operace cyklických a prodloužených posunů doprava a doleva. Patří sem i operace výměny notebooků ve SWAP akumulátoru, kterou lze interpretovat jako cyklický posun bajtu o čtyři číslice.

Skupina velení bitových operací(tabulka A2.6) obsahuje ko-

Příkazy SETB - nastavení bitu na 1, CLR - reset bitu 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řenos bitů.

PROTI bitové operace, příznak C funguje jako booleovský akumulátor. Operandy jsou obsah příznaku C nebo přímo adresovaný bit oblasti BSEG. Operace ANL a ORL mohou využívat obsah přímo adresovatelného bitu (bit) nebo inverzi obsahu (/ bit).

PROTI do této skupiny patří také příkazy pro podmíněné větvení s relativním 8bitový offset rel. Podmíněný skok lze provést jak s nastaveným (příkaz JB), tak s vymazaným (příkaz JNB) bitem. Za zmínku stojí zejména příkaz JBC, který po nastavení bitu implementuje větvení a zároveň vymaže bit na 0.

Řídicí skupina příkazů přenosu(tabulky A2.4 a A2.5) s-

drží příkazy nepodmíněného skoku AJMP, LJMP, SJMP, JMP, podmíněný skok JZ, JNZ, CJNE, volání ACALL, LCALL, návrat RET, RETI a modifikace podmíněným skokem DJNZ. Obsahuje také prázdný příkaz NOP.

PROTI Relativní adresování je široce používáno v příkazech pro přenos řízení, což umožňuje vytvářet přemístitelné programové moduly. Relativní adresa je 8bitový offset rel je bajt se znaménkem, který poskytuje skok (–128… +127) bajtů vzhledem k aktuální pozici PC. Buď 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 64 kB. V druhém případě je obsah A interpretován jako celé číslo bez znaménka. Krátká varianta přímého adresování addr11 v rámci aktuální stránky 2KB byla představena kvůli kompatibilitě s rodinou MCS-48.

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

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

Intel je předchůdcem architektury rodiny MCS-51, která dostala své jméno podle prvního zástupce této rodiny - mikrokontroléru 8051, vydaného v roce 1980 na základě technologie n-MOS. Úspěšná sada periferních zařízení, flexibilní výběr externí nebo interní programové paměti a rozumná cena zajistily tomuto mikrokontroléru úspěch na trhu. Z hlediska technologie byl mikrokontrolér 8051 na svou dobu velmi komplexním produktem - v krystalu bylo použito 128 tisíc tranzistorů, což bylo 4x více než počet tranzistorů v 16bitovém mikroprocesoru 8086. Tento mikrokontrolér zůstává jádro rodiny MCS-51 dodnes.

Hlavní prvky základní architektury rodiny (architektura mikrokontroléru 8051) jsou:

8bitová ALU;

4 banky registrů, 8 v každé;

Vnitřní (rezidentní) programová paměť 4 Kbytes, typu ROM nebo EPROM (8751);

Vnitřní (rezidentní) datová paměť 128 bajtů;

21 registrů speciálních funkcí;

Booleovský procesor;

Dva 16bitové časovače / čítače

řadič sériového portu (UART);

Řadič přerušení se dvěma úrovněmi priority;

Čtyři 8bitové I/O porty, z nichž dva se používají jako adresová/datová sběrnice pro přístup k externí programové a datové paměti;

Vestavěný generátor hodin.

Poté byl uvolněn mikrokontrolér 8052, který se vyznačoval zvýšeným množstvím rezidentní programové a datové paměti, zavedeným třetím časovačem a v souladu s tím rozšířeným řadičem přerušení.

Dalším zásadním krokem ve vývoji MCS-51 byl převod výrobní technologie na CMOS (modifikace 8xC51). To umožnilo implementovat režimy Idl (idle) a Power Down (snížená spotřeba), které poskytují prudký pokles spotřeby energie krystalu a otevřely cestu pro použití mikrokontroléru v těkavých aplikacích, např. samostatná zařízení napájená bateriemi.

A poslední důležitou etapou ve vývoji MK 8051 od Intelu bylo vydání mikrokontrolérů 8xC51FA / FB / FC a 8xC51RA / RB / RC, které jsou zkráceně často označovány jako 8xC51Fx a 8xC51Rx. Hlavním rozlišovacím znakem této skupiny krystalů je to, že mají vyhrazený časovač / čítač (PCA). Mikrokontroléry 8xC51Rx navíc navíc obsahují hlídací časovač (WDT). Podívejme se blíže na architekturu a funkčnost PCA.

PCA zahrnuje:

16bitový časovač / čítač;

Pět 16bitových vzorkovacích a porovnávacích modulů, z nichž každý je připojen k vlastní lince I/O portu mikrokontroléru.

Časovač / čítač slouží všem pěti vzorkovým a porovnávacím modulům, které lze naprogramovat tak, aby vykonávaly jednu z následujících funkcí:

16bitové vzorkování hodnoty časovače na kladné hraně externího signálu;

16bitové vzorkování hodnoty časovače na záporné hraně externího signálu;

16bitové vzorkování hodnoty časovače na libovolné hraně externího signálu;

16bitový programovatelný časovač;

16bitové vysokorychlostní výstupní zařízení;

8bitové PWM.

Dělat všechno uvedené funkce se vyskytuje v PCA na úrovni hardwaru a nezatěžuje centrální procesor. To umožňuje zvýšit celkovou propustnost, zlepšit přesnost měření a zpracování signálu a zkrátit dobu odezvy mikrokontroléru na vnější události, což je důležité zejména pro systémy pracující v reálném čase. PCA implementovaný v 8xC51Fx (8xC51Rx) se ukázal být takový

Označení

Max. frekvence (MHz)

ROM / EPROM (bajt)

počítadla

je štěstí, že architektura těchto mikrokontrolérů se stala průmyslovým standardem a samotný PCA byl opakovaně reprodukován v různých modifikacích MK 8051.

Některé charakteristiky řady mikrokontrolérů MCS-51 vyrobených společností Intel jsou uvedeny v tabulce 1.1.

Počátečními úzkými hrdly architektury MCS-51 byly 8bitové bateriové ALU a relativně pomalé provádění příkazů (nejrychlejší příkazy vyžadují 12 pe-

Tabulka 1.1

vstup výstup

ADC, vstupy x bitů

obvod,

zvláštnosti

U jáma. (PROTI)

Možnost nízkého napětí

4 úrovně IRQ, hodiny mimo

4 úrovně IRQ, hodiny mimo

Nízkonapěťová verze 8xC51Fx

4 úrovně IRQ, hodiny mimo

4 úrovně IRQ, hodiny mimo

4 úrovně IRQ, hodiny mimo

periodická frekvence hodin (hodinová frekvence MK)). To omezilo použití mikrokontrolérů této rodiny v aplikacích vyžadujících zvýšený výkon a složité výpočty (16- a 32-bit). Naléhavou otázkou byla zásadní modernizace architektury MCS-51. Problém modernizace byl komplikován skutečností, že začátkem 90. let již vznikla řada vývojů v oblasti softwaru a hardwaru rodiny MCS-51, v souvislosti s nimiž byl jedním z hlavních úkolů návrhu novou architekturou byla implementace hardwarové a softwarové kompatibility s vývojem založeným na MCS -51.

K vyřešení tohoto problému byla vytvořena společná skupina specialistů Intel a Philips, ale později se cesty těchto dvou společností rozdělily. V důsledku toho se v roce 1995 objevily dvě výrazně odlišné rodiny: MCS-251/151 od Intelu a MCS-51XA od Philips (viz podsekce 1.2).

Hlavní vlastnosti architektury MCS-251:

24bitový lineární adresní prostor pro adresování až 16 MB paměti;

Architektura registrů, která umožňuje přístup k registrům jako bajty, slova a dvojitá slova;

Režim adresování stránek pro urychlení načítání instrukcí z externí programové paměti;

Fronta pokynů;

Rozšířená instrukční sada včetně 16bitových aritmetických a logických operací;

Rozšířený adresní prostor zásobníku (až 64 KB);

Provedení nejrychlejšího příkazu ve 2 hodinových cyklech.

Instrukční sada MCS-251 obsahuje dvě instrukční sady – první sada je kopií instrukční sady MCS-51 a druhá se skládá z rozšířených instrukcí, které využívají výhod architektury MCS-251. Před použitím mikrokontroléru je nutné jej nakonfigurovat, tzn. s pomocí programátoru „vypalte“ konfigurační bity, které určují, která z instrukčních sad se stane aktivní po zapnutí. Pokud nainstalujete první sadu instrukcí, bude řada MCS-251 kompatibilní s MCS-51 na úrovni binárního kódu. Tento režim se nazývá binární režim. Pokud zpočátku nainstalujete sadu rozšířených instrukcí (režim zdroje), pak programy napsané pro MCS-51 budou vyžadovat rekompilaci křížových prostředků pro MCS-251. Source Mode vám umožňuje maximálně využít architekturu MCS-251 a dosáhnout nejvyššího výkonu.

Pro uživatele zaměřené na používání mikrokontrolérů MCS-251 jako mechanické náhrady za MCS-51 společnost Intel vydává mikrokontroléry MCS-151, které jsou již naprogramovány ve stavu Binary Mode.

Některé charakteristiky řady mikrokontrolérů MCS-251/151 jsou uvedeny v tabulce 1.1.

V současné době Intel se zaměřením na trh s procesory Pentium postupně ukončuje výrobu krystalů MCS-51. Obecně to pro konkrétního vývojáře může zůstat bez povšimnutí, pokud ovšem nepoužívá mikrokontroléry 8xC51GB a 80C152Jx, které nemají mezi produkty jiných firem své přesné protějšky. Stejně jako všechny ostatní mikrokontroléry řady MCS-51 byly všechny mnohokrát replikovány jinými společnostmi.