Osmibitové mikroprocesory a mikrořadiče firmy Motorola (3)

23. 11. 2010
Doba čtení: 18 minut

Sdílet

V dnešní části seriálu o architekturách počítačů budeme pokračovat v popisu osmibitových mikroprocesorů a mikrořadičů firmy Motorola. Minule jsme se seznámili s mikrořadiči 68HC05 a 68HC08, dnes si povíme základní informace o snad nejznámějším mikrořadiči této firmy – o čipu 68HC11 a mnohých jeho variantách.

Obsah

1. Krátká rekapitulace – osmibitové mikroprocesory a mikrořadiče firmy Motorola

2. Osmibitový mikrořadič 68HC11

3. Programátorský model mikrořadiče 68HC11

4. Registr příznaků CCR

5. Adresní režimy mikrořadiče 68HC11

6. Instrukční sada mikrořadičů 68HC11

7. Mapa paměti mikrořadičů 68HC11

8. Čítače a časovače mikrořadičů 68HC11

9. Odkazy na Internetu

1. Krátká rekapitulace – osmibitové mikroprocesory a mikrořadiče firmy Motorola

V předcházejících dvou částech seriálu o architekturách počítačů jsme se seznámili s osmibitovými mikroprocesory a mikrořadiči firmy Motorola, především s vůbec prvním mikroprocesorem, který tato firma již v roce 1974 navrhla a posléze začala vyrábět. Jednalo se o čip nesoucí jméno MC6800. Taktéž jsme si popsali mikroprocesor MC6809, který v mnoha ohledech znamenal završení mnohaletého vývoje osmibitových mikroprocesorů, a to nejenom u společnosti Motorola (později Freescale Semiconductor, což byla divize firmy Motorola, která se od mateřské společnosti oddělila v roce 2004), ale i u dalších významných výrobců těchto čipů – jedná se (popř. se jednalo) především o společnosti Intel Corporation, CSG (MOS Technology), Zilog, NEC, Toshiba, Hitachi, STMicroelectro­nics (která pohltila známý Inmos), Infeon Technologies AG a mnohé další firmy.

                                                                                                                                               Obrázek 1: Osmibitový mikroprocesor Motorola MC6800.

Ovšem samotné jádro mikroprocesoru MC6800, přesněji řečeno především jeho aritmeticko-logická jednotka (ALU), pracovní registry i řadič, bylo po nezbytných úpravách a vylepšeních použito i u osmibitových mikrořadičů, tj. čipů, které kromě vlastního mikroprocesoru obsahují i paměti typu RAM i ROM (popř. EPROM či Flash) a většinou i další moduly využitelné v elektronických zařízeních – čítače a časovače, PWM (modul pro pulsní šířkovou modulaci), analogově-digitální převodníky, pulsní akumulátory, sériové a paralelní porty aj. Prvním pokusem společnosti Motorola o konstrukci mikrořadiče byl čip MC6802 z roku 1977, který obsahoval kromě vlastního řadiče a aritmeticko-logické jednotky i 128 bajtů paměti RAM, interní oscilátor (nemusel se tedy připojovat externí zdroj hodinových signálů, ale pouze 4 MHz krystal) a spolu s čipem MC6846 (2kB paměti ROM, osmibitový obousměrný port a časovač) bylo možné zrealizovat jednoduchý dvoučipový mikropočítač.

Obrázek 2: Interní struktura mikrořadičů 68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

O několik let později následoval čip MC6801 (číslování mikroprocesorů a mikrořadičů je pravda poněkud neobvyklé), který měl taktéž 128 bajtů paměti RAM, navíc však na tomto čipu byla přítomna i paměť ROM s kapacitou dvou kilobajtů, šestnáctibitový časovač, sériový port a 31 programova­telných vstupně-výstupních linek. Ovšem skutečný úspěch firma Motorola zaznamenala až tehdy, když původní mikrořadič MC6801 výrazně zjednodušila a zlevnila. Nový čip nabízený pod jménem 68HC05, který měl 176 bajtů RAM, 5936 bajtů ROM a 256 bajtů EPROM, již byl plnohodnotným osmibitovým mikrořadičem, který našel své uplatnění v mnoha elektronických výrobcích. Následoval taktéž poměrně úspěšný čip 68HC08 popsaný v minulé části seriálu a především osmibitový mikrořadič 68HC11 (známý především díky množství konfigurovatelných šestnáctibitových čítačů/časovačů a sériovému rozhraní SPI a SCI), o němž se dozvíte více informací v následujících kapitolách.

Obrázek 3: Zapojení pinů osmibitového mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

2. Osmibitový mikrořadič 68HC11

Mikrořadiče řady 68HC11 se vyráběly (a jako licencovaná mikrořadičová jádra dodnes vyrábí) v mnoha variantách; od poměrně jednoduchých čipů, které dokázaly svojí funkcí i cenou nahradit o generaci starší mikrořadiče 68HC05 a 68HC08, popř. konkurenční výrobky řady MCS-48 a MCS-51, až po velké a výkonné čipy s mnoha kilobajty paměti, více než šedesáti piny a pěticí osmibitových paralelních portů, jejichž funkce je konfigurovatelná. Tyto mikrořadiče jsou používány v mnoha elektronických zařízeních, včetně armádních výrobků či telekomunikačních družic (zde se samozřejmě jedná o dražší varianty schopné bezchybné práce ve vyšším teplotním rozsahu a se zvýšenou odolností vůči elektromagnetickému záření). O to je zajímavější, že v ČR se jedná spíše o méně známé typy mikrořadičů, což pravděpodobně souvisí s tím, že se v našich zemích z historických důvodů spíše preferují (nebo alespoň preferovaly) čipy kompatibilní s výrobky firmy Intel. V minulosti totiž vyráběla společnost Tesla například osmibitový mikroprocesor MHB8080 či osmibitové mikrořadiče 8048 a 8035. Dovoz jiných typů čipů byl minimálně složitý (a mnohdy též na hranici zákona :-).

Obrázek 4: Interní struktura mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

Mikrořadič 68HC11 je sice interně, podobně jako jeho předchůdci, postaven na osmibitovém jádru (aritmeticko-logická jednotka + řadič zpracovávající instrukce s osmibitovými operačními kódy), ovšem z programátorského hlediska se jedná o čip umožňující provádění některých výpočtů i adresování se šestnáctibitovými operandy. Z tohoto hlediska se jedná o přechod mezi osmibitovým a 16bitovým mikrořadičem, což může být výhodné, protože programátor není (například při adresování) omezován nutností používat osmibitové adresy či osmibitové indexové registry, ale celková cena čipu (a taktéž jeho příkon!) je díky převážně osmibitové aritmeticko-logické jednotce stále velmi příznivá, v čemž lze spatřovat jeden z důvodů, proč se osmibitové mikrořadiče stále používají.

Obrázek 5: Mikrořadič 68HC11 řady E v 64pinovém pouzdru typu QFP.

V následující tabulce, kterou si možná někteří čtenáři pamatují z předminulé části tohoto seriálu, jsou vypsána jména a bitové šířky registrů, s kterými mohou programátoři pracovat na vybraných typech osmibitových mikroprocesorů a mikrořadičů firmy Motorola (a pro úplnost na mikroprocesoru MOS 6502, který částečně z MC6800 vychází):

Čip Typ Akumulátor(y) D=A+B (16b) Index registr(y) Čítač instrukcí Zásobníkové registry Spec. registry
MC6800 CPU A (8b), B (8b) ne X (16b) PC (16b) SP (16b) CCR (6b)
MC6809 CPU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) S (16b), U (16b) CCR (8b), DP (8b)
68HC05 MCU A (8b) ne X (8b) PC (13b) SP (16b) CCR (5b)
68HC08 MCU A (8b) ne H:X (16b) PC (16b) SP (16b) CCR (6b)
68HC11 MCU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) SP (16b) CCR (8b)
MOS 6502 CPU A (8b) ne X (8b), Y (8b) PC (16b) S (8b) P (7b)

Obrázek 6: Mikrořadič 68HC11 řady E v 48pinovém pouzdru typu DIP.

3. Programátorský model mikrořadiče 68HC11

Nejprve si popišme osmibitový mikrořadič 68HC11 z hlediska vývojáře, kterého zajímá v první řadě seznam a možnosti pracovních registrů, instrukční sada mikrořadiče a taktéž mapa paměti, tj. způsob, jakým je do šestnáctibitového adresního rozsahu mikroprocesoru mapována paměť typu ROM, RAM i řídicí registry. Z tabulky zobrazené v předchozí kapitole můžeme vyčíst, že programátoři vytvářející programy pro mikrořadič 68HC11 mohou používat dvojici osmibitových pracovních registrů A a B, které se však u některých instrukcí spojují do jediného šestnáctibitového registru nazvaného D (double accumulator). Kromě těchto registrů, které jsou převážně používány jako operandy aritmetických, logických a bitových instrukcí, je možné využít i indexové registry IX a IY (někdy jsou tyto registry pojmenované pouze X a Y), jež se používají především při adresování operandů ležících v paměti, popř. jako čítače programových smyček.

Obrázek 7: Programátorský model mikrořadiče 68HC11 – sada pracovních registrů využitelných vývojářem.

V množině registrů použitelných vývojáři samozřejmě najdeme i šestnáctibitový programový čítač PC (program counter), taktéž šestnáctibitový ukazatel na vrchol zásobníku SP (stack pointer) a osmibitový registr CCR (condition codes register), který v sobě sdružuje osmici jednobitových příznaků vyžívaných například při konstrukci podmínek (což je obvykle nějaký test následovaný podmíněným skokem). Na tomto místě možná stojí za připomenutí, že mikrořadič 68HC11 je založen na původním osmibitovém mikroprocesoru MC6800 a od něj odvozených mikrořadičů 68HC05 a 68HC08; nikoli tedy, jak by se možná dalo při pohledu na tabulku uvedenou v předchozí kapitole předpokládat, na mikroprocesoru MC6809. To je trošku škoda, protože mikroprocesor MC6809 byl kvůli své téměř ortogonální instrukční sadě, existenci rozmanitých adresních režimů i přítomnosti druhého ukazatele na vrchol zásobníku U z programátor­ského hlediska mnohem flexibilnějším či­pem.

Obrázek 8: Jeden ze způsobů realizace externí datové a adresové sběrnice.

4. Registr příznaků CCR

Taktéž registr příznaků mikrořadiče 68HC11 byl oproti předchozím mikrořadičům rozšířen o dva nové příznaky Stop Disable a X-Interrupt Mask. Všechny příznaky dostupné vývojářům v registru CCR jsou vypsány v následující tabulce:

Bit# Označení příznaku Jméno příznaku Význam
7 S Stop Disable zákaz funkce instrukce STOP, která se při nastavení tohoto bitu chová jako instrukce NOP (no operation)
6 X X-Interrupt Mask povolení či zákaz přerušení, které je generováno signálem přivedeným na pin XIRQ. Tento bit lze programově pouze vynulovat, nikoli nastavit.
5 H Half-Carry Flag nastavený při přenosu ze třetího do čtvrtého bitu; tento příznak je použit při BCD aritmetice
4 I Interrupt Mask příznak, pomocí něhož lze povolit či naopak zakázat maskovatelné přerušení (IRQ)
3 N Negative Flag tento příznak je nastaven, pokud poslední aritmetická či logická operace vygenerovala záporný výsledek, tj. bajt s nejvyšším bitem rovným jedničce (0×80 až 0×FF)
2 Z Zero Flag tento příznak se nastaví, pokud poslední aritmetická či logická operace vygenerovala osmibitovou hodnotu 0×00, spolu s předchozím příznakem lze zjišťovat relace typu: <0 ≤0 =0 ≥0 >0 ≠0
1 V Overflow Flag tento příznak je nastavený při přenosu ze šestého do sedmého bitu, což v případě znaménkové aritmetiky značí přetečení hodnoty čísla do bitu vyhrazeného pro znaménko
0 C Carry Flag přetečení ze sedmého do (neexistujícího) osmého bitu při mnoha operacích (rotace, aritmetické operace); tento příznak je taktéž nastavovaný nebo nulovaný při bitových operacích

5. Adresní režimy mikrořadiče 68HC11

Osmibitový mikrořadič 68HC11 podporuje ve své instrukční sadě celkem šest adresních režimů. Nejjednodušší je „bezprostřední“ adresování (immediate addressing mode), při němž je osmibitová nebo šestnáctibitová hodnota přímo součástí operačního kódu instrukce. Tyto instrukce mají podle své funkce délku dva až čtyři bajty (čtyři bajty pouze v případě použití prefixu a současně i šestnáctibitové konstanty) a doba jejich trvání je určena tím, zda se používá osmibitová nebo šestnáctibitová konstanta. Dalším typem adresování je přímé adresování (direct addressing mode), umožňující přístup do prvních 256 bajtů paměti – tedy do takzvané nulté stránky. Instrukce používající toto adresování jsou o jeden bajt kratší a o jeden strojový cyklus rychlejší než obdobné instrukce s adresováním rozšířeným (popsaným v dalším odstavci). Z tohoto důvodu je operační paměť RAM umístěna v adresním prostoru 0×000–0×ffff od adresy 0×0000, aby se při práci s operandy umístěnými v operační paměti daly použít kratší a současně i rychlejší instrukce používající pouze osmibitové adresování.

Obrázek 9: Instrukční sada mikrořadiče 68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Rozšířené adresování (extended addressing mode) je velmi podobné předchozímu způsobu adresování, ovšem operační kód instrukce obsahuje oba bajty adresy, tj. lze vybrat jakoukoli paměťovou buňku nebo speciální funkční registr v rozsahu adres 0 až 65535, ovšem za cenu prodloužení doby instrukce o jeden cyklus. Další adresování (indexed addresing mode) využívá jednoho z indexových registrů IX či IY, k nimž je připočten osmibitový offset. I přes zdánlivou jednoduchost se toto adresování používá velmi často, a to zejména v kódu generovaném překladači vyšších programovacích jazyků (jeden z registrů může například sloužit jako ukazatel na rámec zásobníku při volání funkcí). Následuje relativní adresování (relative addressing) s osmibitovým offsetem pro instrukce podmíněného skoku a konečně typ adresování, kdy je operand (A, B, D, IX či IY) přímo součástí instrukčního kódu (inherent).

Obrázek 10: Instrukční sada mikrořadiče 68HC08.
(Zdroj: Technical Data – MC68HC08AB16A, Freescale Semiconductor)

6. Instrukční sada mikrořadičů 68HC11

V předchozích dvou částech seriálu o architekturách počítačů jsme si popsali instrukční sadu osmibitového mikroprocesoru MC6800 i z něho odvozených mikrořadičů 68HC05 a 68HC08. Instrukční sada mikrořadiče 68HC05 byla i kvůli absenci druhého akumulátoru B a současného zmenšení šířky (jediného) indexového registru X poměrně jednoduchá. Instrukce byly podle své funkce rozděleny do pěti skupin: bitové operace s prvními 256 bajty paměti, relativní (podmíněné) skoky, operace s jedním operandem, operace s dvojicí operandů a řídicí instrukce. U mikrořadiče 68HC08 již můžeme najít větší množství instrukcí, které souvisí především s rozšířením původně osmibitového indexového registru X na šestnáctibitový registr H:X, který se u několika instrukcí dělí na horní bajt H a spodní bajt X. Taktéž došlo k rozšíření adresních režimů o možnost použití ukazatele na vrchol zásobníku SP s osmibitovým či šestnáctibitovým offsetem, což je důležité především při překladu programů z vyšších programovacích jazyků využívajících zásobníkový rámec (stack frame).

Obrázek 11: Jeden z vývojových kitů pro mikrořadiče 68HC11.

V instrukční sadě mikrořadiče 68HC11 můžeme nalézt mnoho změn, které souvisí především s tím, že se namísto jediného osmibitového akumulátoru A může použít i další akumulátor B. Oba akumulátory navíc mohou u některých instrukcí pracovat jako šestnáctibitový akumulátor D. Aby změn nebylo málo, používá se namísto jediného osmibitového indexového registru dvojice šestnáctibitových registrů IX a IY. Obě tyto skutečnosti měly velký vliv na instrukční sadu, a to zejména proto, že počet všech operačních kódů překročil hodnotu 256, což znamená, že některé instrukce před sebou musely mít prefix (to ostatně není žádná novinka, prefix musel být použitý i u mikrořadiče 68HC08 – na desátém obrázku se stačí podívat na skupiny SP1 a SP2 s prefixem 0×9E). Existence prefixu nejenom zvětšuje některé instrukce o jeden bajt, ale taktéž prodlužuje délku jejich trvání o jeden takt, protože řadič načítá jednotlivé kódy instrukcí po jednotlivých bajtech.

Obrázek 12: Plošný spoj dalšího typu vývojového kitu pro mikrořadiče 68HC11.

U mikrořadiče 68HC11 je prefix použit zejména při adresování pomocí registru IY – v tomto případě je (většinou) použit stejný operační kód, jako při adresování registrem IX, ovšem před vlastní instrukcí je prefixový bajt s hodnotou 0×18, popř.0×CD nebo ×0×1A. Poslední zmíněný prefix 0×1A je použit i u některých operací s „dvojitým“ akumulátorem D. Z instrukcí, které u předchozí dvojice mikrořadičů neexistovaly, můžeme jmenovat například součet obou akumulátorů ABA, posun 16bitového akumulátoru (ASLD, LSLD), bitové operace s libovolným bitem v paměti (BCLR, BSET, BRCLR a BRSET), instrukce pro šestnáctibitovou aritmetiku s akumulátorem D či oběma indexovými registry (CPD, CPX, DEX, SUBD) či 8/16bitové násobení a dělení (FDIV, IDIV, MUL). Mimochodem – právě šestnáctibitová aritmetika je velmi intenzivně používána v kódu generovaném překladačem GCC pro mikrořadiče 68HC11/68HC12.

Obrázek 13: Vývojový kit pro mikrořadiče 68HC11 do třetice.

7. Mapa paměti mikrořadičů 68HC11

Firma Motorola při návrhu svých osmibitových mikrořadičů 68HC11 zachovala jednu vlastnost, která je pro mikrořadiče poměrně netypická – vytvořila čip s von Neumannovou architekturou, v níž jsou všechny typy pamětí (RAM, ROM, EPROM, později i Flash) a současně i speciální funkční registry mapovány do jediného adresního prostoru o rozsahu 64 kB. Toto řešení s sebou přináší přednosti ale i zápory. Mezi nevýhody patří především to, že přístup do RAM a ROM není možné provádět souběžně, tj. tak, jak je tomu u některých jiných typů mikrořadičů (a taktéž u DSP). Ovšem pro programátory je existence jediného společného prostoru adres výhodná, protože mohou používat jednodušší instrukční soubor s plnohodnotnými šestnáctibitovými indexovými registry (naproti tomu viz například rozdíly mezi instrukcemi MOV A,@R0, MOVX A,@R0 a MOVX A,@DPTR existujícími u mikrořadičů řady MCS-51). Jednotný adresní prostor taktéž zjednodušuje programování, například tvorbu samomodifikujících se kódů.

Obrázek 14: Jedna z variant mapy paměti mikrořadiče 68HC11.

Konkrétní mapa paměti se u jednotlivých čipů řady 68HC11 odlišuje, což je pochopitelné, protože každý čip může mít odlišné kapacity pamětí ROM, RAM a EPROM a taktéž se může měnit počet speciálních funkčních registrů (ne všechny čipy řady 68HC11 například obsahují všech pět paralelních portů). V následující tabulce je vypsána mapa paměti mikrořadiče 68HC811E2FN, který má „pouze“ 256 bajtů paměti RAM a 2048 bajtů paměti EPROM (paměť lze samozřejmě rozšířit vytvořením externí datové a adresové sběrnice s připojenými paměťovými čipy). Posledních několik bajtů adresního rozsahu (konkrétně 0×FFC0 až 0×FFFF) je rezervováno pro přerušovací vektory – jsou zde tedy uloženy šestnáctibitové cíle skoků, které jsou provedeny při příchodu některého z přerušení. Přerušení může generovat například některý z čítačů/časovačů, sériový port SCI nebo SPI, pulsní akumulátor, watchog, externí přerušovací signál IRQ/XIRQ nebo též systémový RESET (právě tento vektor je totiž použit při startu mikrořadiče):

Od (hex) Do (hex) Význam
0000 00ff paměť RAM na čipu
0100 0fff nevyužito
1000 103f speciální funkční registry
1040 f7ff nevyužito
f800 ffbf paměť EPROM na čipu
ffc0 ffd5 vyhrazeno pro budoucí vektory přerušení
ffd6 ffd7 vektor přerušení při komunikaci pomocí SCI
ffd8 ffd9 vektor přerušení při komunikaci pomocí SPI
další vektory přerušení (časovače apod.)
fffe ffff vektor pro skok při resetu mikrořadiče

Obrázek 15: Schéma jednoduchého robota řízeného osmibitovým mikrořadičem 68HC11.

8. Čítače a časovače mikrořadičů 68HC11

Osmibitové mikrořadiče 68HC11 jsou vybaveny poměrně velkým množstvím různých modulů, které si podrobněji popíšeme v následující části tohoto seriálu. Jedná se především o čítače/časovače, jež jsou nedílnou součástí prakticky všech mikrořadičů, protože přesné načasování nějakých událostí (ovládání různých externích zařízení) či naopak zjištění, kdy k nějaké externí události došlo, se provádí v praxi velmi často. Z těchto důvodů se můžeme u mikrořadičů 68HC11 setkat až s pěti na sobě nezávislými šestnáctibito­vými(!) čítači/časovači, které mohou pracovat v několika volitelných režimech a s frekvencí odvozenou děličem od hodinového signálu (navíc může každý čítač/časovač generovat při různých podmínkách vlastní přerušení). Z doposud popsaných mikrořadičů jsou možnosti 68HC11 v tomto ohledu největší, na druhou stranu je nastavení čítačů také poměrně komplikované, na rozdíl například od velmi jednoduchých typů čítačů/časovačů použitých v mikrořadiči MCS-48. Některé možnosti čítačů/časovačů si stručně popíšeme v následujícím odstavci.

Obrázek 16: Robot řízený osmibitovým mikrořadičem 68HC11, který je sestavený z Lega.

ict ve školství 24

Pokud je zapotřebí získat čas, kdy nastane nějaká externí událost, může vybraný čítač/časovač pracovat v režimu input capture, kdy se do příslušného funkčního registru zapíše čas (hodnota počitadla časovače) kdy k dané události došlo. Externí událostí je zde myšlen přechod logického signálu přivedeného na pin mikrořadiče. V závislosti na konfiguraci se může jednat o detekci sestupné hrany, vzestupné hrany nebo o detekci jakéhokoli typu hrany. Opačnou funkci bude mít vybraný čítač/časovač při volbě režimu output compare. V tomto režimu se čeká až do chvíle, kdy počitadlo časovače dosáhne určené hodnoty a posléze se nastaví pin příslušející k časovači na logickou hodnotu 0 nebo 1, popř. se stav tohoto pinu zneguje. Tímto způsobem lze velmi snadno implementovat například monostabilní nebo bistabilní klopný obvod, popř. programově řízenou PWM (změnou testované hodnoty čítače se mění délka pulsů resp. střída). S detekcí externí události souvisí i funkce pulsního akumulátoru, který dokáže čítat externí pulsy popř. pulsy generované prvním čítačem. Po příchodu každé hrany a/nebo při přetečení pulsního akumulátoru může být generováno přerušení. Další možnosti čítačů a časovačů si popíšeme příště.

Obrázek 17: Moduly mikrořadiče 68HC11.

9. Odkazy na Internetu

  1. 68HC11 Instruction Set
    http://www.cs­.uaf.edu/2007/fa­ll/cs441/proj1no­tes/sawyer/in­st.html
  2. 68HC11 OpCode Map
    http://home.e­arthlink.net/~tdic­kens/68hc11/68h­c11_opcode_map­.html
  3. A Simple Robot Using the 68HC11 Processor
    http://home.e­arthlink.net/~tdic­kens/68hc11/trp­2/trp2.html
  4. 68HC11 C-Compiler (Imagecraft)
    http://microcon­trollershop.com/pro­duct_info.php?pro­ducts_id=188
  5. GNU Development Chain for 68HC11&68HC12
    http://www.gnu­.org/software/m68hc11/
  6. GNU C for 68HC11 – documentation
    http://www.gnu­.org/software/m68hc11/m­68hc11_doc.html
  7. The P-Brain tm Microcontroller Kit
    http://www.fu­turebots.com/bra­in.htm
  8. Wikipedia: Motorola 68HC05
    http://en.wiki­pedia.org/wiki/Mo­torola_68HC05
  9. Wikipedia: Freescale 68HC08
    http://en.wiki­pedia.org/wiki/68HC08
  10. Wikipedia: Freescale 68HC11
    http://en.wiki­pedia.org/wiki/68HC11
  11. Wikipedia: Freescale 68HC12
    http://en.wiki­pedia.org/wiki/Fre­escale_68HC12
  12. HC05 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­98633
  13. HC08 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­97663
  14. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd­.pl/acore.php?id­core=82
  15. Freescale 68HC11
    http://www.fre­escale.com/we­bapp/sps/site/ta­xonomy.jsp?no­deId=016246844­98635
  16. Lifecycle of a CPU:
    http://www.cpushac­k.net/life-cycle-of-cpu.html
  17. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/In­tel%20CPU/3002–8008/4004%20G­rey.jpg
  18. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  19. The Western Design Center, Inc.:
    http://www.wes­terndesigncen­ter.com/
  20. Apple II History Home:
    http://apple2his­tory.org/
  21. www.6502.org:
    http://www.6502­.org/
  22. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  23. Výběr z různých modelů (osmibitových) mikrořadičů PIC
    http://www.mi­crochip.com/ste­llent/idcplg?Id­cService=SS_GET_PA­GE&nodeId=2661
  24. Řada (rodina) osmibitových mikrořadičů PIC 10
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1009&mi­d=10&lang=en&pa­geId=74
  25. Řada (rodina) osmibitových mikrořadičů PIC 12
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1001&mi­d=10&lang=en&pa­geId=74
  26. Řada (rodina) osmibitových mikrořadičů PIC 14
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1008&mi­d=10&lang=en&pa­geId=74
  27. Řada (rodina) osmibitových mikrořadičů PIC 16
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1002&mi­d=10&lang=en&pa­geId=74
  28. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  29. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  30. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  31. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  32. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  33. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  34. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  35. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  36. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  37. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  38. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  39. The FreeRTOS Project
    http://www.fre­ertos.org/
  40. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  41. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  42. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  43. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  44. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  45. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  46. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  47. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  48. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  49. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  50. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  51. I2C
    http://en.wiki­pedia.org/wiki/I2C
  52. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  53. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  54. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  55. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com

Autor článku

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