Jak vytvořit port pro příjem mcs 51. Mikrokontroléry MCS-51

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" bakalářského, inženýrského a magisterského studia oboru 140400 "Elektroenergetika a elektrotechnika".

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

Petrohradská státní polytechnická univerzita.

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

© St. Petersburg

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í. 20

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ídací pes 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ž do těla 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 přerušení. 155

5.6.10 Pokračování. 155

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

5.6.12 Operátor goto. 157

5.6.13 Výraz operátora. 158

5.6.14 Příkaz Return z podprogramu return. 158

5.6.15 Prázdný výpis. 158

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

5.7.1. Deklarace proměnné. 159

5.7.3 Celočíselné datové typy. 161

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

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

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

5.7.7. Struktury.. 165

5.7.8. Asociace (směsi) 166

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

5.8.1. Vyhlášení ukazatelů. 167

5.8.2. Netypové ukazatele. 168

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

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

5.10. Inicializace dat 170

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

5.11.1. Definice podprogramů.. 171

5.11.2. Parametry podprogramu .. 173

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

5.11.4 Volání podprogramů.. 176

5.11.5 Rekurzivní volání podprogramu.. 176

5.11.6 Rutiny pro přerušení. 177

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

5.12. Vícemodulové programy 179

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

6.1 Vytvoření projektu ASM-51 182

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

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

7.1. Struktura ovladače 199

7.2. Adresní prostor 200

7.2.1. Alokace paměti. 200

7.2.2 Externí paměť. 201

7.2.3. Interní datová paměť. 202

7.3. Alokace I/O portu 202

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

7.5. Práce s LCD 205

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

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

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

Reference... 224


Úvod

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

Ve světě 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 má podle prvního zástupce této rodiny - mikrokontroléru 8051. Úspěšná sada periferií, flexibilní výběr 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 příkazovým systémem. Většina z nich se provádí ve stejných pouzdrech se stejným pinoutem (číslování nohou u pouzdra). To umožňuje použít pro vyvíjené zařízení mikroobvody různých výrobců, aniž by se měnilo schéma zapojení zařízení a programu.

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

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

Tabulka B.1

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

Kapitola 1 Architektura rodiny MCS51

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

Obecná charakteristika

Hlavní rysy rodiny:

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

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

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

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

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

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

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

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

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

Registr řízení poptávky (PCON) umožňuje zastavit provoz mikrokontroléru pro snížení spotřeby energie a snížení úrovně rušení mikrokontroléru. Ještě většího snížení spotřeby energie a snížení hluku lze dosáhnout zastavením hlavního oscilátoru mikrokontroléru. Toho lze dosáhnout přepínáním bitů v řídicím registru požadavku PCON. U varianty výroby nMOS (řada 1816 nebo zahraniční čipy, které nemají uprostřed názvu písmeno "c") obsahuje registr řízení výkonu PCON pouze jeden bit, který řídí přenosovou rychlost sériového portu SMOD, a tam nejsou žá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ě-decimální 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ý pro příjem a uložení 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 k dočasnému uložení informací používaných během provádění programu.

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

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

Programová paměť (EPROM) navržena pro ukládání programů a je to paměť pouze pro čtení (ROM). Různé mikroobvody používají maskované, UV mazatelné 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í paměti ROM;

· ALE - blesk adresy externí paměti;

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

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

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

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

· РЗ - osmibitový kvazi-obousměrný port, podobný Р1, 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 programová a datová paměť;

· P0 - multiplexovaný osmibitový obousměrný port vstupu-výstupu informací, přes tento port jsou v různých okamžicích vyvedeny nízké bajty 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.

Množství 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 programové paměti.

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

Programová paměť (ROM)

U mikrokontrolérů řady 8051 jsou programová 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í příkazů 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 ukazatele 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 každém okamžiku je k dispozici program 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

Bajtová 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 odpovídající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.

Intel je původcem architektury rodiny MCS-51, která je pojmenována podle prvního zástupce této rodiny – mikrokontroléru 8051, vydaného v roce 1980 na základě technologie n-MOS. Dobrá sada periferií, 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 komplexním produktem - v krystalu bylo použito 128 tisíc tranzistorů, což byl 4násobek počtu tranzistorů v 16bitovém mikroprocesoru 8086. Tento mikrokontrolér zůstává jádrem z 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 KB 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é třetím časovačem a odpovídajícím způsobem 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 (nízká spotřeba), které poskytují výrazné snížení spotřeby energie krystalu a otevřely cestu pro použití mikrokontroléru v těkavých aplikacích, např. autonomní zařízení na baterie.

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 pro stručnost často označovány jako 8xC51Fx a 8xC51Rx. Hlavním rozlišovacím znakem této skupiny krystalů je přítomnost specializovaného časovače / čítače (PCA). Mikrokontroléry 8xC51Rx navíc navíc obsahují hlídací časovač (WDT). Zvažte architekturu a funkčnost PCA podrobněji.

RSA zahrnuje:

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

Pět 16bitových vzorových a porovnávacích modulů, každý připojený k jinému I/O portu mikrokontroléru.

Časovač/počítač 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ý programovatelný časovač;

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

8bitové PWM.

Implementace všech uvedených funkcí probíhá v PCA na hardwarové úrovni 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.

Zpočátku byla úzká hrdla architektury MCS-51 8bitová ALU založená na bateriích a relativně pomalé provádění instrukcí (k provedení nejrychlejších instrukcí je zapotřebí 12 smyček).

Tabulka 1.1

I/O

ADC vstupy x číslic

obvod,

zvláštnosti

U mazlíčka. (V)

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

hodinová frekvence riods (MC synchronizační frekvence)). To omezilo použití řady mikrokontrolérů v aplikacích vyžadujících zvýšený výkon a složité výpočty (16- a 32bitové). Otázka zásadní modernizace architektury MCS-51 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 rodiny MCS-51, v souvislosti s nímž byl jedním z hlavních úkolů návrhu nová architektura měla implementovat hardwarovou a softwarovou kompatibilitu 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, později se však cesty těchto dvou společností rozešly. V důsledku toho se v roce 1995 objevily dvě výrazně odlišné rodiny: Intel MCS-251/151 a Philips MCS-51XA (viz podsekce 1.2).

Klíčové vlastnosti architektury MCS-251:

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

Architektura registrů, která umožňuje, aby byly registry označovány jako bajty, slova a dvojitá slova;

Režim adresování stránek pro rychlejší načítání příkazů 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 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. pomocí programátoru "vypálit" konfigurační bity, které určují, která z instrukčních sad se stane aktivní po zapnutí napájení. Pokud nainstalujete první sadu instrukcí, pak v tomto případě bude MK řady 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í (Source Mode), pak programy napsané pro MCS-51 budou vyžadovat rekompilaci na křížových nástrojích pro MCS-251. Source Mode umožňuje používat architekturu MCS-251 s maximální efektivitou a dosahovat nejvyššího výkonu.

Pro uživatele zaměřené na použití mikrokontrolérů MCS-251 jako mechanické náhrady za MCS-51 Intel vydává mikrokontroléry MCS-151 již naprogramované ve stavu Binary Mode.

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

V současnosti Intel, zaměřený na trh s procesory Pentium, omezuje 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é obdoby. Stejně jako všechny ostatní mikrokontroléry řady MCS-51 jsou všechny mnohokrát replikovány jinými společnostmi.

PLÁN PŘEDNÁŠEK

1. Úvod

2. Aritmetické a logické instrukce

3. Příkazy pro přenos dat

4. Booleovské operace

5. Pokyny ke skoku

1. Úvod

Příkazový systém MCS-51 podporuje jedinou sadu instrukcí, která je navržena tak, aby spouštěla ​​8bitové algoritmy pro řízení aktuátorů. Je možné použít rychlé metody adresování vnitřní paměti RAM, provádění bitových operací na malých datových strukturách. Existuje rozsáhlý systém pro adresování jednobitových proměnných jako nezávislý datový typ, který umožňuje použití jednotlivých bitů v logických a řídicích příkazech Booleovy algebry.

Režimy adresování : instrukční sada MCS-51 podporuje následující režimy adresování. Přímé adresování: Operand je určen 8bitovou adresou v instrukci. Přímé adresování se používá pouze pro spodní polovinu interní datové paměti a registrů SFR. nepřímé adresování: Instrukce oslovuje registr obsahující adresu operandu. Tento typ adresování se používá pro externí a interní RAM. Registry lze použít k určení 8bitových adres R0 A R1 vybraná banka registru nebo ukazatel zásobníku SP. Pro 16bitové adresování se používá pouze registr datových ukazatelů. DPTR.

Pokyny k registraci : registry R0–R7 aktuální banka registrů může být adresována prostřednictvím specifických instrukcí obsahujících 3bitové pole indikující číslo registru v samotné instrukci. V tomto případě není v příkazu žádné odpovídající pole adresy. Operace pomocí speciálních registrů: některé instrukce používají jednotlivé registry (například operace s akumulátorem, DPTR, atd.). V tomto případě není adresa operandu v instrukci vůbec uvedena. Je předem určen operačním kódem.

Okamžité konstanty : konstanta může být přímo v příkazu za operačním kódem.

Indexové adresování : Indexované adresování lze použít pouze pro přístup do paměti programu a pouze v režimu čtení. V tomto režimu jsou prohlíženy tabulky v paměti programu. 16bitový registr ( DPTR nebo programové počítadlo) označuje základní adresu požadované tabulky a akumulátor označuje vstupní bod do ní.

Sada příkazůmá 42 mnemotechnických povelů pro specifikaci 33 funkcí tohoto systému. Syntaxe většiny instrukcí v jazyce symbolických instrukcí sestává z mnemotechnické zkratky funkce následované operandy určujícími metody adresování a datové typy. Různé datové typy nebo režimy adresování jsou určeny nastavenými operandy, nikoli změnami v mnemotechnickém zápisu.

Příkazový systém lze podmíněně rozdělit do pěti skupin: aritmetické příkazy; logické příkazy; příkazy pro přenos dat; instrukce bitového procesoru; příkazy větvení a přenosu. Označení a symboly používané v systému příkazů jsou uvedeny níže.

Stůl. Notace a symboly používané v příkazovém systému

Označení, symbol

Účel

baterie

Registry aktuálně vybrané banky registrů

Číslo načteného registru zadané v příkazu

Přímo

Přímo adresovatelná 8bitová adresa interního umístění dat, což může být umístění interní datové paměti RAM (0-127) nebo speciální funkční registr SFR (128-255)

Nepřímo adresovatelné umístění 8bitové interní datové paměti RAM

8bitový Přímoúdaje zahrnuté v kódu operace (COP)

dataH

MSB (15-8) okamžitých 16bitových dat

dataL

Nízké bity (7-0) okamžitých 16bitových dat

11bitová cílová adresa

addrL

Nejméně významné bity cílové adresy

8bitový offsetový bajt se znaménkem

Přímo adresovatelný bit, jehož adresa obsahuje CPC umístěný v interní datové paměti RAM nebo speciálním funkčním registru SFR

a15, a14...a0

Bity cílové adresy

Obsah prvku X

Obsah na adrese uložené v prvku X

Výboj M prvek X


+

*
A
NEBO
XOR
/X

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

Funkční mnemotechnické pomůcky jsou jednoznačně spojeny se specifickými kombinacemi metod adresování a datových typů. Celkem je v systému velení možných 111 takových kombinací.

2. Aritmetické a logické instrukce

Jak příklad aritmetický pokyn, operaci sčítání lze provést jedním z následujících příkazů.

PŘIDATA,7 F 16 - přidejte k obsahu registru A číslo 7 F 16 a uložit výsledek do registru A;

PŘIDATA,@ R0 - přidat do obsahu registru A číslo, jehož adresa (@ – komerční na ) je uložen v registru R 0 (nepřímé adresování) a uložit výsledek do registru A;

PŘIDAT A,R7- přidat k obsahu registru A obsah registru R 7 a výsledek uložte do registru A;

PŘIDAT A,#127- přidat k obsahu registru A číslo, jehož adresa buňky úložiště je 127 ( # - číselný symbol) a výsledek uložte do registru T- znovu A.

Všechny aritmetické instrukce jsou vykonávány v jednom strojovém cyklu kromě instrukce INC DPTR(posun datového ukazatele DPTR na další bajt), vyžadující dva strojové cykly a také operace násobení a dělení prováděné ve 4 strojových cyklech. Libovolný bajt v interní datové paměti lze inkrementovat a dekrementovat bez použití akumulátoru.

Návod MUL AB provede násobení (násobení) dat v akumulátoru s daty v registru B, přičemž produkt umístí do registrů A (dolní polovina) a B (vyšší polovina).

Návod DIV AB vydělí (rozdělí) obsah akumulátoru hodnotou v registru B, zbytek ponechá v B a podíl v akumulátoru.

Návod DA A určený pro binárně-decimální aritmetické operace (aritmetické operace s čísly reprezentovanými v binárně-decimálním kódu). Nepřevádí binární na binární desítkové, ale poskytuje správný výsledek pouze při sčítání dvou čísel BCD.

Příklad logický příkaz: logickou operaci AND lze provést jedním z následujících příkazů:

ANLA,7 F 16 - logické vynásobení obsahu registru A číslem 7 F 16 a výsledek je uložen v registru A;

ANLA,@ R1 - logické vynásobení obsahu registru A číslem, jehož adresa je v registru uložena R 1 (nepřímé adresování) a uložte výsledek do registru A;

ANL A,R6- logické násobení obsahu registru A obsahem registru R 6 a uložte výsledek do registru A;

ANL A,#53 - logické vynásobení obsahu registru A číslem, jehož adresa buňky úložiště je 53 16, a uložení výsledku do registru A.

Všechny logické operace s obsahem akumulátoru se provádějí v jednom strojovém cyklu, zbytek - ve dvou. Booleovské operace lze provádět na kterémkoli z nižších 128 bajtů vnitřní datové paměti nebo na libovolném registru SFR (registry speciálních funkcí) v režimu přímého adresování bez použití baterie.

Rotační operace RL A, RLC A atd. posouvají obsah akumulátoru o jeden bit doprava nebo doleva. V případě cyklického posunu doleva se nejméně významný bit přesune na nejvýznamnější pozici. V případě pravého cyklického posunu nastává opak.

Úkon SWAP A provádí výměnu mladších a starších tetrád v akumulátoru.

3. Příkazy pro přenos dat

tým MOV dest,src umožňuje přenos dat mezi vnitřními buňkami RAM nebo oblastí speciálních funkčních registrů SFR bez použití baterie. V tomto případě lze práci s horní polovinou vnitřní paměti RAM provádět pouze v režimu nepřímého adresování a přístup k registrům SFR– pouze v režimu přímého adresování.

Ve všech mikroobvodech MCS-51 zásobník je umístěn přímo v datové rezidentní paměti a roste směrem nahoru. Návod TAM nejprve zvýší hodnotu v registru ukazatelů zásobníku SP a poté vloží datové bajty do zásobníku. Týmy TAM A POP se používají pouze v režimu přímého adresování (při zápisu nebo obnově bajtu), ale zásobník je vždy dostupný při nepřímém adresování prostřednictvím registru SP. Zásobník tedy může také využívat horních 128 bajtů datové paměti. Stejné úvahy vylučují použití instrukcí zásobníku pro adresování registrů. SFR.

Instrukce pro přenos dat zahrnují 16bitovou přenosovou operaci MOV DPTR,#data16, který se používá k inicializaci registru datových ukazatelů DPTR při prohlížení tabulek v paměti programu nebo pro přístup k externí datové paměti.

Úkon XCH A,byte slouží k výměně dat mezi akumulátorem a adresovaným byte. tým XCHD A,@Ri podobný předchozímu, ale pouze pro nižší tetrády zapojené do výměny operandů.

Pro přístup k externí datové paměti se používá pouze nepřímé adresování. V případě jednobajtových adres se používají registry R0 nebo R1 aktuální banka registrů a pro 16bitové registr datových ukazatelů DPTR. Při jakémkoli způsobu přístupu k externí datové paměti hraje baterie roli zdroje nebo přijímače informací.

Pro přístup k tabulkám umístěným v paměti programu se používají následující příkazy:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Obsah odpovídajícího registru datových ukazatelů se používá jako základní adresa tabulky. DPTR nebo PC(softwarové počítadlo) a ofset je převzat z A. Tyto instrukce slouží výhradně ke čtení dat z paměti programu, nikoliv k zápisu do ní.

4. Booleovské operace

Mikroobvody MCS-51 obsahují booleovský procesor. Interní RAM má 128 přímo adresovatelných bitů. Prostor registru speciálních funkcí SFR může také podporovat až 128bitová pole. Bitové instrukce provádějí podmíněné skoky, přenosy, resety, inverze a operace AND a OR. Všechny specifikované bity jsou dostupné v režimu přímého adresování.

Nosit bit CF ve speciálním funkčním registru "slovo stavu programu PSW' se používá jako jednobitový booleovský akumulátor procesoru.

5. Pokyny ke skoku

Adresy skokových operací jsou v jazyce symbolických instrukcí označeny štítkem nebo skutečnou hodnotou v paměti programu. Adresy podmíněných větví jsou sestaveny do relativního offsetu - znaménkového bajtu přidaného do programového čítače PC pokud je splněna podmínka přechodu. Hranice takových skoků leží mezi mínus 128 a 127 vzhledem k prvnímu bytu následujícího po instrukci. Ve speciálním funkčním registru "program status word PSW» není tam žádná nulová vlajka, takže pokyny JZ A JNZ zkontrolujte podmínku "rovná se nule" jako testování dat v akumulátoru.

Existují tři typy nepodmíněné větvené instrukce: SJMP, LJMP A AJMP– cílové adresy, které se liší formátem. Návod SJMP zakóduje adresu jako relativní offset a zabírá dva bajty. Vzdálenost skoku je omezena na rozsah mínus 128 až 127 bajtů vzhledem k následující instrukci SJMP.

V návodu LJMP cílová adresa se používá jako 16bitová konstanta. Příkaz je dlouhý tři bajty. Cílová adresa může být umístěna kdekoli v paměti programu.

tým AJMP používá 11bitovou adresovou konstantu. Příkaz se skládá ze dvou bajtů. Když je tato instrukce provedena, spodních 11 bitů čítače adres je nahrazeno 11bitovou adresou z instrukce. Pět nejvýznamnějších bitů programového čítače PC zůstat beze změny. Skok lze tedy provést uvnitř 2K-bytového bloku, který obsahuje instrukci následující po instrukci AJMP.

Existují dva typy instrukcí pro volání podprogramů: LCALL A HOVOR. Návod LCALL používá 16bitovou adresu volaného podprogramu. V tomto případě může být podprogram umístěn kdekoli v paměti programu. Návod HOVOR používá 11bitovou adresu podprogramu. V tomto případě musí být volaný podprogram umístěn ve stejném 2kbajtovém bloku jako následující instrukce HOVOR. Obě verze instrukce vytlačí adresu další instrukce do zásobníku a načtou ji do programového čítače. PC odpovídající novou hodnotu.

Podprogram končí instrukcí RET, což vám umožní vrátit se k instrukci následující po příkazu VOLÁNÍ. Tato instrukce vyjme návratovou adresu ze zásobníku a načte ji do programového čítače. PC . Návod RETI slouží k návratu z rutin přerušení. Jediný rozdíl RETI z RET je to? RETI Informuje systém, že zpracování přerušení bylo dokončeno. Pokud v době provedení RETI neexistují žádná další přerušení, je to stejné RET.

Návod DJNZ určený pro řízení cyklu. Chcete-li spustit smyčku N jakmile potřebujete načíst do čítače bajty s hodnotou N a zavřete tělo smyčky příkazem DJNZ označující začátek cyklu.

tým CJNE porovná své dva operandy jako celá čísla bez znaménka a přeskočí na adresu v něm zadanou, pokud se porovnávané operandy neshodují. Pokud je první operand menší než druhý, pak bit přenosu CF nastavte na "1".

Všechny instrukce v sestavené podobě zabírají 1, 2 nebo 3 bajty.

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

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

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

● 8bitový procesor;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ALU zahrnuje

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

● P2 SFR - západky portu P2;

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

● Z - stav vysokého odporu;

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

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

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

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

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

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

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

● P2 SFR - západky portu P2;

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

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

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

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

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

Schematické vlastnosti portů

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

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

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

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

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

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

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

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

Režim zápisu portu.

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

Režim čtení portu

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

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

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



Související články: