Mikrořadiče a jejich použití v jednoduchých mikropočítačích

27. 7. 2010
Doba čtení: 19 minut

Sdílet

V seriálu o architekturách počítačů jsme se již zabývali popisem mnoha různých mikropočítačů i výkonných pracovních stanic. Dnes se ovšem zaměříme na zcela opačnou stranu výkonnostního spektra – popíšeme si první osmibitový mikrořadič Intel 8048, který byl i přes nízký výkon použit v několika počítačích.

Obsah

1. Mikrořadiče a jejich použití v jednoduchých mikropočítačích

2. Počátek mikrořadičů – čip TMS 1000

3. Intel 8048 (MCS-48) – první osmibitový mikrořadič

4. Úspěch mikrořadiče Intel 8048

5. Vlastnosti mikrořadiče Intel 8048

6. Varianty mikrořadiče Intel 8048

7. Vlastnosti instrukční sady mikrořadiče Intel 8048

8. Instrukční sada mikrořadiče Intel 8048

9. Odkazy na Internetu

1. Mikrořadiče a jejich použití v jednoduchých mikropočítačích

V předchozích částech seriálu o architekturách počítačů jsme se zabývali převážně popisem různých minipočítačů a mikropočítačů, ať již osobních či domácích, které obsahovaly samostatný mikroprocesor s podpůrnými čipy a taktéž interní sběrnici, na níž byla připojena paměť ROM, operační paměť (RAM) a další obvody sloužící pro připojení různých periferií (sériový port, paralelní brány, řadič přerušení, řadič přímého přístupu do paměti – DMA, atd.). Tato architektura počítačů, která ostatně přímo vychází z prací Johna von Neumanna z první poloviny minulého století, je samozřejmě stále používána, ovšem nejedná se o architekturu jedinou. Výrobci čipů totiž již několik let po uvedení prvních mikroprocesorů pokračovali ve zmenšování čipů a současně i zvyšování jejich integrace a složitosti, což nakonec vyústilo v takzvaný „mikropočítač na čipu“, což je poněkud nadnesené označení jediného integrovaného obvodu, který kromě mikroprocesoru (tj. ALU, řadiče a registrů) obsahoval i paměť ROM, paměť RAM a další přídavné obvody. Tyto integrované obvody (postavené většinou na Harvardské architektuře) se podle svého nejčastějšího použití začaly označovat názvem mikrořadiče.

pc100

Obrázek 1: V předchozích částech tohoto seriálu jsme si popsali některé architektury počítačů a jejich subsystémů, které mnohdy obsahovaly několik desítek čipů o velmi velké integraci (VLSI). Na tomto obrázku je zobrazena část grafického subsystému Reality Engine obsahující osm procesorů Intel 860 spolu s dalšími integrovanými obvody zajišťujícími vzájemnou komunikaci všech modulů.

Zajímavé je, že i když mikroprocesor (vyžadující ke své činnosti mnohé další podpůrné obvody) je čip známý alespoň svým názvem i laikům, termín „mikrořadič “zná mnohem méně lidí, i když se s mikrořadiči můžeme v reálném světě setkat daleko častěji než s klasickými mikroprocesory. Mnohé zdroje uvádí, že ze všech CPU (jak universálních, tak i specializovaných) se ročně nejvíce vyrobí právě mikrořadičů různých typů a výkonnosti, které jsou použity v mnoha elektronických výrobcích. V roce 2006 se například celých 55% všech vyrobených CPU řadilo do kategorie osmibitových mikrořadičů, které jsou sice nejméně výkonné, ale také nejlevnější, až za nimi následovaly klasické mikroprocesory, digitální signálové procesory (DSP), popř. výkonnější šestnáctibitové a 32bitové mikrořadiče. Zajímavá je i samotná historie vývoje mikrořadičů. Ty jsou sice mladší než mikroprocesory (což je ostatně logické, protože mikroprocesor je jejich nedílnou součástí), ale pouze o několik let. Prvním čipem, který je možné označit termínem mikrořadič, je integrovaný obvod TMS 1000 firmy Texas Instruments, jehož vlastnosti si popíšeme v následující kapitole.

pc102_09

Obrázek 2: Integrované obvody, které tvořily ústřední část československého počítače PMI-80: mikroprocesor MHB 8080A, podpůrné obvody 8224 a 8228, paměť ROM, paměť RAM (2×1024×4 bity) a paralelní vstupně-výstupní brány realizované obvody 8255. Paměťové čipy typu MHB 2114 měly strukturu 1024×4 bity, doba přístupu do paměti dosahovala 450 ns a maximální příkon byl 500 mW. Tyto čipy měly 10 adresových pinů, 4 vstupně/výstupní piny pro data, pin pro výběr čipu (!CS) a pin pro řízení čtení/zápisu (!WE), což spolu s dvěma piny pro napájení (Ucc, GND) znamenalo, že se tento čip umisťoval do pouzdra DIL s 18 nožičkami a přitom nebylo nutné používat multiplexování adresy. Zajímavé je, že i přes značnou jednoduchost tohoto počítače je možné všechny zmíněné čipy sloučit do jednoho mikrořadiče (výkonově nejbližší by byl mikrořadič Intel 8051 popř. Motorola 68HC11).

2. Počátek mikrořadičů – čip TMS 1000

Mikrořadič TMS 1000 byl založen na čtyřbitové centrální procesorové jednotce (CPU), což poměrně podstatným způsobem ovlivnilo jak jeho výpočetní výkon, tak i aplikační oblasti, ve kterých bylo možné tento čip využít. V průběhu dalších let se totiž ukázalo, že čtyřbitové mikrořadiče jsou pro většinu aplikací málo vhodné, naproti tomu osmibitové mikrořadiče jsou, jak již víme, stále používané, i když dnes jsou již k dispozici i výkonnější 16bitové a 32bitové mikrořadiče (viz další díly tohoto seriálu). TMS 1000 obsahoval na jednom čipu čtyřbitovou aritmeticko-logickou jednotku (ALU), několik pracovních i specializovaných registrů, operační paměť o kapacitě 64 nebo 128 nibblů (nibble je čtveřice bitů, podobně jako bajt je osmice bitů), paměť programu (ROM) o maximální kapacitě 2048 bajtů a taktéž, což bylo dosti novátorské řešení, i PLA (programovatelnou logiku), pomocí níž bylo možné vytvořit („namikroprogra­movat“) až 31 uživatelských instrukcí, které se přidaly k původní (neměnné) instrukční sadě obsahující pouhých 12 instrukcí.

Obrázek 3: Von Neumannova architektura universálního počítače, v níž je využita operační paměť obsahující jak zpracovávaná data, tak i vlastní program. Mnohé mikrořadiče jsou naproti tomu postaveny na Harvardské architektuře, v níž je paměť pro program a paměť pro data oddělena, což má vliv jak na výpočetní výkon (je umožněn souběžný přístup do obou typů pamětí), tak i na cenu mikrořadiče, protože RAM může být mnohem menší v případě, že je program uložený pouze v ROM.

V předchozím odstavci jsme si řekli, že mikrořadič TMS 1000 obsahoval několik registrů. Jednalo se především o čtyřbitový akumulátor označovaný tradičně písmenem A, dále o čtyřbitový registr Y a dvou či tříbitový registr X (podobnost s osmibitovým mikroprocesorem MOS 6502 je ovšem čistě náhodná). Registry X a Y se daly zkombinovat takovým způsobem, že se chovaly jako šesti nebo sedmibitový index registr umožňující adresaci 64 nebo 128 nibblů operační paměti RAM. V mikrořadiči byl taktéž přítomen stavový registr, který byl ovšem představován pouze jediným bitem. Posledními registry byly šestibitový programový čítač (PC), čtyřbitový stránkový registr a jednobitový registr uchovávající aktuální banku v paměti ROM (horní nebo spodní kilobajt). Při načítání instrukcí se adresa načítané instrukce složila ze všech tří zmíněných registrů: 1 bit bank registr + 4 bity stránkový registr + 6 bitů PC = 11 bitů, což odpovídá 2048 adresám.

Obrázek 4: Některé bloky von Neumannovy architektury jsou v případě mikroprocesorů sloučené, jak je patrné z tohoto obrázku.

Registr PC se sice nazýval programový čítač, ovšem ve skutečnosti nebyl inkrementován pomocí sčítačky, tak jako je tomu u naprosté většiny ostatních mikroprocesorů a mikrořadičů, ale jeho obsah byl po načtení operačního kódu instrukce změněn pomocí polynomického čítače (podobně jako například v čipu TIA použitého u herní konzole Atari 2600), což znamenalo, že instrukce nebyly ve skutečnosti v paměti ROM umístěny za sebou. Ovšem vzhledem k tomu, že se jednalo o interní paměť nečitelnou mimo vlastní čip a spustitelný program byl většinou generován assemblerem, nepředstavovala tato vlastnost vlastně žádný větší problém (naopak – polynomické čítače jsou implementačně jednodušší než sčítačka). Mezi známou oblast použití mikrořadiče TMS 1000 patří například jeho „účinkování“ ve filmu ET: The Extraterrestrial, nebo jeho použití v hračkách, kde sloužil jako zvukový generátor.

Obrázek 5: Typický představitel klasických mikroprocesorů osmibitové éry: MHB 8080A, což je československý klon mikroprocesoru Intel 8080A.

3. Intel 8048 (MCS-48) – první osmibitový mikrořadič

Do vývoje mikrořadičů velmi razantním způsobem zasáhla firma Intel, jejíž inženýři navrhli první osmibitový mikrořadič nazvaný Intel 8048 (MCU-48), jenž je po mnoha různých modifikacích vyráběn dodnes, což je možná poněkud paradoxní, zejména při porovnání vývoje technologie „velkých“ mikroprocesorů, kde jen několik let starý mikroprocesor je již mnohými považován za technologicky nevyhovující součástku. Samotný vznik mikrořadiče Intel 8048 byl ovlivněn několika šťastnými rozhodnutími, k nimž dospěli tehdejší pracovníci Intelu. Tato firma totiž stála v polovině sedmdesátých let minulého století na rozcestí – zda se vydat pouze cestou neustále se zlepšujících (a taktéž poměrně drahých) mikroprocesorů, či zda současně financovat i vývoj čipů sice méně výkonných, ale o to vhodnějších pro různé cenově citlivé výrobky. Mimochodem – původně se uvažovalo o vývoji čtyřbitového mikrořadiče, ovšem Ed Gelbach nakonec prohlásil, že „čtyři bity nemají žádný sex-appeal“, takže bylo (jak se ukázalo, tak velmi šťastně) rozhodnuto o vývoji plnohodnotného osmibitového mikrořadiče.

Obrázek 6: Jedna z variant mikrořadiče Intel 8048.

Situace byla ještě v době okolo roku 1975 složitá a poměrně nepřehledná v tom, že naprostá většina elektroinženýrů navrhovala své výrobky takovým způsobem, že se v nich sice používaly číslicové (binární) obvody, ale pouze s nízkou integrací (logická hradla, klopné obvody, čítače, multiplexory, demultiplexory) – ostatně praxe s výrobou i složitých zapojení pouze z hradel a dalších obvodů TTL řady 7400 u nás přetrvala i o mnoho let později (zde si ostatně stačí připomenout naše povídání o osmibitových československých mikropočítačích). Ovšem ve chvíli, kdy se technologie mazatelných nevolatilních pamětí EPROM vylepšila do té míry, že tyto paměti mohly být napájeny pěti volty (samozřejmě mimo vlastní programovací napětí, které bylo mnohem vyšší) a napěťové úrovně jejich adresové a datové sběrnice začaly být kompatibilní s technologií TTL, bylo možné pomocí těchto pamětí postupně nahrazovat skupiny čipů TTL s menší integrací (typickým příkladem může být dekodér, který je s využitím EPROM realizovatelný velmi snadno).

Obrázek 7: Další varianta mikrořadiče Intel 8048 – tentokrát se jedná o čip s mazatelnou pamětí EPROM, o čemž neomylně svědčí „okénko“, přes které se paměť pomocí ultrafialového záření mazala, aby ji bylo možné znovu naprogramovat.

4. Úspěch mikrořadiče Intel 8048

Firma Intel zprvu plánovala, že čip s pamětí EPROM rozšíří o jednoduchou programovatelnou logiku (PLA, PAL atd.), ale postupem času – a taktéž samozřejmě díky neustále se zlepšující technologii – se nakonec tato snaha vyvinula v plnohodnotný osmibitový mikrořadič, který bylo možné v tom nejjednodušším případě provozovat po připojení napájecího napětí a krystalu. Z jakého důvodu však byl mikrořadič Intel 8048 i přes svůj poměrně malý výkon (viz další kapitoly) tak lákavý pro konstruktéry mnoha typů elektronických zařízení? Mikrořadiče, mezi nimi zprvu hlavně právě Intel 8048, totiž představovaly poměrně velký krok kupředu při vývoji mnoha typů elektronických zařízení, pro něž by klasický mikroprocesor s podpůrnými obvody byl drahý a kvůli většímu počtu čipů i více nespolehlivý (nehledě na větší plochu plošného spoje).

Obrázek 8: Velmi jednoduchý mikropočítač Kosmos CP1 založený na mikrořadiči Intel 8048, který si podrobněji popíšeme v následující části tohoto seriálu.

Připomeňme si, že například konstrukce nějakého zařízení (ať již se jedná o počítač, terminál, prvek telefonní ústředny, modul pro řízení křižovatky, zařízení pro detekci „neviditelných“ letadel atd.) s mikroprocesorem Intel 8080 vyžadovala tři napájecí napětí +5V, –5V, +12V, dva podpůrné obvody 8224 a 8225, paměťový čip EPROM či ROM, operační paměť (mnohdy realizovanou větším množstvím čipů) a pro ovládání vstupně-výstupních zařízení většinou i alespoň jeden čip 8255 obsahující trojici osmibitových bran. Naproti tomu pro mnoho jednodušších zařízení namísto výše zmíněného řešení postačoval pouhý mikrořadič Intel 8048 umístěný na jednom čipu a jediné napájecí napětí, takže výrobní náklady i spolehlivost se značně zvýšily; ostatně právě z tohoto důvodu se osmibitové mikrořadiče používají v milionových sériích dodnes, tj. v dobách, kdy je dvoujádrový 64bitový mikroprocesor a 1 GB RAM považován v oblasti osobních počítačů za standardní, dokonce poněkud podprůměrnou konfiguraci). Jedna z variant 8048 byla například použita v herní konzole Magnavox Odyssey2, další v hudebních syntetizérech atd. Mimoto se díky své jednoduchosti mikrořadič 8048 často používá při výuce konstrukce počítačů či programování v jazyku symbolických instrukcí (assembleru).

Obrázek 9: Další mikropočítač založený na mikrořadiči Intel 8048 nazvaný IMSAI. Tento počítač si taktéž popíšeme v následující části tohoto seriálu.

5. Vlastnosti mikrořadiče Intel 8048

Mikrořadič Intel 8048 sdružoval na jednom čtyřicetipinovém čipu několik různých obvodů. Především se jednalo o samotný procesor, tj. aritmeticko-logickou jednotku (ALU), řadič a nezbytné pracovní i specializované registry, zejména akumulátor (A), čítač instrukcí (PC) a stavové slovo (PCW) obsahující i tříbitový ukazatel vrcholu zásobníku (SP – zásobník měl tedy kapacitu pouhých 16 bajtů). Dále se na mikrořadiči Intel 8048 nacházela paměť programu (ROM, EPROM) o kapacitě 1024 bajtů a paměť údajů (RAM) o kapacitě pouhých 64 bajtů, osmibitový čítač/časovač, 27 vstupně/výs­tupních pinů a taktéž řadič externí datové a adresové sběrnice, pomocí níž bylo možné v případě potřeby rozšířit paměť programu, rozšířit paměť údajů, popř. k mikrořadiči připojit další podpůrné obvody, například i ty, které byly původně určeny pro mikroprocesor Intel 8080.

Obrázek 10: Hlavní funkční bloky mikrořadiče Intel 8048.

Výše zmíněných 27 programově využitelných vstupně/výstupních pinů bylo rozděleno na osmibitový port 1 (P1), osmibitový port 2 (P2), osmibitovou datovou sběrnici (BUS) použitelnou i jako třetí port a konečně na dva samostatné piny T0 a T1, jejichž stav (bitová 0 nebo 1) bylo možné snadno a velmi rychle programově otestovat (například je možné tyto piny použít pro realizaci A/D převodníku s proměnným rezistorem a kondenzátorem). Interní osmibitový čítač mohl být ovládán buď externím vstupním signálem, nebo mohl být jeho obsah zvyšován na základě hodinového signálu, takže tento čítač pracoval v režimu běžného časovače.

Obrázek 11: Přiřazení signálů k 40 pinům mikrořadiče Intel 8048, popř. jeho variantám.

Maximální kapacita paměti programu, kterou bylo možné bez nutnosti programového stránkování využívat, byla rovna 4 kB (registr PC je dvanáctibitový), maximální kapacita paměti údajů mohla v případě použití externí paměti dosahovat 320 bajtů (64 bajtů interní RAM + 256 bajtů externí RAM), což se sice může zdát málo, ale pro mnoho aplikací dokonce dostačovalo i „pouhých“ 64 bajtů interní RAM, popř. 128 bajtů u varianty 8039 – viz další text (ostatně podobně je tomu i u mnoha dalších procesorů s Harvardskou architekturou, tj. oddělenou pamětí pro program a pamětí pro data). Poznámka – v paměti programu nemusel být uložený pouze samotný program, tj. jednotlivé strojové instrukce, ale i různá data, například převodní tabulky, i když načítání dat z paměti programu pomocí instrukce MOVP či MOVP3 bylo poněkud komplikované kvůli možnosti přímé specifikace pouze osmi bitů adresy z dvanáctibitového rozsahu (horní 4 bity odpovídaly PC).

Obrázek 12: Rozdělení pinů mikrořadiče Intel 8048 do skupin podle jejich funkce.

6. Varianty mikrořadiče Intel 8048

Mikrořadič Intel 8048 se vyráběl v několika různých variantách, které se od sebe odlišovaly zejména tím, jaký typ paměti programu obsahovaly, jakou měla tato paměť kapacitu a taktéž tím, jakou kapacitu měla paměť údajů (RAM). V případě, že byl mikrořadič vybaven pamětí EPROM (jak je zvykem, byla druhá číslice v označení čipu v tomto případě rovna 7), sloužil pin Udd pro přivedení napětí 25V používaného při programování (násobiče napětí či nábojové pumpy byly zavedeny až později) a mazání paměti před programováním se samozřejmě provádělo ultrafialovým světlem. Pokud naopak čip nebyl vybaven žádnou pamětí ROM (varianty 8035HL, 8039HL a 8040AHL), bylo nutné k nim připojit paměť externí, čehož se využívalo při vývoji, protože cyklus mazání a programování EPROM je časově náročný a navíc počet přemazání těchto pamětí byl vlivem degradace celého čipu poměrně nízký (taktéž se spolu se zvyšující se degradací – rozptylem náboje do substrátu – prodlužovala doba mazání).

Obrázek 13: Podrobnější struktura mikrořadiče Intel 8048.

V následující tabulce jsou vypsány některé významné varianty tohoto mikrořadiče s tím označením, jaké jim dala firma Intel a pod jakým se tyto čipy mnohdy vyráběly i v dalších firmách (v tuzemsku se jedná o řadu MHB8048 společnosti Tesla):

Označení EPROM [B] PROM [B] RAM [B]
8035HL 0 0 64
8039HL 0 0 128
8040AHL 0 0 256
8048H 0 1024 64
8748H 1024 0 64
8049H 0 2048 128
8749H 2048 0 128
8050AH 0 4096 256

Obrázek 14: Rozšíření počtu vstupních a výstupních pinů pomocí expandéru 8243.

7. Vlastnosti instrukční sady mikrořadiče Intel 8048

V této kapitole si ve stručnosti popíšeme některé zajímavé vlastnosti instrukční sady mikrořadiče Intel 8048, která se v mnoha ohledech odlišuje od instrukční sady osmibitových mikroprocesorů firmy Intel, tj. od čipů Intel 8008 a Intel 8080. Na rozdíl od těchto universálních mikroprocesorů, v nichž je poměrně velké množství instrukcí orientováno na přístup k operační paměti o kapacitě 64 kB (jedná se o různé způsoby adresování přes dvojici pracovních registrů atd.), je v případě mikrořadiče Intel 8048 instrukční sada poněkud jednodušší, například není využito všech 256 operačních kódů. Ovšem současně mohlo dojít i k poměrně značnému zjednodušení řadiče. Je to patrné například z „pravidelnosti“ celé instrukční sady, ale i z toho, že všechny instrukce mají délku 1 nebo 2 bajty a trvají jeden nebo dva cykly (každý cyklus je tvořen pěti hodinovými takty, při prvním dochází k výběru instrukce, v dalším se provede její dekódování a inkrementace PC a následující tři takty trvá vlastní provedení instrukce).

Obrázek 15: Struktura paměti programu (ROM, EPROM).

Většina aritmetických a logických operací je v tomto mikrořadiči prováděna přímo s osmibitovým akumulátorem, jenž je v assembleru označován identifikátorem A. Kromě akumulátoru mají programátoři k dispozici osm pracovních osmibitových registrů pojmenovaných R0R7, které však ve skutečnosti leží přímo v paměti údajů mikrořadiče – můžeme je tedy považovat za osm buněk paměti, ke kterým je díky instrukční sadě umožněn snazší přístup s využitím jednobajtových instrukcí. Sada registrů R0R7 je doplněna další osmicí registrů R0'R7', taktéž umístěnou v paměti údajů (dalších 16 bajtů z adresového prostoru 64 bajtů je vyhrazeno pro zásobník). Mezi oběma sadami registrů je možné se přepínat instrukcemi SEL RB0 a SEL RB1 (select register bank 0/1), takže například při zpracování přerušení se nemusí programátor zabývat ukládáním jejich obsahu na zásobník atd. (samozřejmě se ale musí zabývat tím, aby nepřišlo další přerušení dříve, než je první přerušení skutečně zpracováno).

Obrázek 16: Struktura paměti údajů (RAM).

Sadu registrů R0R7 i osmici záložních registrů lze použít jako operandy v aritmetických a logických instrukcích, pomocí registrů R0 a R1 lze provádět adresaci (tj. tyto dva registry mohou obsahovat adresu, ne přímo zpracovávaná data) a všech osm registrů je možné taktéž použít jako čítače programových smyček, a to díky velmi užitečné instrukci DJNZ Rx, adresa, která nejprve sníží obsah příslušného registru a poté provede skok v případě, že je nová hodnota registru větší než nula. Zajímavé je, že například instrukční sada šestnáctibitového mikroprocesoru Intel 8086 již tuto instrukci zredukovala tak, že ji bylo možné použít pouze s jedním pracovním registrem (CL, CX). Dále na instrukční sadě 8048 mohou zaujmout další vlastnosti – není zde například přítomna instrukce pro odečítání (lze nahradit negací a sčítáním), lze manipulovat s horním a dolním nibblem akumulátoru a taktéž to, že lze přímo manipulovat s jednotlivými vstupně/výstupními piny – kromě instrukce pro přesun dat IN a OUT lze jednotlivé piny osmibitových portů nastavovat či naopak nulovat instrukcemi ANL port, data a ORL port, data.

Obrázek 17: Připojení externí paměti programu a externí paměti údajů k mikrořadiči Intel 8051, který si popíšeme v příští části tohoto seriálu.

V předchozích kapitolách jsme se taktéž zmínili o tom, že řadič Intel 8048 obsahoval kromě trojice osmibitových vstupně/výstupních portů P1, P2 a BUS i dvojici pinů T0 a T1, jejichž stav bylo možné zjistit programově. Na základě aktuálního stavu těchto pinů bylo možné provést podmíněný skok pomocí jedné z instrukcí JT0 (skok když číslicový signál na pinu T0 je roven 1), JNT0 (opačná podmínka), JT1 a JNT1 (dtto pro pin T1). Vzhledem ke snadnosti, s jakou bylo možné řídit běh programu na základě signálu přivedeného na tyto piny, není divu, že se velmi často využívaly pro různé účely, například pro připojení tlačítek či přepínačů, jednoduchých sond s jednobitovým výstupem, A/D převodníku realizovaného pomocí rezistoru a kondenzátoru (popř. obvodem 555) atd.

Obrázek 18: Moderní reinkarnace jedné z variant mikrořadiče Intel 8048.

ict ve školství 24

8. Instrukční sada mikrořadiče Intel 8048

V tabulce zobrazené pod odstavcem jsou uvedeny všechny instrukce mikrořadiče Intel 8048. Symbolem @ je naznačena nepřímá adresace s využitím registrů R0 a R1, symbol # nahrazuje osmibitovou konstantu, F0 a F1 jsou uživatelské jednobitové příznaky, T a CNT je časovač/čítač a instrukce typu CALL a JMP se v tabulce vyskytují vícekrát z toho důvodu, že část instrukčního kódu (konkrétně tři bity) se spojuje s následujícím bajtem uloženým za instrukčním kódem takovým způsobem, že se vytvoří jedenáctibitová adresa v paměti programu, přičemž dvanáctý bit je volen instrukcemi SEL MB0 a SEL MB1 (tento bit má smysl pouze tehdy, pokud je mikrořadič vybaven 4 kB ROM, viz též obrázek číslo 15):

hi/low 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
…0000 nop inc @r0 xch a,@r0 or a,@r0 anl a,@r0 add a,@r0 adc a,@r0 mov @r0,a mov @r0,# xor a,@r0 mov a,@r0
…0001 inc @r1 xch a,@r1 or a,@r1 anl a,@r1 add a,@r1 adc a,@r1 mov @r1,a mov @r1,# xor a,@r1 mov a,@r1
…0010 jb0 jb1 jb2 mov T,A jb3 jb4 jb5 jb6 jb7
…0011 add a,# adc a,# mov a,# or a,# anl a,# ret retr jmp @a xor a,#
…0100 jmp call jmp call jmp call jmp call jmp call jmp call jmp call jmp call
…0101 en I dis i en TCNTI dis TCNTI strt CNT strt T stop TCNT clr F0 cpl F0 clr F1 cpl F1 sel RB0 sel RB1 sel MB0 sel MB1
…0110 jtf jnt0 jt0 jnt1 jt1 jf1 jni jnz jf0 jz jnc jc
…0111 dec A inc A clr A cpl A swap A rrc A rr A clr C cpl C mov A,psw rl A rlc A
…1000 inc r0 xch a,r0 or a,r0 anl a,r0 add a,r0 adc a,r0 mov r0,a mov r0,# dec r0 xor a,r0 djnz r0 mov a,r0
…1001 inc r1 xch a,r1 or a,r1 anl a,r1 add a,r1 adc a,r1 mov r1,a mov r1,# dec r1 xor a,r1 djnz r1 mov a,r1
…1010 inc r2 xch a,r2 or a,r2 anl a,r2 add a,r2 adc a,r2 mov r2,a mov r2,# dec r2 xor a,r2 djnz r2 mov a,r2
…1011 inc r3 xch a,r3 or a,r3 anl a,r3 add a,r3 adc a,r3 mov r3,a mov r3,# dec r3 xor a,r3 djnz r3 mov a,r3
…1100 inc r4 xch a,r4 or a,r4 anl a,r4 add a,r4 adc a,r4 mov r4,a mov r4,# dec r4 xor a,r4 djnz r4 mov a,r4
…1101 inc r5 xch a,r5 or a,r5 anl a,r5 add a,r5 adc a,r5 mov r5,a mov r5,# dec r5 xor a,r5 djnz r5 mov a,r5
…1110 inc r6 xch a,r6 or a,r6 anl a,r6 add a,r6 adc a,r6 mov r6,a mov r6,# dec r6 xor a,r6 djnz r6 mov a,r6
…1111 inc r7 xch a,r7 or a,r7 anl a,r7 add a,r7 adc a,r7 mov r7,a mov r7,# dec r7 xor a,r7 djnz r7 mov a,r7

Obrázek 19: Předchozí tabulka se zvýrazněnými skupinami instrukcí.

9. Odkazy na Internetu

  1. Wikipedia: Microcontroller
    http://en.wiki­pedia.org/wiki/Mi­crocontroller
  2. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  3. Texas Instruments:
    http://www.ti­.com/
  4. TMS 1000 One-Chip Microcomputers:
    http://www.ti­.com/corp/doc­s/history/tms­.htm
  5. Intel 8048 Microcon­troller Oral History Panel
    http://www.com­puterhistory.or­g/collections/ac­cession/102658328
  6. IMSAI® History: The 8048 Control Computer
    http://www.im­sai.net/histo­ry/imsai_histo­ry/imsai_8048_con­trol_computer­.htm
  7. 8048
    http://coproli­te.com/8048.html
  8. IMSAI 8048
    http://www.old-computers.com/mu­seum/computer­.asp?st=1&c=564
  9. Intel 8048
    http://en.wiki­pedia.org/wiki/8048
  10. Tesla Eltos Mikropočítačová stavebnice Petr
    http://sites.go­ogle.com/site/com­puterresearchltd/Ho­me/stare-stroje/tesla-eltos-mikropocitacova-stavebnice-petr
  11. Mikropočítačová stavebnice Petr
    http://dex.blo­guje.cz/770366-mikropocitacova-stavebnice-petr.php
  12. Kosmos CP1
    http://de.wiki­pedia.org/wiki/Kos­mos_CP1
  13. KOSMOS: CP1 / Computer Praxis
    http://www.old-computers.com/mu­seum/computer­.asp?st=1&c=494
  14. Great CPU: Part VIII: Intel 8051, Descendant of the 8048 (around 1977?)
    http://jbayko­.sasktelwebsi­te.net/cpu1.html#Sec1Par­t8
  15. Intel 8051
    http://en.wiki­pedia.org/wiki/8051
  16. Microcontroller Primer FAQ
    http://www.esa­cademy.com/au­tomation/faq/pri­mer/
  17. Embedded Systems Design magazine
    http://www.em­bedded.com/mag­.htm
  18. Microcontroller­.com – Embedded Systems industry website with tutorials and dedicated resources
    http://www.mi­crocontroller­.com/
  19. Microcontroller based electronics projects
    http://www.es­skayinstitute­.com/newprojec­t.htm

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.