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

3. 8. 2010
Doba čtení: 18 minut

Sdílet

Dnes si nejdříve popíšeme dvojici osmibitových mikropočítačů, které jsou založeny na mikrořadiči Intel 8048, označovaném také jako MCS-48. Poté se začneme zabývat mikrořadičem, který firma Intel začala vyrábět přesně před třiceti lety – jedná se o slavný čip Intel 8051 (MCS-51) používaný doposud.

Obsah

1. Použití mikrořadiče Intel 8048 (MCS-48) v mikropočítačích

2. Mikropočítač IMSAI 8048 Control Computer

3. Mikropočítač Kosmos CP1

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

9. Odkazy na Internetu

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ů R0R7 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+PublicKe­y,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é P0P3, 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ě.

bitcoin_skoleni

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

  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/

Autor článku

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