Výuka programování - nástroje pro ilustraci činnosti mikroprocesoru (2)

Pavel Tišnovský 6. 12. 2011

Ve čtrnácté části seriálu o programovacích jazycích (a dalších prostředcích) určených pro výuku programování se opět budeme zabývat popisem nástrojů, které mohou pomoci vysvětlit princip činnosti mikroprocesoru. Minule jsme se zabývali především uměle vytvořenými typy CPU, dnes se však zaměříme spíše na reálné čipy.

Obsah

1. Nástroje pro simulaci práce reálných mikroprocesorů

2. 6502asm – pouhá retro aplikace nebo užitečná pomůcka?

3. Periferní zařízení v simulovaném virtuálním počítači 6502asm

4. Grafický subsystém počítače simulovaného systémem 6502asm

5. Visual 6502 aneb simulace práce CPU na úrovni jednotlivých tranzistorů

6. Mikrořadiče PIC a jejich simulátory

7. Od simulátoru mikrořadiče k reálnému vývojovému kitu

8. Vývojové kity pro mikrořadič Intel 8051 i pro jeho moderní klony

9. Odkazy na Internetu

1. Nástroje pro simulaci práce reálných mikroprocesorů

V dnešní části seriálu o programovacích jazycích a dalších nástrojích určených pro výuku programování se budeme zabývat převážně aplikacemi určenými pro simulaci práce reálných mikroprocesorů (CPU) a mikrořadičů (MCU). Použití simulátorů reálných CPU a MCU s sebou přináší jak přednosti, tak i zápory. Nevýhody spočívají především v tom, že při návrhu reálných mikroprocesorů jsou jejich výrobci velmi pragmatičtí (což je ostatně logické, jinak by na trhu pravděpodobně neuspěli) a v mnoha případech jsou navíc svázáni i snahou o zajištění zpětné kompatibility s některým starším CPU či MCU (ať již vlastním či konkurenčním). Výsledkem pragmatismu a zpětné kompatibility mohou být čipy s poměrně složitými a nepravidelnými instrukčními sadami, které v mnoha ohledech nemusí vyhovovat potřebám výuky – na rozdíl od minule popsaných instrukčních sad „virtuálních“ procesorů LMC (Little Man Computer) či CARDIAC s pouhými deseti snadno pochopitelnými a zapamatovatelnými instrukcemi (viz též předchozí část tohoto seriálu).

Obrázek 1: Amatérský mikropočítač postavený na základě osmibitového mikrořadiče 8051. Funkce nabízené tímto mikropočítačem jsou v mnoha ohledech podobné funkcím minule popsaného kitu PMI-80 (i když se jedná o zařízení postavená na odlišných čipech a s využitím jiných technologií).

Použití simulátorů reálných mikroprocesorů a mikrořadičů však s sebou pochopitelně přináší i některé zjevné výhody. Především takových aplikací existuje poměrně velké množství, takže možnosti výběru jsou větší, nehledě na to, že instrukční sady populárních CPU a MCU jsou podrobně popsány jak v technické dokumentaci, tak i v některých knížkách věnovaných vývoji. Užitečnost se ještě zvýší tím, že odladěné programy je v naprosté většině případů možné přenést na reálný vývojový kit s mikroprocesorem a mikrořadičem, k němuž mohou být připojena různá čidla, klávesnice, výstupní prvky (LED, textové či grafické LCD, osciloskop, televizor či monitor), popř. též řadič sériového portu či USB sběrnice umožňující snadnou komunikaci s osobním počítačem. To může vést k většímu zájmu o programování, popř. o stavbu různých zařízení řízených mikrořadičem (o zájmu alespoň určité části dětí o tento obor se lze poměrně snadno přesvědčit v různých elektrotechnických kroužcích, navíc je dnes pořízení jednoduššího kitu poměrně levná záležitost).

Obrázek 2: Multiplatformní aplikace J51 (napsaná v programovacím jazyku Java) dokáže emulovat různé varianty mikrořadičů MCS-51.

2. 6502asm – pouhá retro aplikace nebo užitečná pomůcka?

V předchozí části tohoto seriálu jsme si v sedmé kapitole popsali „retro“ mikropočítač. Jednalo se o zařízení PMI-80 vybavené dnes již dávno překonaným osmibitovým mikroprocesorem Intel 8080, resp. jeho tuzemskou variantou MHB 8080A. U historických mikroprocesorů však ještě na chvíli zůstaneme. Zatímco v Evropě bylo mnoho domácích počítačů a dalších zařízení postaveno právě na bázi mikroprocesoru Intel 8080, popř. na slavném čipu Zilog Z80 (který je zpětně kompatibilní s 8080, což byl ostatně jeden z důvodů jeho úspěšnosti), v USA se naproti tomu větší oblibě těšil osmibitový mikroprocesor MOS 6502, jenž byl použit například v domácích počítačích firem Apple, Atari a Commodore (CBM). Není tedy divu, že existuje velké množství programátorů znajících instrukční sadu tohoto mikroprocesoru. Navíc se z hlediska použité technologie jedná o poměrně jednoduchý čip, jehož instrukční sada (a princip práce) se dodnes využívá na některých školách pro výuku, protože se na něm dají jednoduše vysvětlit principy práce CPU, různé adresovací režimy atd.

pc6612

Obrázek 3: Osmibitový mikroprocesor MOS 6502 byl používán jak v mnoha mikropočítačích, tak i v dalších elektronických zařízeních. Zde je zobrazena herní konzole Atari 2600 vybavená mikroprocesorem MOS 6507, což je varianta původního čipu MOS 6502, ovšem s omezeným počtem pinů adresové sběrnice.

Instrukční sadu mikroprocesoru MOS 6502 si lze dokonce odzkoušet na prakticky jakémkoli současném počítači či tabletu, a to bez nutnosti instalace assembleru a/nebo simulátoru (popř. simulátoru některého osmibitového domácího mikropočítače). Na stránce http://6502as­m.com/ se totiž nachází vydařený simulátor virtuálního počítače vybaveného jednoduchým displejem, klávesnicí a v neposlední řadě právě mikroprocesorem MOS 6502. Tento simulátor, jenž byl naprogramovaný Stianem Sorengem, obsahuje editor (ve skutečnosti se v současné verzi jedná o pouhé textové pole umístěné na HTML stránce), do něhož je možné zapsat program v jazyku symbolických instrukcí a následně tento program přeložit vestavěným assemblerem a poté i spustit. Zajímavé je, že jak překlad, tak i spuštění se provádí přímo v prohlížeči s využitím JavaScriptu (to však už dnes není nic překvapivého, protože v JavaScriptu byl naprogramován dokonce i simulátor celého PC.

pc6613

Obrázek 4: Schéma zapojení herní konzole Atari 2600 s osmibitovým mikroprocesorem MOS 6507.

Užitečné odkazy:

  1. 6502asm.com (emulátor 6502):
    http://6502as­m.com/
  2. www.6502.org:
    http://www.6502­.org/
  3. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  4. Root.cz: Osmibitové mikroprocesory a mikrořadiče firmy Motorola
    http://www.ro­ot.cz/clanky/os­mibitove-mikroprocesory-a-mikroradice-firmy-motorola-1/

Obrázek 5: Originální mikropočítač Apple II postavený na bázi osmibitového mikroprocesoru MOS 6502.

3. Periferní zařízení v simulovaném virtuálním počítači 6502asm

Jak jsme si již řekli v předchozí kapitole, je v rámci projektu 6502asm vytvořen celý (i když v několika ohledech značně zjednodušený) mikropočítač, jehož ústřední částí je simulovaný osmibitový mikroprocesor MOS 6502. K tomuto virtuálnímu mikroprocesoru je připojena operační paměť (RAM) s kapacitou 65536 bajtů. Některé oblasti paměti však mají speciální význam. Jedná se především o takzvanou nultou stránku (zero page) ležící v oblasti 0×00000×00ff, protože pro přístup k této oblasti paměti existují speciální adresní režimy využívající pouze osmibitovou konstantu a/nebo jeden z indexových registrů X či Y (z tohoto pohledu je mikroprocesor 6502 jedním z mála skutečně osmibitových mikroprocesorů, protože například jeho konkurent Intel 8080 dokázal spojit dvojici osmibitových pracovních registrů do 16bitové adresy). Další speciální význam má první stránka ležící na adresách 0×01000×01ff, na níž je umístěn zásobník.

Obrázek 6: Program pro vykreslení loga firmy Commodore (CBM), který byl naprogramovaný v assembleru mikroprocesoru 6502 a následně spuštěn v simulátoru 6502asm.

Dále je k virtuálnímu počítači připojena trojice (opět virtuálních) periferních zařízení – klávesnice, generátor pseudonáhodných čísel a grafický subsystém. Vzhledem k tomu, že mikroprocesor MOS 6502 nepodporuje oddělení adresového prostoru I/O zařízení od adresového prostoru operační paměti, jsou „registry“ periferních zařízení mapovány přímo do hlavního adresového prostoru, a to tím nejjednodušším možným způsobem: na adrese 0×00fe se nachází výstup z generátoru pseudonáhodných čísel, který je možné použít například ve hrách. Pokud by bylo zapotřebí získat číslo o větší bitové šířce (16 bitů atd.), postačuje přečíst hodnotu z této adresy dvakrát za sebou, což sice není z teoretického hlediska úplně korektní, ovšem u běžných programů by to nemuselo vadit. Práce s klávesnicí je stejně jednoduchá – kód stlačené klávesy je možné přečíst z adresy 0×00ff. Vzhledem k tomu, že adresa generátoru pseudonáhodných čísel i adresa s kódem stlačené klávesy leží v nulté stránce paměti, je možné pro přístup k oběma zařízením používat jednodušší (a v případě reálného CPU i rychlejší) instrukce.

Obrázek 7: Obdobný program pro zobrazení loga společnosti Atari je poněkud delší – po kompilaci má velikost 632 bajtů.

4. Grafický subsystém počítače simulovaného systémem 6502asm

Nejzajímavější je však koncept grafického subsystému, který je v případě simulátoru 6502asm doveden k co největší jednoduchosti a tím i ke snadnosti použití (například je použito pevné rozlišení, konstantní barvová paleta, nejsou implementovány sprity atd.). V adresním prostoru mikroprocesoru (o rozsahu 0×00000×ffff) je na adresách 0×02000×05ff vytvořen takzvaný framebuffer, neboli obrazová paměť, jejíž obsah se zobrazuje napravo od editoru assembleru (jednotlivé pixely jsou však při zobrazování na HTML stránce zvětšeny). V této paměťové oblasti o velikosti přesně 1024 bajtů (hexadecimálně 0×0400) jsou uloženy barvy pixelů tvořících rastrový obrázek o poměrně malém rozlišení 32×32 pixelů. Díky tomu, že horizontální rozlišení rastrového obrázku je mocninou dvou, je adresace jednotlivých pixelů na základě jejich souřadnic [x,y] velmi jednoduchá a rychlá, protože není nutné používat operaci násobení (která ostatně ani není součástí instrukční sady mikroprocesoru 6502, tudíž by ji bylo nutné implementovat formou podprogramu).

Obrázek 8: Díky možnosti čtení stavu klávesnice a taktéž možnosti práce s bitmapovou grafikou je možné v simulátoru 6502asm vytvořit i jednoduché hry. Jak je z obrázku patrné, je binární kód hry dlouhý jen necelých 600 bajtů.

Protože je pro každý pixel v obrazové paměti vyhrazen přesně jeden bajt, znamená to, že je teoreticky možné pracovat s rastrovými obrázky s 28=256 barvami. Ve skutečnosti je však v simulátoru 6502asm použito pouze šestnáct barev zakódovaných ve spodní čtveřici bitů každého pixelu (to znamená, že horní polovina každého bajtu umístěného na adresách 0×02000×05ff není využita). Jak jsme si již řekli v předchozím odstavci, je barvová paleta neměnná a obsahuje – protože se jedná o „retro“ projekt – barvovou paletu používanou na slavných osmibitových domácích mikropočítačích Commodore C64. I přesto, že je 6502asm původně vyvinut především pro komunitu lidí, kteří programovali již v éře osmibitových mikropočítačů (která byla v tuzemsku posunuta o zhruba pět let), se jedná o nástroj reálně použitelný jako ukázka programování mikroprocesorů, především z toho důvodu, že instrukční sada mikroprocesoru MOS 6502 je i přes několik nepravidelností vlastně velmi jednoduchá.

Obrázek 9: Nápověda k simulátoru 6502asm s vyobrazením jeho „commodorovské“ barvové palety.

5. Visual 6502 aneb simulace práce CPU na úrovni jednotlivých tranzistorů

O velké popularitě osmibitového mikroprocesoru MOS 6502 v USA a dalších zemích svědčí i existence dalšího projektu nazvaného Visual 6502. Jedná se opět o simulátor mikroprocesoru, který však pracuje na poněkud jiné úrovni, než výše popsaný projekt 6502asm. V 6502asm byl mikroprocesor simulován na úrovni strojových instrukcí (což programátorům v naprosté většině případů dostačuje a nemají potřebu zkoumat, co se děje ještě na nižší úrovni), a to ještě v některých ohledech nepřesně – týká se to především nepřesného časování instrukcí (dosažení přesného časování je v JavaScriptu problematické a vlastně i nepříliš praktické). Projekt Visual 6502 jde poněkud dále, protože se snaží o simulaci mikroprocesoru MOS 6502 až na úroveň jednotlivých tranzistorů a vodivých cest vytvořených na čipu – jedná se tedy o úroveň, na které pracovali sami návrháři tohoto čipu vedení Chuckem Peddlem (mimochodem, před vznikem MOS 6502 se Chuck Peddle podílel i na vývoji mikroprocesoru Motorola 6800).

Obrázek 10: Webová aplikace Visual 6502. Levá strana je vyhrazena pro zobrazení interních struktur čipu, pravá strana obsahuje výpis paměti, výpis obsahu pracovních registrů a další informace o stavu mikroprocesoru.

Základem pro tento projekt byl zvětšený snímek reálného mikroprocesoru, který byl následně vektorizován a poloautomaticky (ovšem s poměrně velkým podílem ruční práce) upraven do takové podoby, že se každá vodivá cesta či elektroda tranzistoru (MOS) převedla na polygon s jednoznačným identifikátorem. Celý vektorizovaný snímek CPU je uložen ve formátu SVG. Díky tomu, že data uložená ve formátu SVG se ve webovém prohlížeči ukládají do stromové struktury přístupné přes DOM (Document Object Model), lze velmi snadno s využitím JavaScriptu změnit například barvu vybraného polygonu. Podobná technika je použita právě v projektu Visual 6502, protože každé vykonané strojové instrukci odpovídá sekvence sepnutí tranzistorů na čipu a tím pádem i sekvence aktivních vodivých cest (to je reprezentováno změnou barvy příslušných polygonů). Při spuštění Visual 6502 lze sledovat, jak se jednotlivé bajty načítané z operační paměti (pravá část stránky) vykonávají jako sled zapínání a vypínání tranzistorů tvořících mikroprocesor.

Obrázek 11: Zvětšený pohled na část čipu MOS 6502.

Obrázek 12: I přes varování autorů aplikace Visual 6502 je možné tuto aplikaci spustit na počítači s 1 GB RAM (zde je zobrazen příkaz top pro počítač Asus EEE 1000 s běžícím Fluxboxem a prohlížečem Opera).

6. Mikrořadiče PIC a jejich simulátory

I přes jednoduchost mikroprocesoru 6502 může být jeho použití pro výuku vnímáno poněkud negativně, především z toho důvodu, že studenti nevidí možnost reálného uplatnění svých nově nabytých znalostí (a bezpochyby mají v tomto ohledu pravdu). Aby výuka nebyla vedena pouze na teoretické úrovni, používají se pro výuku assembleru a činnosti mikroprocesorů již poměrně dlouho různé jednodušší osmibitové mikrořadiče, jejichž předností je nízká cena (jak samotného mikrořadiče, tak i vývojového kitu), relativní jednoduchost mikrořadiče v porovnání s desktopovými mikroprocesory a v neposlední řadě také to, že mnohé osmibitové mikrořadiče se programují a stále budou programovat v assembleru (jazyku symbolických instrukcí) a nikoli ve vyšších programovacích jazycích – týká se to především zařízení s mikrořadiči, která jsou vyráběna ve velkém počtu kusů, protože zde se již výrazně projevuje rozdíl v ceně jednotlivých čipů i v jejich energetické spotřebě (z tohoto důvodu ostatně vznikla i nejméně výkonná řada PIC10 s kapacitou ROM 256 bajtů a kapacitou RAM pouhých 16 až 24 bajtů – zde již skutečně nemá smysl používat vyšší programovací jazyky).

Obrázek 13: Mezi jedny z nejpoužívanějších mikrořadičů PIC patří řada PIC16F87, která konstruktérům nabízí příznivý poměr mezi cenou a velikostí čipu na jedné straně a jeho relativně velkými možnostmi na straně druhé.

Právě osmibitové mikrořadiče PIC mohou být při výuce poměrně užitečné, a to přesto, že jejich instrukční sada není právě nejtypičtější. Týká se to například absence podmíněných skoků, které jsou nahrazeny podmíněnými instrukcemi typu SKIP. Osobně si myslím, že pro výuku lze s výhodou použít především mikrořadiče PIC z řady PIC16; například se může jednat o známý (a dnes již poněkud starší) čip PIC16F87. Předností řady PIC16 je dostatečně velká kapacita paměti RAM (řádově stovky bajtů), velká kapacita paměti programu (většinou čtyři kiloslova) a současně i jednoduchá (netypická) instrukční sada obsahující pouze 35 instrukcí. Pro tyto mikrořadiče existuje hned několik simulátorů různé kvality. Mezi tyto simulátory patří i open source aplikace nazvaná příznačně gpsim, která je díky poměrně přehlednému uživatelskému rozhraní použitelná i pro výuku. Tato aplikace umožňuje krokovat vytvořené programy, editovat obsah paměti dat, sledovat stav jednotlivých vstupně/výstupních pinů procesoru atd.

Obrázek 14: Pro vývoj aplikací určených pro osmibitové mikrořadiče PIC lze použít i mnoho open source nástrojů. Na tomto screenshotu jsou zobrazena některá okna nástroje gpsim (simulátoru mikrořadičů).

Užitečné odkazy:

  1. gpsim (Wikipedia)
    http://en.wiki­pedia.org/wiki/Gpsim
  2. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  3. Microchip Technology
    http://www.mi­crochip.com/
  4. Výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/ste­llent/idcplg?Id­cService=SS_GET_PA­GE&nodeId=2661
  5. Řada mikrořadičů PIC 10
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1009&mi­d=10&lang=en&pa­geId=74
  6. Řada mikrořadičů PIC 12
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1001&mi­d=10&lang=en&pa­geId=74
  7. Řada mikrořadičů PIC 14
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1008&mi­d=10&lang=en&pa­geId=74
  8. Řada mikrořadičů PIC 16
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1002&mi­d=10&lang=en&pa­geId=74
  9. Root.cz: Osmibitové mikrořadiče PIC (1)
    http://www.ro­ot.cz/clanky/os­mibitove-mikroradice-pic-1/
  10. Root.cz: Osmibitové mikrořadiče PIC (2)
    http://www.ro­ot.cz/clanky/os­mibitove-mikroradice-pic-2/
  11. Root.cz: Osmibitové mikrořadiče PIC (3)
    http://www.ro­ot.cz/clanky/os­mibitove-mikroradice-pic-3/

Obrázek 15: Hlavní okno simulátoru mikrořadičů PIC – aplikace gpsim.

7. Od simulátoru mikrořadiče k reálnému vývojovému kitu

Kromě používání „pouhého“ simulátoru mikrořadičů PIC je samozřejmě možné a většinou i vhodné používat při výuce reálné čipy. V současnosti je k dispozici poměrně velké množství různých vývojových kitů, díky nimž je možné si snadno vyzkoušet způsob programování mikrořadiče. Konstrukčně nejjednodušší jsou vývojové desky obsahující některý mikrořadič PIC a taktéž sériový port RS-232C, popř. rozhraní pro sběrnici USB. Mikrořadič umístěný na této desce většinou obsahuje ve své paměti ROM krátký zaváděcí program, který naváže komunikaci s PC, z něhož se přenese uživatelský program, který se následně spustí. Využívá se přitom jedné užitečné vlastnosti většiny současných mikrořadičů PIC – lze je totiž naprogramovat i při použití běžného napájecího napětí a to i ve chvíli, kdy jsou čipy zabudovány v nějakém zařízení (není je tedy nutné přenášet do programátoru).

Obrázek 16: Editor paměti programu v simulátoru gpsim.

Jednotlivé vývojové kity se od sebe odlišují především v nabídce zařízení, které jsou na nich umístěny. Může se jednat o několik tlačítek, LED, textový LCD, grafický LCD, některou průmyslovou sběrnici atd. Příkladem může být například kit nazvaný PICDEM 4, který obsahuje napěťový regulátor (pro bezpečné napájení), sériový port RS-232C, osmici LED, dvouřádkový LCD s šestnácti znaky na řádek, trojici tlačítek, čtyři potenciometry připojené na A/D převodníky a konektory určené pro připojení řízení elektrického motoru a dalších zařízení. Podobný vývojový kit je však možné relativně snadno sestavit i v domácích podmínkách na nepájivém kontaktním poli s využitím například starého zdroje pro mobilní telefony (s použitím napěťového regulátoru). S trochou štěstí je možné desku oživit i bez použití měřicích přístrojů :-) Většinou totiž není nutné připojovat všechny výše zmíněné zařízení, mnohdy postačuje jen port pro připojení desky k PC a několik LED a tlačítek.

Obrázek 17: Nástroj gpsim obsahuje i disassembler.

Užitečné odkazy:

  1. Root.cz: Vývojové nástroje pro osmibitové mikrořadiče PIC
    http://www.ro­ot.cz/clanky/vy­vojove-nastroje-pro-osmibitove-mikroradice-pic/
  2. Root.cz: Vývojové nástroje pro osmibitové mikrořadiče PIC (2)
    http://www.ro­ot.cz/clanky/vy­vojove-nastroje-pro-osmibitove-mikroradice-pic-2/

Obrázek 18: Vývojový kit Amicus s mikrořadičem PIC. Tento vývojový kit byl inspirován kitem Arduino určeným pro mikrořadiče Atmel AVR (inspirace jde tak daleko, že přídavné moduly pro Arduino a Amicus mohou být identické).

8. Vývojové kity pro mikrořadič Intel 8051 i pro jeho moderní klony

V praxi se kromě mikrořadičů PIC můžeme velmi často setkat i s čipy zpětně kompatibilními s osmibitovým mikrořadičem Intel 8051. Společnost Intel sice již tyto mikrořadiče nevyrábí, ovšem o další udržování „rodiny 51“ při životě se stará hned několik dalších firem, což vede jak k poměrně nízkým cenám těchto čipů, tak i k zavádění různých technologických novinek (zmenšení počtu cyklů pro jednotlivé instrukce, zvětšené kapacity pamětí, použití Flash pamětí namísto EPROM, zavedení USB řadiče atd. atd.). Pro mikrořadiče 8051 vzniklo poměrně velké množství různých vývojových kitů, které se od sebe liší jak svým vybavením (existence LCD či USB rozhraní), tak samozřejmě cenou. Jedním používaným vývojovým kitem je i tuzemský výrobek RD2 vybavený moderní rychlou variantou mikrořadiče 8051 s pamětí Flash, indikačními LED, tlačítkem RESET, konektorem typu DB-9 pro připojení kitu k osobnímu počítači s využitím sériového portu, desetipinovým konektorem pro připojení displeje z tekutých krystalů (LCD), dvacetipinovým konektorem, na nějž jsou vyvedeny dva volné porty mikrořadiče a konečně 40pinovým konektorem, na který jsou bez dalších úprav vyvedeny všechny vstupní či výstupní signály 8051. Jednou z předností takto pojatého vývojového kitu je jeho jednoduchá a tím pádem i poměrně levná konstrukce.

Obrázek 19: Tuzemský vývojový kit RD2.

Kromě vývojových kitů určených především pro vývoj programů, které se měly později využívat v různých specializovaných elektronických zařízeních, vzniklo i mnoho různých mikropočítačů (zkonstruovaných většinou amatéry), v nichž byl namísto univerzálního mikroprocesoru využit právě mikrořadič MCS-51 jako jejich ústřední řídicí prvek. Volba tohoto typu mikrořadiče pro amatérsky konstruované mikropočítače (které jsou však vhodné i pro výuku) je poměrně logická, když si uvědomíme, že tyto čipy bylo možné používat bez nutnosti přidávání většího množství podpůrných obvodů. V tom nejjednodušším případě postačovalo k mikrořadiči MCS-51 pouze připojit napájení a krystalový oscilátor, protože MCS-51 obsahoval jak paměť RAM i ROM/EPROM/EEPROM (i když s poměrně malou kapacitou), tak i čtveřici osmibitových paralelních portů, sériový port s konfigurovatelnou rychlostí přenosu i čtyřmi režimy činnosti, dvojici či trojici čítačů, dva vstupy pro připojení externích přerušovacích signálů atd.

Obrázek 20: Vývojový kit Intel SDK-51.

Složitější mikropočítače již mohou obsahovat externí paměť ROM i externí RAM, jednoduchou klávesnici a vhodný je též řadič textového či grafického displeje z tekutých krystalů (LCD). Často se používá například řadič HD44780, protože komunikační protokol použitý tímto řadičem je velmi jednoduchý. Tento řadič může sloužit pro ovládání dvouřádkových displejů se čtyřiceti znaky na řádek nebo čtyřřádkových displejů s dvaceti znaky na řádek, což je pro potřeby výuky dostačující (ostatně se na těchto displejích může zobrazit mnohem více informací, než na sedmisegmentovkách používaných v PMI-80). Jako klávesnici lze využít i starší klávesnici pro PC s konektorem DIN či PS/2, který lze po malé úpravě připojit přímo na port 8051. Předností je opět jednoduchý přenosový protokol, protože sama klávesnice je vybavena řadičem (založeným původně na čipu 8048, což je předchůdce čipu 8051) a posílá přímo kódy stlačených kláves.

Obrázek 21: Další varianta vývojového kitu Intel SDK-51.

9. Odkazy na Internetu

  1. CP1-Simulator
    http://source­forge.net/pro­jects/cp1-sim/
  2. Space invader 8080 emulator
    http://www.blu­ishcoder.co.nz/js8080/
  3. The Visual 6502
    http://visual6502­.org/JSSim/in­dex.html
  4. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  5. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  6. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  7. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  8. Little Man Computer (JavaScript Emulator)
    http://matt.kru­tar.org/LMC4/
  9. Little Man Computer (emulátor pro Android)
    http://android­.pdassi.de/124580/L­MC_Emulator.html
  10. Little man computer (Wikipedia)
    http://en.wiki­pedia.org/wiki/Lit­tle_Man_Compu­ter
  11. The „Little Man“ Computer
    http://elearnin­g.algonquinco­llege.com/cou­rsemat/dat2343/­lectures.f03/12-LMC.htm
  12. LC-3 (Wikipedia)
    http://en.wiki­pedia.org/wiki/LC-3
  13. Papírový počítač CGS – Root.cz
    http://www.ro­ot.cz/clanky/pa­pirovy-pocitac-cgs/
  14. Computer Game System
    http://mmm.web­z.cz/pocitadla/cgs­.html
  15. CARDIAC paper computer emulator
    http://boingbo­ing.net/2009/06­/03/cardiac-paper-comput-1.html
  16. CARDboard Illustrative Aid to Computation (Wikipedia)
    http://en.wiki­pedia.org/wiki/CAR­Dboard_Illustra­tive_Aid_to_Com­putation
  17. cinc – CARDIAC computer naprogramovaný v Javě
    http://source­forge.net/pro­jects/cinc/
  18. cardiac
    http://www.por­ticus.org/bell/be­lllabs_kits_car­diac.html
  19. CARDIAC computer – recreation
    http://www.ky­lem.net/pages/pro­jects/cardiac­.html
  20. Arduino home page
    http://www.ar­duino.cc/
  21. Arduino: vývojový kit pro hrátky s hardware (Root.cz)
    http://www.ro­ot.cz/clanky/ar­duino-vyvojovy-kit-pro-hratky-s-hardware/
  22. Intro to the Arduino – Weekend Project PDFcast
    http://blog.ma­kezine.com/ar­chive/2007/09/in­tro-to-the-arduino-week.html
  23. Arduino Diecimila: Začněte s mikroprocesory
    http://www.techdot­.eu/index.php/2008/01­/19/arduino-diecimila-zacnete-s-mikroprocesory/
  24. Arduino (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Ar­duino
  25. Arduino (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Ar­duino
  26. Amicus home page
    http://www.my­amicus.co.uk/
  27. 6502asm.com (emulátor 6502)
    http://6502as­m.com/
  28. Panther – home page
    http://panther­programming.we­ebly.com/
  29. Panther – downloads
    http://panther­programming.we­ebly.com/downlo­ad-panther.html
  30. Panther (Scratch Modification) – wiki
    http://wiki.scrat­ch.mit.edu/wi­ki/Panther_(Scrat­ch_Modificati­on)
  31. Scratch Programming Wiki – Panther
    http://scratch­.wikia.com/wi­ki/Panther
  32. Scratch: oficiální stránka projektu
    http://scratch­.mit.edu/
  33. Scratch: galerie projektů vytvořených ve Scratchi
    http://scratch­.mit.edu/galle­ries/browse/ne­west
  34. Scratch: nápověda
    file:///usr/sha­re/scratch/Hel­p/en/index.html
  35. Scratch: obrazovky nápovědy
    file:///usr/sha­re/scratch/Hel­p/en/allscreen­s.html
  36. Scratch (Wikipedie CZ)
    http://cs.wiki­pedia.org/wiki/Scrat­ch
  37. Scratch (programming language)
    http://en.wiki­pedia.org/wiki/Scrat­ch_(programmin­g_language)
  38. Mitchel Resnick (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Mit­chel_Resnick
  39. Domácí stránka Mitchela Resnicka
    http://web.me­dia.mit.edu/~mres/
  40. BASIC-256 – BASIC256 – An easy to use BASIC language and IDE
    http://www.ba­sic256.org/
  41. PythonTurtle
    http://python­turtle.org/
  42. Turtle graphics for Tk
    http://docs.pyt­hon.org/libra­ry/turtle.html
  43. Scratch Lowers Resistance to Programming
    http://www.wi­red.com/gadge­tlab/2009/03/scrat­ch-lowers/
  44. Stopařův průvodce jedním převážně neškodným programovacím jazykem
    http://www.squ­eak.cz/
  45. CamelCase
    http://en.wiki­pedia.org/wiki/Ca­mel_case
  46. Smalltalk tutorial chapter 5 – Variables
    http://www.tu­torials4u.com/sma­lltalk/smalltalk-tutorial-05.htm
  47. History around Pascal Casing and Camel Casing
    http://blogs.msdn­.com/b/brada/ar­chive/2004/02/0­3/67024.aspx
  48. Xerox Alto
    http://en.wiki­pedia.org/wiki/Xe­rox_Alto
  49. WIMP (computing)
    http://en.wiki­pedia.org/wiki/WIM­P_(computing)
  50. Graphical user interface
    http://en.wiki­pedia.org/wiki/GUI
  51. Xerox Star
    http://en.wiki­pedia.org/wiki/Xe­rox_Star
  52. The Xerox Star 8010 „Dandelion“
    http://www.di­gibarn.com/co­llections/sys­tems/xerox-8010/index.html
  53. Fibonacci number
    http://en.wiki­pedia.org/wiki/Fi­bonacci_number
  54. Squeak home page
    http://www.squ­eak.org/
  55. XO: The Children's Machine
    http://wiki.lap­top.org/go/The_Chil­dren's_Machine
  56. Squeak na Wikipedii EN
    http://en.wiki­pedia.org/wiki/Squ­eak
  57. Squeak na Wikipedii CZ
    http://cs.wiki­pedia.org/wiki/Squ­eak
  58. Squeak by Example
    http://squeak­byexample.org/
  59. Squeak Land
    http://www.squ­eakland.org/
  60. SqueakNotes
    http://squeak­.zwiki.org/Squ­eakNotes
  61. Squeak FAQ
    http://wiki.squ­eak.org/squeak/471
  62. Learning Squeak
    http://c2.com/cgi/wi­ki?LearningSqu­eak
  63. Lazarus (Software)
    http://en.wiki­pedia.org/wiki/La­zarus_%28softwa­re%29
  64. FreePascal
    http://www.fre­epascal.org/
  65. „Why I Love Python“ slides
    http://www.min­dviewinc.com/dow­nloads/pub/ec­kel/LovePython­.zip
  66. „Why I love Python“ (presentation)
    http://www.sli­deshare.net/di­dip/why-i-love-python
  67. První jazyk: Python
    http://macek.san­dbox.cz/texty/prvni-jazyk-python/
  68. Programovací jazyk Python
    http://www.py­.cz/FrontPage
  69. Python – Wikipedia CS
    http://cs.wiki­pedia.org/wiki/Pyt­hon
  70. IPython
    http://en.wiki­pedia.org/wiki/I­python
  71. IPython: an interactive computing environment
    http://ipython­.scipy.org/mo­in/
  72. Category:Python
    http://rosetta­code.org/wiki/Ca­tegory:Python
  73. Educational programming language
    http://en.wiki­pedia.org/wiki/E­ducational_pro­gramming_langu­age
  74. Seriál Letní škola programovacího jazyka Logo
    http://www.ro­ot.cz/serialy/let­ni-skola-programovaciho-jazyka-logo/
  75. Logo Tree Project:
    http://www.eli­ca.net/downlo­ad/papers/Logo­TreeProject.pdf
  76. Language Poster (O'Reilly):
    http://www.ore­illy.com/news/grap­hics/prog_lan­g_poster.pdf
  77. Informace o Comenius Logu:
    http://www.com­logo.input.sk/in­dex.html
  78. Stránka nabízející stažení Comenius Loga:
    http://www.com­logo.input.sk/nas­tiahnutie.html
  79. Seminární práce o Comenius Logu:
    http://nwit.ped­f.cuni.cz/rotal9ap/lo­go/
  80. Informace o LEGO/Logu:
    http://educati­on.otago.ac.nz/nzlnet/L­ogo/legologo.html
  81. Informace o systému Elica:
    http://www.eli­ca.net/site/in­dex.html
  82. Informace o systému NetLogo:
    http://ccl.nor­thwestern.edu/ne­tlogo/
  83. Stažení NetLoga:
    http://ccl.nor­thwestern.edu/ne­tlogo/download­.shtml
  84. Uživatelský manuál NetLoga ve formátu PDF:
    http://ccl.nor­thwestern.edu/ne­tlogo/docs/Net­Logo%20User%20Ma­nual.pdf
  85. NetLogo FAQ:
    http://ccl.nor­thwestern.edu/ne­tlogo/docs/faq­.html
  86. Domácí stránka Daniela Azumy (autora implementace Turtle Tracks):
    http://alumnus­.caltech.edu/~da­zuma/home/
  87. Informace o aUCBLogu:
    http://www.phy­sik.uni-augsburg.de/~miche­ler/
  88. Domácí stránka MSW Loga:
    http://www.sof­tronix.com/lo­go.html
  89. Karel online
    http://karel.ol­dium.net/
  90. EDU-SIG: Python in Education
    http://www.pyt­hon.org/commu­nity/sigs/curren­t/edu-sig/
  91. Guido van Robot
    http://en.wiki­pedia.org/wiki/Gu­ido_van_Robot
  92. The Guido van Robot Programming Language
    http://gvr.sou­rceforge.net/
  93. An Introduction to Programming with Karel J. Robot
    http://blog.thin­goid.com/2003/10­/karel-intro/
  94. Teaching a young robot new tricks
    http://blog.thin­goid.com/2003/11­/karel-new-tricks/
  95. Karel and Company – More Robots
    http://blog.thin­goid.com/2003/12­/karel-and-company/
  96. Karel heads for the stars
    http://blog.thin­goid.com/2004/03­/karel-star/
  97. Karel programming language documentation
    http://mormegil­.wz.cz/prog/ka­rel/prog_doc.htm
  98. Karel J. Robot
    http://www.ma­inlandregional­.net/dklipp/Ho­nors%20Computer%20Sci­ence%20Java.htm
  99. Karel (programming language)
    http://en.wiki­pedia.org/wiki/Ka­rel_(programmin­g_language)
  100. Richard E. Pattis
    http://en.wiki­pedia.org/wiki/Richar­d_E._Pattis
  101. XKarel home page
    http://xkarel­.sourceforge.net/en­g/
  102. XKarel – screenshoty oken
    http://xkarel­.sourceforge.net/en­g/program.php#Ok­na
  103. Greenfoot
    http://www.gre­enfoot.org/abou­t/whatis.html
  104. Computer programming – Educational programming languages
    http://www.kid­slike.info/com­puter_program­ming_educatio­nal_programmin­g_languages
  105. Making Great Programmers: Why BASIC is Still Relevant
    http://kidbasic­.sourceforge.net/en/why­.html
  106. Gambas Wiki
    http://en.wiki­books.org/wiki/Gam­bas
  107. Free tool offers ‚easy‘ coding
    http://news.bbc­.co.uk/2/hi/tec­hnology/6647011­.stm
  108. Základy želví grafiky
    http://www.ro­ot.cz/clanky/za­klady-zelvi-grafiky/
  109. Bill Kendrick's Web Turtle
    http://www.so­nic.net/~nbs/web­turtle/
Našli jste v článku chybu?
Root.cz: Quake slaví 20 let novou epizodou zdarma

Quake slaví 20 let novou epizodou zdarma

DigiZone.cz: Mobilní aplikace pro DVTV je tady

Mobilní aplikace pro DVTV je tady

Měšec.cz: Cestujte bez starostí, získejte výhodné pojištění

Cestujte bez starostí, získejte výhodné pojištění

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Vitalia.cz: Unikátní fotografie: Sládek sbírá pivní pěny

Unikátní fotografie: Sládek sbírá pivní pěny

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

DigiZone.cz: ČT veze bronz z klání televizní grafiky

ČT veze bronz z klání televizní grafiky

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Root.cz: Špína v počítačích: mrtvé myši, prach a pavouci

Špína v počítačích: mrtvé myši, prach a pavouci

Lupa.cz: eIDAS je tu. O co přijdeme u elektronických podpisů?

eIDAS je tu. O co přijdeme u elektronických podpisů?

Vitalia.cz: Další Míša má Klasu

Další Míša má Klasu

Vitalia.cz: Ministři se přou o využívání antibiotik

Ministři se přou o využívání antibiotik

DigiZone.cz: Krajské televize na okraji zájmu?

Krajské televize na okraji zájmu?

DigiZone.cz: Skylink zapojil nový transpondér

Skylink zapojil nový transpondér

DigiZone.cz: ČTÚ květen: rušení TV vysílání narůstá

ČTÚ květen: rušení TV vysílání narůstá

Lupa.cz: Jaké IoT tarify nabízejí mobilní operátoři?

Jaké IoT tarify nabízejí mobilní operátoři?

Vitalia.cz: 5 porcí ovoce a zeleniny: no ale jak na to?

5 porcí ovoce a zeleniny: no ale jak na to?

Lupa.cz: Na základně u Dobříše se rozjel 3D tisk z kovu

Na základně u Dobříše se rozjel 3D tisk z kovu