Obsah
1. Použití mikrořadiče Intel 8048 (MCS-48) v mikropočítačích
2. Mikropočítač IMSAI 8048 Control Computer
4. „Audiovizuální“ čip Intel 8245
5. Legendární mikrořadič Intel 8051 (MCS-51)
6. Varianty mikrořadiče MCS-51 nabízené různými výrobci
7. Technické parametry mikrořadiče MCS-51
8. Obsah následující části seriálu
1. Použití mikrořadiče Intel 8048 (MCS-48) v mikropočítačích
V předchozí části tohoto seriálu jsme si stručně popsali historii vývoje čtyřbitového mikrořadiče TMS 1000 a osmibitového mikrořadiče Intel 8048 (MCS-48). Taktéž jsme se zmínili o základních technických parametrech mikrořadiče MCS-48. Ty nejsou, především s ohledem na stáří i typický způsob použití tohoto čipu, nijak omračující – jedná se o mikrořadič s osmibitovou aritmeticko-logickou jednotkou postavený na Harvardské architektuře, což mj. znamená, že paměť programu (ROM, PROM či EPROM) byla oddělená od paměti údajů (RAM). Zatímco interní paměť ROM, tj. paměť umístěná přímo na mikrořadiči, měla kapacitu 1024 bajtů popř. 2048 bajtů (varianta 8049H či 8749H) či dokonce 4096 bajtů (varianta 8050AH), interní paměť údajů byla mnohem menší – 64 bajtů (čip 8035H a „klasická“ 8048), 128 (varianty 8039HL, 8049H a 8749H) bajtů popř. dokonce 256 bajtů (čipy 8040AHL a 8050AH).
Obrázek 1: Osmibitový mikrořadič Intel 8048. Povšimněte si roku výroby, které je natištěno na posledním informačním řádku.
Instrukční sada tohoto mikrořadiče obsahovala aritmetické a logické instrukce, jejichž prvním (popř. jediným) parametrem byl vždy akumulátor a druhým parametrem buď jeden z osmi pracovních registrů R0 až R7 nebo osmibitová buňka paměti adresovaná registrem R0 nebo R1. Pracovní registry ležely přímo v paměti údajů spolu s druhou bankou osmi registrů, mezi kterými se bylo možné přepínat. I vzhledem k tomu, že mnoho instrukcí pracovalo pouze s akumulátorem a celá instrukční sada kvůli tomuto faktu postrádala ortogonalitu, bylo vytvoření efektivních překladačů vyšších programovacích jazyků poměrně komplikované, takže se pro mikrořadič 8048 již tradičně používal (a doposud používá) především assembler a v menší míře vyšší programovací jazyky (C, Pascal, PL/1,…), jejichž překladače se tvoří mnohem snadněji pro mikroprocesory s velkou sadou univerzálních registrů a ortogonální instrukční sadou (relativně snadno bylo možné implementovat interpret Forthu, ten však ocenila jen část programátorů).
Obrázek 2: Rozdělení pinů mikrořadiče Intel 8048 do skupin podle jejich funkce.
Při pohledu na technické parametry mikrořadiče 8048, včetně jeho nejvýkonnější varianty 8050AH, by se mohlo zdát, že je tento čip nevhodný pro konstrukci mikropočítačů, ovšem ve skutečnosti v minulosti vzniklo dokonce několik modelů osmibitových počítačů, jejichž ústředním prvkem byla některá z variant tohoto mikrořadiče. Dva z těchto počítačů si popíšeme v navazujících kapitolách. Zajímavé je i to, že firma Intel pravděpodobně plánovala využít 8048 v mikropočítačích nebo alespoň v různých terminálech či jednoduchých herních konzolích, protože pro tyto mikrořadiče vyvinula dnes již pozapomenutý čip Intel 8245 určený pro generování obrazového signálu a taktéž zvuků. I tento čip si popíšeme v následujících kapitolách, i když nikdy nedošlo k jeho významnějšímu rozšíření. Ovšem kombinace mikrořadiče 8050AH s 4096 bajty ROM, „audiovizuálního“ čipu 8245 a například jednoho či několika expandérů 8243 by mohla být použita pro konstrukci poměrně zajímavého mikropočítače, který by sice svým výkonem nijak neoslňoval, ale počet čipů nutných pro jeho realizaci by byl skutečně minimální (ostatně při vyšším počtu VLSI čipů se již doporučovalo nahradit mikrořadič plnohodnotným mikroprocesorem s externími paměťmi RAM i ROM).
Obrázek 3: Bloková struktura mikrořadiče Intel 8048.
2. Mikropočítač IMSAI 8048 Control Computer
Prvním počítačem postaveným na mikrořadiči Intel 8048, který se dnes popíšeme, je mikropočítač IMSAI 8048 Control Computer, který byl určený, jak již ostatně jeho název napovídá, pro řízení různých elektronických zařízení. Nejednalo se tedy o klasický domácí osmibitový počítač s grafickým výstupem na televizor či monitor a plnohodnotnou klávesnicí – standardním výstupním zařízením byl jednoduchý devítimístný sedmisegmentový displej popř. tiskárna připojená přes sériový port; klávesnice umožňovala zápis programu ve strojovém kódu (jednalo se o přímý zápis hexadecimálních hodnot 00 až FF), editaci buněk paměti, krokování programu atd. Mikropočítač IMSAI 8048 byl nabízen ve dvou variantách. První varianta byla založena přímo na mikrořadiči Intel 8048 (PROM), druhá verze využívala čip Intel 8748 vybavený interní pamětí EPROM, popř. byl použit čip 8035 (zcela bez interní ROM), ke kterému byla připojena paměť EPROM představovaná známým a v minulosti často používaným paměťovým modulem 2716 s kapacitou dva kilobajty (tento paměťový modul byl mj. součástí tuzemského osmibitového domácího mikropočítače PMD-85–2).
Obrázek 4: Dobová fotografie počítače IMSAI 8048 Control Computer.
Varianta počítače IMSAI 8048 Control Computer s pamětí ROM byla nabízena za 249 dolarů v případě dodání počítače ve formě stavebnice, popř. za 299 dolarů, pokud si uživatel přál získat již hotovou sestavu; zatímco varianta obsahující paměť EPROM byla dražší – 399 dolarů za stavebnici nebo 499 dolarů za počítač sestavený výrobcem. Z těchto cen si mimochodem můžeme odvodit, jakou novinkou a poměrně drahou záležitostí byly paměťové moduly EPROM před rokem 1980 (ale i to, že marže výrobců počítačů byly možná až o řád vyšší než v současnosti). V paměti ROM či EPROM byl uložen program umožňující základní práci se systémem. Především se jednalo o ovládání periferních zařízení (včetně kazetového magnetofonu a sériového portu), tvorbu uživatelských programů, krokování těchto programů (včetně možnosti nastavení breakpointů), jejich úpravu (editaci), zobrazení obsahu libovolné buňky interní či externí paměti na displeji, změnu těchto údajů atd. Tento program se nazýval, podobně jako tomu bylo i na některých dalších mikropočítačích, monitor.
Obrázek 5: Pohled na počítač IMSAI 8048 bez horního krytu.
Jeden z problémů, který museli konstruktéři mikropočítače IMSAI 8048 vyřešit, byl způsob editace a spouštění uživatelských programů. Všechny varianty počítače IMSAI totiž používaly mikrořadič s pouhými 64 bajty interní paměti údajů, v níž se navíc nacházely i pracovní registry a zásobník. Z tohoto důvodu byla tato paměť rozšířena o další jeden kilobajt externí paměti RAM, v níž mohla být uložena jak uživatelská data, tak i části programu, které bylo možné pomocí monitoru modifikovat. Mikrořadiče řady 8048 umožňovaly přímo adresovat pouze 256 bajtů z externí paměti údajů, proto monitor obsahoval logiku pro stránkování externí paměti RAM po blocích o velikosti 256 bajtů (po obvodové stránce se nejednalo o nic jiného, než připojení nejvyšších dvou bitů adresové sběrnice na záchytný registr – latch). V praxi měl tedy uživatel k dispozici 1024 bajtů RAM pro uložení svého programu, přičemž mohl využívat podprogramy uložené v 2048 bajtech paměti ROM (tyto podprogramy byly součástí monitoru).
Obrázek 6: Další varianta počítače IMSAI nazvaná IMSAI Express.
3. Mikropočítač Kosmos CP1
Druhým mikropočítačem založeným na mikrořadiči Intel 8048, jímž se v dnešním článku budeme alespoň ve stručnosti zabývat, je počítač nazvaný Computer Praxis 1 (zkráceně CP1) vyráběný na přelomu sedmdesátých a osmdesátých let minulého století německou firmou Kosmos. Tento minimalisticky pojatý počítač byl vybaven mikrořadičem 8049H s 2 kB paměti ROM a pamětí údajů o kapacitě 128 bajtů, která byla doplněna externími 256 bajty RAM (viz další text). Mikrořadič byl doplněn obvodem 8155, který zajišťoval vstupně/výstupní operace (rozšiřoval I/O porty mikrořadiče o 22 linek) a taktéž obsahoval již zmíněnou externí RAM s organizací 256×8 bitů. Podobně jako v případě mikropočítače IMSAI, i počítač Kosmos CP1 se programoval přímo ve strojovém kódu, přičemž jednotlivé instrukce i jejich operandy byly zadávány v desítkové soustavě, což bylo spíše neobvyklé řešení (i dnes je možné zakoupit kity pro různé typy mikrořadičů, ale většina jich zobrazuje údaje v soustavě hexadecimální).
Obrázek 7: Mikropočítač Kosmos CP1.
Mikropočítač Kosmos CP1 byl vybaven jednoduchou klávesnicí zobrazenou na sedmém obrázku a šestimístným sedmisegmentovým LED displejem. K tomuto mikropočítači bylo možné připojit prakticky libovolné elektrické zařízení, které bylo ovladatelné signály s úrovněmi odpovídajícími TTL logice. Vzhledem k poměrně velké oblibě tohoto mikropočítače mezi německými uživateli vzniklo velké množství různých projektů na něm založených, od jednoduchých budíků, přes zvukové syntetizéry až po systém umožňující automatické ovládání modelového kolejiště.
Obrázek 8: O oblibě počítače Kosmos CP1 svědčí i to, že vznikl jeho emulátor.
4. „Audiovizuální“ čip Intel 8245
V této kapitole si stručně popíšeme poměrně neobvyklý čip, který byl firmou Intel navržen s ohledem na to, aby mohl spolupracovat jak s mikrořadičem MCS-48, tak i s osmibitovými mikroprocesory 8085. Jedná se o čip nesoucí označení 8245. Tento čip byl určen pro generování obrazového signálu a taktéž zvuků a firma Intel ho chtěla nabízet (a možná i nabízela) výrobcům herních konzolí, jednoduchých mikropočítačů či terminálů, i když se kvůli poměrně složitému programování tohoto čipu a taktéž velké konkurenci ostatních výrobců (ANTIC firmy Atari či slavný VIC a VIC-II firmy CBM) tento čip nedočkal většího rozšíření. 8245 byl umístěn v pouzdře DIP s 28 piny a obsahoval mj. i 256 bajtů paměti RAM, které sloužily jak pro úschovu tvarů zobrazovaných na televizoru či monitoru, tak i pro ukládání parametrů generovaných zvuků. Vzhledem k tomu, že 8245 neobsahoval dostatek paměti pro realizaci klasického framebufferu, museli jeho konstruktéři zvolit metodu generování obrazu ze statických a dynamických tvarů o relativně malých rozměrech, typicky 8×7 pixelů či 8×8 pixelů (jedná se tedy o obdobu spritů).
Obrázek 9: Zapojení pinů čipu Intel 8245.
Grafický obraz posílaný na televizor či monitor byl generován na základě tří typů údajů – statických objektů definovaných v poli o rozměrech 8×7 bitů (nikoli pixelů, protože mapování bitů na pixely bylo v některých případech poměrně složité), dynamických (tj. pohybujících se) objektů definovaných v poli 8×8 bitů a mřížky o rozměrech 9×8 dlaždic s programovatelným tvarem jednotlivých buněk (dlaždic). V případě potřeby bylo možné namísto obecných tvarů statických objektů použít masky znaků a zobrazovat tak jednoduchý text, ovšem počet současně zobrazitelných znaků byl omezen. Kromě barvonosného signálu a signálů synchronizačních dokázal čip 8245 generovat i jednoduché zvuky, a to buď pseudonáhodný signál vytvářený v 28bitovém posuvném registru se zpětnou vazbou (podobným způsobem byl ostatně pseudonáhodný šum vytvářen i na dalších zvukových generátorech, včetně čipu TIA či POKEY) nebo obdélníkový signál s proměnnou střídou, frekvencí a hlasitostí.
Obrázek 10: Znaková sada používaná čipem Intel 8245.
5. Legendární mikrořadič Intel 8051 (MCS-51)
V předchozí části tohoto seriálu i v předešlých kapitolách jsme se zabývali zejména osmibitovým mikrořadičem Intel 8048 (MCS-48) i způsobem jeho využití v mikropočítačích, což zajisté není typická oblast, v níž se mikrořadiče uplatňovaly či uplatňují. Mikrořadič MCS-48 se poměrně krátce po svém uvedení na trh stal velmi populárním čipem, protože umožňoval zjednodušit konstrukci mnoha typů zařízení tím, že se v jednom integrovaném obvodu sdružilo více funkcí – CPU (aritmeticko-logická jednotka + instrukční dekodér + řadič + pracovní registry), RAM, ROM, čítač/časovač, vstupně/výstupní osmibitové brány atd. Ovšem pro některé účely nebyl výpočetní výkon či některé technické parametry mikrořadiče MCS-48 dostačující a současně také postupným vývojem došlo ke zvýšení hustoty tranzistorů na čipech, zvýšení mezní frekvence hodinového signálu, zmenšení paměťových buněk EPROM (popř. ke zvýšení počtu cyklů vymazání+přepis), snížení nákladů na výrobu atd.
Obrázek 11: Mikrořadič 8751, který je vybaven pamětí EPROM (7 ve třetí číslici).
Tento pokrok v oblasti technologie polovodičových součástek, který na konci sedmdesátých let minulého století poměrně přesně odpovídal Moorovu zákonu, umožnil firmě Intel, aby v roce 1980, tj. právě před třiceti lety, nabídla konstruktérům i programátorům nový typ osmibitového mikrořadiče, který nesl označení Intel 8051 nebo též MCS-51. Tento mikrořadič se stal jedním z nejpopulárnějších osmibitových mikrořadičů na světě a i když firma Intel před několika lety ukončila jeho výrobu (jakož i výrobu všech dalších mikrořadičů), mají ho ve své nabídce další výrobci, což je ostatně patrné i při pohledu na tabulku s některými variantami MCS-51, která je uvedena v následující kapitole.
Obrázek 12: Amatérský mikropočítač postavený na základě mikrořadiče 8051.
6. Varianty mikrořadiče MCS-51 nabízené různými výrobci
Tabulka umístěná pod tímto odstavcem obsahuje některé známé a často používané varianty mikrořadiče MCS-51, které jsou nabízené různými výrobci. Tato tabulka byla sestavena na základě údajů dodaných Jimem Granvillem, jenž je spoluzakladatelem podniku Mandeno Granville Electronics, Ltd. K této tabulce zbývá dodat pouze několik informací: k původnímu jádru MCS-51 se postupně přidávaly další moduly, například řadiče různých typů sběrnic (I2C, USB, sběrnice používané v automobilovém průmyslu), analogově/digitální převodníky, obvody typu watchdog, obvody pro tvorbu signálů vhodných pro pulsní šířkovou modulaci (PWM), posílení portů tak, aby se pomocí nich daly přímo ovládat LED atd. Navíc byly původní technologie pamětí EPROM (tj. paměti mazatelné ultrafialovým zářením) postupně nahrazeny technologií EEPROM (paměť mazatelná elektronicky) a později FLASH EEPROM. V některých případech došlo i k rozšíření instrukční sady, popř. k vylepšení ALU o možnost provádění šestnáctibitových aritmetických a logických operací.
Označení | Počet pinů | Výrobce | RAM | ROM | Extra RAM | Další vybavení |
---|---|---|---|---|---|---|
MCS251 | 40 | Intel | 1024 | 16K | 0 | 16 Bit 80×51FX Prelim |
51C806 | 100 | Siemens | 256 | 64K | 64b | SIECO+CAN+appx 517A, faster |
80C537A | 84 | Siemens | 256 | 64K | 2048 | ALU, 8 PWM, CaptComp 2UART, 10b A/D |
80C517A | 84 | Siemens | 256 | 32K | 2048 | ALU, 8 PWM, CaptComp 2UART, 10b A/D |
80537 | 84 | Siemens | 256 | 64K | 0 | ALU, 8 PWM, CaptComp 2UART, 8b A/D |
80517 | 84 | Siemens | 256 | 8K | 0 | ALU, 8 PWM, CaptComp 2UART, 8b A/D |
73D2910 | 100 | SSI | 256 | 128K | 0 | 80C52+Ports+HDLC |
80C535A | 68 | Siemens | 256 | 64K | 1024 | 515+10bA/D, 1K XRAM, BRG, OWD |
80CE558 | 80 | Philips | 256 | 64K | 768 | Enhanced 80C552, Sep i2c, RSO |
80C515A | 68 | Siemens | 256 | 32K | 1024 | 515+10bA/D, 1K XRAM, BRG, OWD |
80535 | 68 | Siemens | 256 | 64K | 0 | Timer2, CaptComp, 6 ports, 8/10b A/D |
80515 | 68 | Siemens | 256 | 8K | 0 | Timer2, CaptComp, 4 ports, 8b A/D |
80C535 | 68 | Siemens | 256 | 64K | 0 | Timer2, CaptComp, 5 ports 8b A/D |
80C51GB | 68 | Intel | 256 | 64K | 0 | 8051FA+PCA, 8b A/D, SPI |
87C51GB | 68 | Intel | 256 | 8K | 0 | 8051FA+PCA, 8b A/D, SPI |
80C592 | 68 | Philips | 256 | 64K | 256 | 552-i2c+CAN+XRAM |
87C592 | 68 | Philips | 256 | 16K | 256 | 552-i2c+CAN+XRAM |
87C598 | 80 | Philips | 256 | 32K | 256 | 552-i2c+CAN+XRAM |
80C552 | 68 | Philips | 256 | 64K | 0 | 10b A/D, i2c, CaptComp, PWM |
87C552 | 68 | Philips | 256 | 8K | 0 | 10b A/D, i2c, CaptComp, PWM |
80C562 | 68 | Philips | 256 | 64K | 0 | 8b A/D, i2c, CaptComp, PWM |
87C451 | 68 | Philips | 128 | 4K | 0 | 7 Ports, 1 Handshake |
80C451 | 68 | Philips | 128 | 64K | 0 | 7 Ports, 1 Handshake |
87C453 | 68 | Philips | 256 | 8K | 0 | 7 Ports, 1 Handshake |
83CL580 | 56,64 | Philips | 256 | 6K | 0 | LV 8052+ADC+i2c+More INTs, watchdog |
SABC503 | 44 | Siemens | 256 | 64K | 0 | 80C52+8Ch, 10bA/D, BRG, WD, OWD |
80C320 | 40 | Dallas | 256 | 64K | 0 | FAST, 2 DPTR 2 UART VRST |
80C310 | 40 | Dallas | 256 | 64K | 0 | Simpler 80C320 e62Mhz |
87C520 | 40 | Dallas | 256 | 16K | 1024 | 16K OTP enhanced 80C320 |
80C51FX | 40 | Intel | 256 | 64K | 0 | 80C58i+PCA, AsRST |
87C51FA | 40 | Intel | 256 | 8K | 0 | 8052+PCA, Enh Serial, Automotive |
87C51FB | 40 | Intel | 256 | 16K | 0 | 8052+PCA, Enh Serial, Automotive |
87C51FC | 40 | Intel | 256 | 32K | 0 | 8052+PCA, Enh Serial, Automotive |
8XC51FB | 40 | Philips | 256 | 16K | 0 | 87C51FB with ALE RFI mode |
87C51FXL | 40 | Intel | 256 | 32K | 0 | 3v3 80C51FC |
80C152JD | 68 | Intel | 256 | 64K | 0 | HDLC/SDLC Serial |
80C152 | 48 | Intel | 256 | 64K | 0 | SDLC Serial |
8044 | 40 | Intel | 192 | 64K | 0 | RUPI Serial |
80C575 | 40 | Philips | 256 | 64K | 0 | 8052+PCA, AnalogComp, watchdog, RSTLo |
87C575 | 40 | Philips | 256 | 8K | 0 | 8052+PCA, AnalogComp, watchdog, RSTLo |
80C576 | 40 | Philips | 256 | 8K | 0 | 8052+PCA, UPI, A/D, PWM, watchdog, VRSTLo |
87C576 | 40 | Philips | 256 | 8K | 0 | 8052+PCA, UPI, A/D, PWM, watchdog, VRSTLo |
SABC501 | 40 | Siemens | 256 | 64K | 0 | 40MHz Enhanced 8052 U/D |
SABC502 | 40 | Siemens | 256 | 64K | 256 | 8052+XRAM+8DP+WD+BRG+OWD |
80C528 | 40 | Philips | 256 | 64K | 256 | 8052+watchdog, XRAM |
87C528 | 40 | Philips | 256 | 32K | 256 | 8052+watchdog, XRAM |
89CE528 | 44 | Philips | 256 | 32K | 256 | Flash 528 |
87C524 | 40 | Philips | 256 | 16K | 256 | 16K 87C528 |
80C550 | 40 | Philips | 128 | 4K | 0 | 8b A/D watchdog |
80CL781 | 40 | Philips | 256 | 64K | 0 | Low Voltage 8052, More INTs, watchdog |
83CL781 | 40 | Philips | 256 | 16K | 0 | Low Voltage 8052, More INTs, watchdog |
80CL782 | 40 | Philips | 256 | 64K | 0 | Low Voltage, faster 781 |
89C52 | 40,44 | Atmel | 256 | 8K | 0 | FLASH, Fast,LV 87C52 |
87C54 | 40 | Intel | 256 | 16K | 0 | 16K 87C52i |
87C58 | 40 | Intel | 256 | 32K | 0 | 32K 87C52i |
87C52 | 40 | Intel | 256 | 8K | 0 | 8052+U/D+OscO+4Li |
80C154 | 40 | Matra | 256 | 64K | 0 | Enhanced 8052 (also OKI) |
83C154D | 40 | Matra | 256 | 32K | 0 | Enhanced 8052 |
83C154 | 40 | OKI | 256 | 16K | 0 | Enhanced 8052 |
80C654 | 40 | Philips | 256 | 64K | 0 | i2c |
87C652 | 40 | Philips | 256 | 8K | 0 | i2c |
87C654 | 40 | Philips | 256 | 16K | 0 | i2c |
83CE654 | 44 | Philips | 256 | 16K | 0 | i2c, low RFI 654 |
DS5000 | 40 | Dallas | 128 | 32K | 32K | 80×51 Secure + NV support, BootLdr |
DS2250 | 40 | Dallas | 128 | 32K | 32K | As 5000, but smarter package |
DS5001 | 80 | Dallas | 128 | 64K | 64K | Better 5000, + RPC + BatSw |
80C851 | 40 | Philips | 128 | 64K | 0 | 8051+256B EEPROM |
83C852 | 6 | Philips | 256 | 6K | 0 | 2K EEPROM SmartCard 80×51, Die, ALU |
8052 | 40 | All | 256 | 64K | 0 | 8051+Timer2 |
8752 | 40 | Intel | 256 | 8K | 0 | 8051+Timer2 |
80C52 | 40 | Siemens | 256 | 64K | 0 | 8051+Timer2, Philips, Oki, Matra |
88SC54C | 8 | Atmel | 256 | 64K | 512 | 8052+PublicKey,prelim |
80CL410 | 40 | Philips | 128 | 64K | 0 | Low Voltage, More INTs, i2c-UART |
80CL31 | 40 | Philips | 128 | 64K | 0 | Low Voltage, More Ints, 80×51 |
80CL610 | 40 | Philips | 256 | 64K | 0 | Low Voltage, More INTs, i2c-UART |
83CL411 | 40 | Philips | 256 | 64K | 0 | 80CL31 with 256 RAM, No T2 |
89C51 | 40,44 | Atmel | 128 | 4K | 0 | FLASH,Fast,LV 87C51 |
8751 | 40 | All | 128 | 4K | 0 | Core processor, UART, Tmr0, Tmr1 |
87C51 | 40 | All | 128 | 4K | 0 | Core processor, UART, Tmr0, Tmr1 |
8031 | 40 | All | 128 | 64K | 0 | Core processor, UART, Tmr0, Tmr1 |
8051 | 40 | All | 128 | 4K | 0 | Core processor, UART, Tmr0, Tmr1 |
80C31L | 40 | Matra | 128 | 64K | 0 | Low Voltage 80×51 |
87C752 | 28 | Philips | 64 | 2K | 0 | 87751+ A/D, PWM |
87C749 | 28 | Philips | 64 | 2K | 0 | 87C752 – i2c |
87C751 | 24 | Philips | 64 | 2K | 0 | Small size, bit i2c |
87C748 | 24 | Philips | 64 | 2K | 0 | 87C751 – i2c |
87C750 | 24 | Philips | 64 | 1K | 0 | Small size, |
89C2051 | 20 | Atmel | 128 | 2K | 0 | 20Pin 89C51,+AnaComp+LED |
89C1051 | 20 | Atmel | 64 | 1K | 0 | 20Pin 2051 -uart,timer1 |
80C509F | 100 | Siemens | 256 | 128K | 3072 | FLASH Super ClkDbled 517A |
80C517AF | 84 | Siemens | 256 | 64K | 2048 | FLASH 517A |
80C515AF | 68 | Siemens | 256 | 64K | 1024 | FLASH 515A |
89C558 | 80 | Philips | 256 | 32K | 1024 | effectively a FLASH 552 |
88SC54C | 68 | Atmel | 256 | 16K | 512 | FLASH 8052+PublicKey 8KF + 8KEE |
89C52 | 40,44 | Atmel | 256 | 8K | 0 | FLASH, Fast,LV 87C52 |
89C51 | 40,44 | Atmel | 128 | 4K | 0 | FLASH,Fast,LV 87C51 |
89C2051 | 20 | Atmel | 128 | 2K | 0 | FLASH 20 Pin 89C51,+ AnaComp+LED |
89C1051 | 20 | Atmel | 64 | 1K | 0 | FLASH 20Pin 2051 – uart, timer1 |
Obrázek 13: Zapojení pinů mikrořadiče MCS-51.
7. Technické parametry mikrořadiče MCS-51
Mikrořadič MCS-51 je přímým následovníkem minule popsaného mikrořadiče MCS-48, což mj. umožnilo využití již hotových algoritmů a různých programátorských nástrojů (v mnoha případech postačilo provést jejich konverzi pomocí utility CONV51 s následnou rekompilací), ovšem MCS-51 byl navíc snad ve všech možných ohledech vylepšen. Například počet osmibitových vstupně/výstupních portů se zvýšil ze tří na čtyři porty pojmenované P0 až P3, přičemž všem pinům portu P3 byla přiřazena alternativní funkce – viz též obrázek číslo 13 umístěný na konci předchozí kapitoly. První dva piny portu P3 mohly sloužit jako asynchronní či synchronní sériový port, další dva piny bylo možné nakonfigurovat jako vstupy externího přerušení, třetí dvojice pinů byla využitelná v režimu vstupů čítačů a poslední dvojice pinů tvořících port P3 se využívala k přístupu do externí paměti údajů (RAM). Záleželo pouze na programátorovi a samozřejmě též na požadavcích řešeném problému, jakým způsobem byl tento port či jeho jednotlivé piny využity (poznámka – u mikrořadiče 8052 byly navíc využity i dva piny portu P2, které mohly sloužit jako vstupy třetího čítače).
Obrázek 14: Příklad využití pinů ze dvou portů pro zapojení dvojice sedmisegmentových displejů pracujících v multiplexním (přepínaném) režimu.
Ovšem vylepšení mikrořadiče MCS-51 oproti MCS-48 bylo daleko víc. Jediný osmibitový čítač/časovač byl nahrazen dvojicí šestnáctibitových čítačů/časovačů, které bylo možné nakonfigurovat tak, aby byly kompatibilní s MCS-48. Navíc se u varianty 8052 mohl využít i třetí čítač, o čemž jsme se zmínili při popisu pinů portu P3. Přerušovací subsystém byl rozšířen tak, že mikrořadič mohl reagovat na pět nebo šest typů přerušení (šesté přerušení se využívalo pouze v případě existence třetího časovače) s nastavitelnou prioritou (dvě úrovně priority + RESET), přičemž dva zdroje přerušení byly externí. U MCS-48 byl naproti tomu vyveden pouze jeden externí pin. Vektory přerušení byly pevně nastaveny na adresy v paměti programu, přičemž pro každý podprogram bylo k dispozici osm bajtů, což kupodivu pro mnoho přerušovacích rutin bylo dostatečné (samozřejmě bylo možné provést odskok do libovolného místa paměti programu). MCS-51 taktéž obsahoval sériový port, který mohl pracovat v synchronním nebo asynchronním režimu, a to poloduplexně nebo fullduplexně (obvody sériového portu obsahovaly vstupní i výstupní vyrovnávací registr). Právě kvůli podpoře standardních přenosových rychlostí sériového portu používala mnohá zapojení s MCS-51 krystaly s „podivnými“ frekvencemi (11 059 MHz), namísto standardních 12 MHz.
Obrázek 15: Připojení externí paměti programu a externí paměti údajů k mikrořadiči MCS-51.
Paměť programu nebo paměť údajů bylo možné rozšířit externími paměťovými moduly, a to tak, že oba typy pamětí mohly mít kapacitu až 64 kB, což se odrazilo i na možnostech instrukční sady, kterou si popíšeme příště (mj. se k pracovním registrům přidal i šestnáctibitový registr DPTR, neboli Data PoinTeR). Instrukční sada taktéž obsahovala instrukce pro celočíselné násobení a dělení, což bylo na „pouhý“ osmibitový mikrořadič poměrně unikátní, protože ani mnohé „plnohodnotné“ osmibitové mikroprocesory, samozřejmě s výjimkou Motoroly M6809, tyto instrukce neobsahovaly. Instrukční sada taktéž obsahovala několik instrukcí, pomocí nichž byl v interní paměti údajů vytvořen takzvaný Booleovský procesor. Ve skutečnosti se nejedná o nic složitého – v paměti údajů bylo 16 bajtů a taktéž 16 speciálních funkčních registrů (SFR) adresovatelných po jednotlivých bitech (16×2×8=256 bitů), přičemž v instrukční sadě existovaly instrukce pro přímé nastavení, negaci či vynulování těchto bitů, skok na základě hodnoty některého z těchto bitů atd. Podrobnosti si ukážeme příště.
8. Obsah následující části seriálu
V následující části seriálu o architekturách počítačů budeme pokračovat v popisu osmibitového mikrořadiče MCS-51. Zmíníme se o jeho čítačích a časovačích, zabudovaném sériovém portu, speciálních funkčních registrech (SFR), struktuře paměti údajů i o použité instrukční sadě, která oproti instrukční sadě použité u mikrořadičů MCS-48 doznala poměrně velkých změn. Kromě toho si popíšeme i některé počítače a vývojové kity založené na tomto mikrořadiči a nezapomeneme ani na moderní minimalistickou variantu MCS-51 prodávanou pod označením Atmel AT89C1051. Tento na první pohled nenápadný čip je významný především z toho důvodu, že v mnoha oblastech konkuruje mikrořadičům řady AT82Cxxx.
Obrázek 16: Moderní kit obsahující všemožné vstupní i výstupní prvky, který jako svoji nejdůležitější část obsahuje mikrořadič 8051. Podobné kity, i když mnohdy ne tak luxusní, nabízí poměrně velké množství výrobců.
9. Odkazy na Internetu
- Microcontroller
http://en.wikipedia.org/wiki/Microcontroller - Great Microprocessors of the Past and Present (V 13.4.0)
http://jbayko.sasktelwebsite.net/cpu.html - Intel 8048 Microcontroller Oral History Panel
http://www.computerhistory.org/collections/accession/102658328 - IMSAI® History: The 8048 Control Computer
http://www.imsai.net/history/imsai_history/imsai_8048_control_computer.htm - 8048
http://coprolite.com/8048.html - IMSAI 8048
http://www.old-computers.com/museum/computer.asp?st=1&c=564 - Intel 8048
http://en.wikipedia.org/wiki/8048 - Tesla Eltos Mikropočítačová stavebnice Petr
http://sites.google.com/site/computerresearchltd/Home/stare-stroje/tesla-eltos-mikropocitacova-stavebnice-petr - Mikropočítačová stavebnice Petr
http://dex.bloguje.cz/770366-mikropocitacova-stavebnice-petr.php - Kosmos CP1
http://de.wikipedia.org/wiki/Kosmos_CP1 - KOSMOS: CP1 / Computer Praxis
http://www.old-computers.com/museum/computer.asp?st=1&c=494 - Great CPU: Part VIII: Intel 8051, Descendant of the 8048 (around 1977?)
http://jbayko.sasktelwebsite.net/cpu1.html#Sec1Part8 - Intel 8051 – Wikipedie EN
http://en.wikipedia.org/wiki/8051 - Intel 8051 – Wikipedie CZ
http://cs.wikipedia.org/wiki/Intel_8051 - Popis mikroprocesoru 8051
http://www.dhservis.cz/popis8051.htm - Jak se naučit programovat (nejen jednočipy)
http://www.dhservis.cz/dalsi1/obsah_popis.htm - 89C1051 series datasheets
http://www.chipdocs.com/datasheets/datasheet-pdf/Atmel-Corporation/89C1051.html - 8051 microcontroller FAQ
http://www.faqs.org/faqs/microcontroller-faq/8051/ - ABOUT THE 8051
http://www.esacademy.com/assets/faqs/8051/2.htm - Mikroprocesor 8051
http://8051.godlike.cz/