Hlavní navigace

Mikrořadiče a jejich aplikace v jednoduchých mikropočítačích (3)

Pavel Tišnovský

V dnešním článku se budeme zabývat především popisem známého osmibitového mikrořadiče Intel 8051 (MCS-51), o němž jsme si již zmínili minule. Popíšeme si jak jeho čítače/časovače a sériový port, tak i strukturu paměti údajů, registry speciálních funkcí, Booleovský procesor a instrukční sadu.

Obsah

1. Čítače a časovače mikrořadiče MCS-51

2. Třetí čítač/časovač mikrořadiče MCS-52

3. Sériový port mikrořadičů MCS-51 a způsoby jeho použití

4. Struktura paměti údajů a Booleovský procesor

5. Registry speciálních funkcí (SFR)

6. Vlastnosti instrukční sady MCS-51

7. Instrukční sada MCS-51

8. Obsah následující části seriálu

9. Odkazy na Internetu

1. Čítače a časovače mikrořadiče MCS-512

V předchozí části seriálu o architekturách počítačů jsme se na samém jejím závěru zmínili o technických parametrech známého a i v současnosti často používaného mikrořadiče Intel 8051, označovaného též zkratkou MCS-51. Zmínili jsme se také o tom, že v tomto mikrořadiči, který je považován za technologicky vyspělejšího následníka MCS-48, mj. došlo k náhradě původního osmibitového čítače/časovače za dvojici šestnáctibitových čítačů/časovačů, které bylo možné nakonfigurovat takovým způsobem, aby byly kompatibilní s mikrořadičem MCS-48, což například usnadňovalo převody programů mezi oběma typy mikrořadičů (v dalším textu budeme namísto poněkud zdlouhavého sousloví „čítač/časovač“ používat zkratku T/CNT neboli „timer/counter“). Navíc se u varianty Intel 8052 (rozšíření 8051) mohl využít i třetí T/CNT, jehož pracovní režimy se v několika ohledech odlišovaly od čítače prvního i druhého.

Obrázek 1: Čítač/časovač číslo 1 pracující v režimu kompatibilním s 8048. Bitem C/T uloženým v konfiguračním registru se volí, zda se jedná o čítač reagující na signál přiváděný na pin T1 nebo o časovač připojený přes děličku 1:12 na oscilátor s krystalem. Čítání lze potlačit či naopak povolit bitem TR1, taktéž dostupným přes konfigurační registr. Po přetečení čítače/časovače z hodnoty 0×1fff na 0×0000 dojde k nastavení bitu TF1 a taktéž k vyvolání přerušení (pokud ovšem není maskováno).

Třetí T/CNT mikrořadiče 8052 například dokázal zachytit svoji aktuální hodnotu ve chvíli příchodu externího impulsu nebo mohl pracovat jako plnohodnotný šestnáctibitový čítač v režimu samoplnění – po dokončení čítání došlo k vyvolání přerušení a současně i k naplnění čítače dopředu nastavenou hodnotou, aniž by programátor musel tuto funkci naprogramovat v přerušovací rutině (nejedná se ani tak o to, že by šlo o složitou operaci, ale o to, že tato operace by při programové implementaci zabrala několik strojových cyklů, kterých není při obsluze přerušení nikdy dost:-). Vysvětleme si však nejprve funkci prvních dvou čítačů/časovačů. Původní MCS-51 i většina jeho variant zkonstruovaných ostatními výrobci obsahoval, jak jsme se již ostatně zmínili, dvojici šestnáctibitových čítačů/časovačů, přičemž každý mohl být nastavený tak, že buď čítal externí impulsy (čítač) nebo naopak interní impulsy odvozené od hodinového signálu (časovač) – časovač byl v tomto případě napojen na oscilátor s krystalem přes děličku 1:12, tj. při frekvenci krystalu 12 MHz (standard pro původní MCS-51) dokázal čítat rychlostí jeden milion inkrementací za sekundu.

Obrázek 2: Čítač/časovač číslo 1 pracující v režimu s automatickým samoplněním. Povšimněte si, že v tomto případě se jedná pouze o osmibitový čítač či časovač, protože se provádí inkrementace jediného osmibitového registru TL1. To znamená, že k nastavení příznaku TF1 a k vyvolání přerušení dojde již při přetečení čítače z hodnoty 0×ff na 0×00.

Každý z těchto čítačů/časovačů mohl pracovat v jenom ze čtyř režimů nastavovaných pomocí dvojice bitů v jednom řídicím registru. První režim umožňoval kompatibilitu s MCS-48 (kde se hodinový signál nejdříve dělil 32), ovšem hodnota, na kterou bylo možné T/CNT nastavit, byla pouze třináctibitová (viz též obrázek číslo 1). Druhý režim umožňoval použít plnohodnotný šestnáctibitový T/CNT, ovšem o jeho znovunaplnění (tj. změnu obsahu řídicích registrů THx a TLx) vhodnou hodnotou se musel starat sám programátor, například v přerušovací rutině. Ve třetím režimu, který bylo možné nastavit, se T/CNT naplňoval po přetečení z maximální hodnoty k nule automaticky, ovšem kvůli omezení rozsahu řídicích registrů se jednalo pouze o T/CNT osmibitový, protože druhý řídicí registr THx, který původně obsahoval horních 8 bitů T/CNT se zde používal pro úschovu hodnoty, jímž se T/CNT znovu naplnil (viz též obrázek číslo 2). V posledním režimu byl první T/CNT rozdělen na osmibitový T/CNT a taktéž osmibitový časovač, který byl vždy připojen na hodinový signál (protože na pinech mikrořadiče už nezbylo volné místo pro přivedení dalšího externího signálu). Druhý T/CNT byl v tomto případě zastaven.

Obrázek 3: Čítač/časovač číslo 0 v režimu svého rozdělení na osmibitový T/CNT a osmibitový časovač. Povšimněte si, že v tomto režimu se využívají některé řídicí a příznakové bity, které původně náležely čítači/časovači číslo 1 – jedná se o bity TR1 a TF1.

2. Třetí čítač/časovač mikrořadiče MCS-52

Vraťme se nyní k již zmíněnému mikrořadiči Intel 8052, který kromě několika dalších vylepšení, například rozšíření paměti údajů či paměti programu na dvojnásobnou kapacitu, obsahoval i třetí šestnáctibitový čítač/časovač doplněný dvojicí pinů (s dvojí funkcí), pomocí nichž bylo možné s tímto T/CNT zpracovávat externí signály. Tento čítač/časovač byl ovládán více řídicími registry, než původní dva čítače, což mj. znamenalo, že i jeho funkce mohly být rozšířeny. Takzvaný samoplnící režim, v němž se hodnota T/CNT po dočítání automaticky opět nastavila na zvolenou hodnotu, byl rozšířen takovým způsobem, že v tomto režimu mohl třetí T/CNT stále pracovat s šestnáctibitovými hodnotami (v případě prvních dvou T/CNT se v tomto režimu musel jeden z osmibitových řídicích registrů „obětovat“ pro uložení hodnoty samoplnění).

Obrázek 4: Samoplnící režim třetího čítače mikrořadiče Intel 8052. K novému naplnění šestnáctibitovou hodnotou uloženou v registrech RCAP2L a RCAP2H může dojít buď při přetečení čítače (kdy se mj. nastaví příznak TF2 a může dojít k vyvolání přerušení) nebo po detekci změny signálu přivedeného na pin T2EX.

Možná ještě zajímavější však byl takzvaný záchytný režim, v němž mohl třetí čítač při příchodu externího impulsu připojeného na pin T2EX zachytit aktuální stav čítače a uložit ho do dvojice osmibitových řídicích registrů (RCAP2L a RCAP2H), z nichž mohl programátor přesně zjistit, v jakém okamžiku došlo k externí události. V tom nejjednodušším případě tedy mohl být třetí časovač mikrořadiče 8052 použit například při implementaci analogově-digitálního převodníku založeného na integračním článku, jehož rychlost dostačovala pro čtení otočení potenciometru (ovladače typu paddle), teploty zjištěné termistorem atd. Pin T2EX mohl být využit i v samoplnícím režimu na to, aby se čítači/časovači pomocí externího signálu „vnutila“ jeho výchozí hodnota, tj. aby se začalo s novým cyklem čítání. Detekce tohoto signálu taktéž mohla způsobit vznik přerušení. Třetím režimem tohoto čítače se budeme zabývat v následující kapitole, protože úzce souvisí s generováním přenosové rychlosti pro sériový port.

Obrázek 5: Záchytný režim třetího čítače mikrořadiče Intel 8052. Po detekci změny externího signálu přivedeného na pin T2EX dojde k zachycení aktuálního stavu čítače do registrů RCAP2L a RCAP2H, nastavení příznaku EXF2 a taktéž k vyvolání přerušení (pokud ovšem není zamaskováno).

3. Sériový port mikrořadičů MCS-51 a způsoby jeho použití

Další poměrně důležitou součástí mikrořadiče MCS-51 je jeho sériový port, který může být využit mnoha různými způsoby. Sériový port tvořil a dodnes tvoří jeden z často používaných komunikačních kanálů, pomocí nichž je možné s mikrořadičem komunikovat a to bez toho, aby se musely tvořit složité, nákladné a mnohdy i poruchové paralelní sběrnice, popř. paralelní vstupně/výstupní porty využívající například obvody typu 8255. Sériový port implementovaný v mikrořadiči MCS-51 může pracovat ve čtyřech režimech, přičemž první režim je synchronní (s vyvedeným hodinovým signálem) a další tři režimy asynchronní, tj. jednotlivé sekvence bitů (buď vždy celý bajt nebo 9 bitů) jsou zahájeny start-bitem a ukončeny stop-bitem, pomocí nichž dochází k synchronizaci mezi vysílačem a přijímačem. V asynchronním režimu sériového portu lze data přenášet poloduplexně nebo fullduplexně (tj. obousměrně v jeden okamžik), dokonce je možné, což je poněkud netypické, pro vysílání dat použít jinou přenosovou rychlost než pro příjem dat.

Obrázek 6: Zapojení pinů mikrořadiče MCS-51. Sériový port využívá piny označené RxD a TxD, jejichž funkce závisí na tom, v jakém režimu sériový port v daném okamžiku pracuje.

Ve všech čtyřech podporovaných režimech sériového portu mají programátoři k dispozici záchytný osmibitový registr nazvaný SBUF sloužící pro meziuložení přijatého osmibitového znaku a naopak pro zapamatování dalšího znaku, který se má po sériovém rozhraní přenést. Ve skutečnosti se interně jedná o dvojici registrů SBUF uložených na jedné adrese, přičemž do prvního registru lze pouze zapisovat a z druhého naopak pouze číst, takže je skutečně možné mít oba registry umístěné na jediné adrese. Příjem znaku či naopak připravenost pro odvysílání dalšího znaku je programátorovi oznámeno pomocí přerušení a nastavení příznakových bitů. Při nastavování rychlosti asynchronního přenosu dat po sériovém portu se v režimech 1 a 3 využívají interní časovače popsané v předchozí kapitole, ovšem v režimu synchronním a taktéž v režimu asynchronním (konkrétně se jedná o režim číslo 2) je přenos dat přímo řízen oscilátorem s krystalem, jehož frekvence je podělena pevně zadanou hodnotou (1:12 u synchronního přenosu a 1:32 nebo 1:64 u přenosu asynchronního).

Obrázek 7: Čítač číslo 2 (dostupný pouze u mikrořadiče 8052), v režimu, kdy generuje synchronizační signály řídicí přenos dat po sériovém portu.

To, že je přenosová frekvence přímo či nepřímo závislá na kmitočtu oscilátoru je poměrně důležité a v mnoha zapojeních to ovlivňuje volbu krystalu. Zatímco mezní frekvence původního mikrořadiče 8051 byla rovna 12 MHz (což odpovídá strojovému cyklu s dobou trvání 1µs), často se používal krystal s frekvencí 11,059 MHz umožňující přesnou volbu standardních přenosových rychlostí sériového portu, například 1200 Bd, 2400 Bd, 4800 Bd, 9600 Bd a 19200 Bd. Jak jsme si již řekli v úvodním odstavci této kapitoly, je použití sériového portu mnohostranné. Poměrně velké množství různých čidel pracuje v synchronním režimu vhodném pro připojení na „sběrnici“ SPI, která je sice obecně plně duplexní (což sériový port v 8051 neumožňuje), ale pro „pouhé“ čtení naměřených hodnot je možné využít sériového portu nastaveného do synchronního režimu. Synchronní režim se taktéž někdy používá (dosti netypicky) pro řízení některých zařízení pomocí PWM (pulsní šířkové modulace) – v tomto případě postačuje na sériový port vysílat data odpovídající požadované šířce impulsů.

Obrázek 8: Sériový port nastavený do synchronního přenosového režimu, v němž se data vysílají či přijímají po pinu RXD a hodinové signály vystupují na pin TXD. Z obrázku je taktéž patrné, že záchytný registr SBUF je skutečně fyzicky tvořen dvojicí registrů.

Velmi často se využívá asynchronní poloduplexní nebo fullduplexní režim sériového portu, například při komunikaci mezi MCS-51 a osobním počítačem. Mnohé vývojové kity, o nichž se zmíníme dále, využívají pro přenos dat právě takto nastavený komunikační kanál. Taktéž další typy periferních zařízení, například různé řádkové nebo i grafické displeje (LCD), dokážou komunikovat v asynchronním režimu, takže pro jejich připojení k MCS-51 postačují pouze dva vodiče (jednosměrný přenos) nebo vodiče tři (obousměrný přenos).

Obrázek 9: Sériový port nastavený do asynchronního režimu, v němž se data vysílají po desíti bitech: start-bit, osm datových bitů a stop-bit. Povšimněte si, že zdrojem hodinového signálu může být jak časovač 1, tak i časovač 2 (dostupný pouze u modelu 8052).

4. Struktura paměti údajů a Booleovský procesor

V předchozí části tohoto seriálu jsme si řekli, že mikrořadič MCS-51 obsahuje interní paměť údajů o kapacitě 128 bajtů (v případě modelu 8052 dokonce 256 bajtů), ke které je navíc připojena paměťová oblast o velikosti taktéž 128 bajtů, do níž jsou mapovány registry speciálních funkcí (SFR) popsané v následující kapitole. V této kapitole se budeme zabývat především popisem struktury interní paměti údajů. Tato paměť, jejíž adresový rozsah z pohledu programátora leží v rozsahu adres 0×00 až 0×7f, je logicky rozdělena do několika oblastí. Do prvních osmi bajtů (tj. na adresách 0×00 až 0×07) jsou umístěny hodnoty pracovních osmibitových registrů R0R7 z první banky registrů (vzhledem k číslování od nuly se jedná o bank0). Následují další tři osmice bajtů, které postupně obsahují hodnoty pracovních registrů z druhé (adresy 0×08 až 0×0f), třetí (adresy 0×10 až 0×17) a čtvrté banky registrů (adresy 0×18 až 0×1f).

Obrázek 10: Amatérský mikropočítač postavený na základě mikrořadiče 8051.

V instrukční sadě mikrořadiče MCS-51 jsou samozřejmě programátorům k dispozici instrukce pro přepínání jednotlivých bank registrů, ovšem v případě potřeby lze provádět čtení či zápis do a z ostatních (nevybraných) banků nepřímo – využitím jejich adresy. Instrukční kód je ovšem v tomto případě o jeden bajt delší a pokud se provádí přesun dat mezi pracovním registrem a adresou paměti (jedná se například o instrukce typu MOV direct, Rn, mov Rn, direct, mov direct, @Ri či mov @Ri, direct) i delší o jeden strojový cyklus, tj. při použití krystalu s kmitočtem 12 MHz o celou jednu mikrosekundu. Pokračujme však v popisu struktury dalších oblastí paměti údajů. Na adresách 0×20 až 0×2f se nachází šestnáct bajtů, které lze využít naprosto libovolným způsobem, například pro uložení hodnot různých výpočtů.

Obrázek 11: Při otočení desky mikropočítače zobrazeného na předchozím obrázku zjistíme, že se ve skutečnosti nejedná o plošný spoj, ale že jsou použity drátové propojky.

Ovšem těchto šestnáct bajtů má jednu neobvyklou vlastnost – v instrukční sadě mikrořadiče MCS-51 existují instrukce pro nastavení, nulování a testování jednotlivých bitů (kterých je 128 – 16 bajtů po osmi bitech), takže se poměrně často tato paměťová oblast používá pro uložení různých jednobitových (booleovských) příznaků, které by se při nemožnosti adresace po jednotlivých bitech buď musely ukládat do celého bajtu (což je velké plýtvání, zvláště pokud si uvědomíme, že máme k dispozici pouze 128 bajtů paměti RAM) nebo by se pro jejich nastavení a testování musel používat složitější programový kód (což je zase plýtvání kapacitou programové paměti i výpočetního výkonu mikrořadiče). Za adresou 0×30 až do adresy 0×7f (popř. 0×ff u modelu 8052) se nachází takřka volná oblast, kterou mohou programátoři využít pro své účely. Slovo „takřka“ bylo v předchozí větě použito schválně, protože v případě, že k mikrořadiči není připojena externí RAM, se v paměti údajů nachází taktéž zásobník.

Obrázek 12: Displej z tekutých krystalů připojený k mikrořadiči 8051. Na tomto typu displeje lze zobrazit dva textové řádky, přičemž na každém řádku je zobrazeno až 20 znaků, což je kupodivu dostačující pro velké množství aplikací.

5. Registry speciálních funkcí (SFR)

Do adresového rozsahu 0×80 až 0×ff, tj. do 128 bajtů ležících za pamětí údajů, je namapována oblast takzvaných registrů speciálních funkcí neboli SFR (Special Function Registers). Jedná se o registry, pomocí nichž se konfigurují různé moduly mikrořadiče MCS-51, například čítače/časovače, sériový port a paralelní porty, nebo jsou v nich naopak uloženy různé příznaky a data naplňovaná samotným mikrořadičem, zejména příznak přetečení čítače/časovače, znak přijatý sériovým portem, stav jednotlivých přerušení atd. Mezi registry speciálních funkcí patří i samotný akumulátor A/ACC uložený na adrese 0×e0, pomocný registr B na adrese 0×f0, který je používán při násobení a dělení, stavové slovo programu PSW či ukazatel na vrchol zásobníku SP. Některé registry speciálních funkcí jsou dostupné pouze jako celistvé bajty, tj. jejich obsah lze načíst například instrukcí mov A,direct, ovšem několik těchto registrů lze alternativně adresovat i po jednotlivých bitech, podobně jako oblast 128 bitů (16 bajtů) v paměti údajů (tyto registry jsou součástí Boolovského procesoru).

Obrázek 13: Multiplatformní aplikace J51 (napsaná v Javě) dokáže emulovat různé varianty mikrořadičů MCS-51.

Pouze u následujících SFR lze přistupovat k jednotlivým bi­tům:

Adresa Označení Význam
0×80 P0 port 0
0×90 P1 port 1
0×a0 P2 port 2
0×b0 P3 port 3
0×88 TCON řízení čítačů a časovačů
0×c8 T2CON řízení třetího čítače a časovače u 8052
0×98 SCON řízení sériového portu
0×a8 IE prohlížeč^H^H^H^H^­H^H^H^H^H registr povolení jednotlivých přerušení
0×b8 IP nastavení priority jednotlivých přerušení
0×d0 PSW stavové slovo programu (Program Status Word)
0×e0 ACC akumulátor
0×f0 B pomocný registr B

Obrázek 14: Obsah speciálních funkčních registrů zobrazený v emulátoru J51.

Přístup k paměti údajů (tj. ke 128 bajtům na adresách 0×00 až 0×7f) i k registrům speciálních funkcí (128 bajtů na adresách 0×80 až 0×ff) je jednoznačný v případě mikrořadiče Intel 8051, ovšem u mikrořadiče Intel 8052 museli jeho konstruktéři vyřešit, jakým způsobem bude adresování probíhat ve chvíli, kdy má paměť údajů kapacitu 256 bajtů namísto 128 bajtů, a adresy v instrukčních slovech mají pouze osmibitovou délku. Řešení tohoto problému spočívá v tom, že horních 128 bajtů paměti údajů je dostupných pouze při nepřímé adresaci (tj. použití instrukcí s operandy @R0 a @R1), zatímco dolních 128 bajtů paměti údajů a 128 bajtů se SFR je dostupných při adresaci přímé. V případě, že je k interní paměti údajů navíc připojena paměť externí, musí se použít plná šestnáctibitová adresa, která je uložená v šestnáctibitovém registru DPTR (Data Pointer), popř. osmibitová adresa uložená v registru R0 či R1, ovšem horních osm bitů adresy musí být při provedení instrukce „vystaveno“ na portu číslo 2.

Obrázek 15: Disasemblovaný binární kód zobrazený v emulátoru J51.

6. Vlastnosti instrukční sady MCS-51

Při návrhu mikrořadiče MCS-51 jeho konstruktéři sice vycházeli z instrukční sady MCS-48, ovšem mnoho instrukcí přidali (z těch základních například odečítání) a u dalších instrukcí „alespoň“ rozšířili jejich funkcionalitu, adresní režimy a/nebo paměťový rozsah, ve kterém je možné provádět skoky popř. načítat či ukládat data. Podobně jako u MCS-48 se i u mikrořadiče MCS-51 velké množství operací provádí s osmibitovým akumulátorem A, jedním z pracovních registrů R0R7, popř. s buňkou paměti adresovanou registrem R0 či R1. Navíc je však možné mnoho operací provádět přímo s paměťovými buňkami v interní paměti údajů nebo s registry speciálních funkcí (SFR); existuje například instrukce typu MOV adresa, #osmibitová_data, kterou lze naplnit libovolnou buňku interní RAM (ležící na adresách 0×00 až 0×7f) popř. SFR.

Obrázek 16: Vývojový kit s mikrořadičem MCS-51, který byl dodáván firmou Intel. Tento kit si popíšeme v příštím díle tohoto seriálu.

Kvůli tomu, že rozsah externí paměti RAM může v případě MCS-51 nabývat až kapacity 64 kB, je množina pracovních registrů doplněna o šestnáctibitový registr DPTR (Data Pointer), do něhož lze přímo načíst šestnáctibitovou konstantu instrukcí MOV DPTR, #šestnáctibito­vá_data, popř. zvýšit jeho hodnotu o jedničku pomocí instrukce INC DPTR, což je užitečné například při procházení polem. Z dalších zajímavých instrukcí, které se v MCS-51 objevily oproti MCS-48 se jedná především o instrukce „Boolovského procesoru“, které pracují s jedním bitem paměti údajů či jedním bitem SFR a příznakovým bitem CY (carry); dále o instrukce MUL pro násobení dvou osmibitových celých čísel (výsledkem je šestnáctibitové číslo) a instrukce DIV pro dělení čísel se zbytkem. Tyto dvě instrukce trvají v původním modelu mikrořadiče 8051 čtyři takty – jedná se tedy o nejdéle trvající instrukce (většina ostatních instrukcí je provedena za jeden popř. dva takty).

Obrázek 17: Další pohled na vývojový kit firmy Intel.

K instrukcím skoků přibyla instrukce CJNE, která porovnává operand (registr či obsah adresy dostupné přes osmibitové registry R0 či R1) s osmibitovou konstantou. Na základě porovnání obou operandů může dojít k podmíněnému skoku – tato instrukce se tedy hodí, spolu se skokovou instrukcí DJNZ (ta již byla dostupná u mikrořadiče MCS-48) k tvorbě programových smyček. Poněkud zvláštní je skoková instrukce JMP @A+DPTR, kterou lze využít například při konstrukci tabulky skoků, tj. obdoby céčkové programové konstrukce typu switch-case. Klasický nepodmíněný skok lze realizovat dvojicí instrukcí: instrukce ACALL má i s operandem délku dva bajty, ovšem umožňuje provádět skok v rámci dvou kilobajtů (jedenáctibitová adresa); zatímco instrukce LCALL má délku tři bajty, ale skok lze provádět přes celou paměť programu (ta může mít při připojení externí ROM, EPROM či FLASH kapacitu až 64 kB).

Obrázek 18: Schéma „amatérského“ mikropočítače založeného na mikrořadiči Intel 8051.

7. Instrukční sada MCS-51

Na devatenáctém obrázku je zobrazena instrukční sada osmibitového mikrořadiče MCS-51 se zvýrazněním jednotlivých skupin instrukcí. Na první pohled je patrné, že kromě jediného instrukčního kódu (sytě červená barva) jsou všechny osmibitové kódy 0×00 až 0×ff obsazeny, na rozdíl od minule popsaného mikrořadiče MCS-48. Taktéž stojí za povšimnutí určitá pravidelnost rozmístění instrukcí. Především se to týká pravé poloviny tabulky, v níž je pomocí nejnižších třech bitů určeno, se kterým pracovním registrem R0R7 se má daná instrukce provést (tento registr slouží jako první či druhý operand vybrané operace). Tabulka z obrázku číslo 19 je dostupná i v plném rozlišení, popř. jako tabulka pro spreadsheet Gnumeric (dokáže někdo převést tento formát na .ods při zachování veškerého formátování?).

Obrázek 19: Instrukční sada mikrořadiče MCS-51.

8. Obsah následující části seriálu

V následující části seriálu o architekturách počítačů si popíšeme některé vývojové kity a taktéž více či méně sofistikované mikropočítače, které jsou založené na osmibitovém mikrořadiči MCS-51. Kromě standardních způsobů použití tohoto mikrořadiče si řekneme například to, jakým způsobem se někteří konstruktéři mikropočítačů snažili o programové generování obrazového signálu s využitím MCS-51 (přesněji řečeno některé jeho modernější a tím pádem i rychlejší varianty). Taktéž se zmíníme o parametrech některých modernějších mikrořadičů, které jako své jádro stále používají 8051, tj. zejména jeho instrukční sadu a SFR. Posléze se již začneme zabývat dalšími typy mikrořadičů, především architekturami AVR, PIC či sice ne tak známými, ale možná o to zajímavějšími architekturami MuP21 a F21, na jejichž návrhu se podílel Chuck Moore (který kromě jiného stvořil i Forth a „mimozemský programovací jazyk“ ColorForth).

Obrázek 20: Připojení LCD s rozlišením 128×64 pixelů k mikrořadiči MCS-51.

Obrázek 21: „Zbastlený“ video výstup založený na přímém programovém ovládání tří signálů – LUMINANCE (světlost), BLANK (interval v němž je obraz zatemněný – okraje a návrat paprsku) a SYNC (synchronizační impuls). Všechny tři signály jsou pomocí čtveřice rezistorů smíchány a tvoří tak vstup (kompozitní video bez barvonosné složky) pro televizor pracující v normě PAL, SECAM či NTSC.

9. Odkazy na Internetu

  1. 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. Intel 8048 Microcon­troller Oral History Panel
    http://www.com­puterhistory.or­g/collections/ac­cession/102658328
  4. IMSAI® History: The 8048 Control Computer
    http://www.im­sai.net/histo­ry/imsai_histo­ry/imsai_8048_con­trol_computer­.htm
  5. 8048
    http://coproli­te.com/8048.html
  6. IMSAI 8048
    http://www.old-computers.com/mu­seum/computer­.asp?st=1&c=564
  7. Intel 8048
    http://en.wiki­pedia.org/wiki/8048
  8. Tesla Eltos Mikropočítačová stavebnice Petr
    http://sites.go­ogle.com/site/com­puterresearchltd/Ho­me/stare-stroje/tesla-eltos-mikropocitacova-stavebnice-petr
  9. Mikropočítačová stavebnice Petr
    http://dex.blo­guje.cz/770366-mikropocitacova-stavebnice-petr.php
  10. Kosmos CP1
    http://de.wiki­pedia.org/wiki/Kos­mos_CP1
  11. KOSMOS: CP1 / Computer Praxis
    http://www.old-computers.com/mu­seum/computer­.asp?st=1&c=494
  12. Great CPU: Part VIII: Intel 8051, Descendant of the 8048 (around 1977?)
    http://jbayko­.sasktelwebsi­te.net/cpu1.html#Sec1Par­t8
  13. Intel 8051 – Wikipedie EN
    http://en.wiki­pedia.org/wiki/8051
  14. Intel 8051 – Wikipedie CZ
    http://cs.wiki­pedia.org/wiki/In­tel_8051
  15. Popis mikroprocesoru 8051
    http://www.dhser­vis.cz/popis8051­.htm
  16. Jak se naučit programovat (nejen jednočipy)
    http://www.dhser­vis.cz/dalsi1/ob­sah_popis.htm
  17. 89C1051 series datasheets
    http://www.chip­docs.com/datashe­ets/datasheet-pdf/Atmel-Corporation/89C1051­.html
  18. 8051 microcon­troller FAQ
    http://www.faq­s.org/faqs/mi­crocontroller-faq/8051/
  19. ABOUT THE 8051
    http://www.esa­cademy.com/as­sets/faqs/8051/2­.htm
  20. Mikroprocesor 8051
    http://8051.go­dlike.cz/
  21. Intel SDK
    http://en.wiki­pedia.org/wiki/In­tel_SDK
  22. Old Computer Museum: SDK-51 (MCS-51)
    http://oldcom­putermuseum.com/in­tel_sdk51.html
  23. Embedded Systems Development Nexus
    http://hypercon­tinuum.tripod­.com/
  24. 80×51 Microcontrollers webring
    http://nav.we­bring.org/cgi-bin/webring?rin­g=80×51;home
  25. Intel 8051 Java Simulator/Debugger
    http://www.vi­ara.eu/en/j51/
  26. Intel 8051 Java Simulator/Debugger – download page
    http://www.vi­ara.eu/en/j51/#DOW­NLOAD
  27. Silicon Labs Pipelined 8051 Microcon­trollers
    http://www.si­labs.com/produc­ts/mcu/Pages/8051-microcontroller­.aspx
  28. My home-built 8051 Computer
    http://roger.tri­deja.com/8051/80­51.html
  29. 8390 Ethernet Tutorial
    http://www.8052­.com/tcpip/
  30. Zylogic Semiconductor Corporation
    http://www.zy­logic.com.cn/en­glish/tools03­.htm
  31. 8051 Television Video
    http://www.8052­.com/users/phi­llipmgallo/
  32. 128×64 Graphical LCD
    http://www.pjrc­.com/tech/8051/bo­ard5/lcd_128×6­4.html
  33. 8051 FAQs
    http://www.8052­.com/faqs
Našli jste v článku chybu?

16. 8. 2010 18:37

Mrkněte i na 1-Wire, to je teprv lahůdka – jeden drát, na kterém probíhá obousměrná komunikace procesoru s periferií, z obou stran otevřené kolektory a někde pull-up odpor (a když na to přijde, tak si z toho bere periferie i potřebné napájení). Viz http://hw.cz/Rozhrani/ART1215-Sbernice-1-Wire.html

11. 8. 2010 21:32

Obecně se tenhle trik používá při arbitráži, kdy mezi sebou rovnocenná zařízení vybírají šéfa, viz třeba
http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/general-introduction/bus-arbitration.html
Jiný příklad použití byla třeba Plug&Play podpora dodatečně dobastlená do specifikací ISA sběrnice.



DigiZone.cz: Flix TV startuje i na Slovensku

Flix TV startuje i na Slovensku

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?