Mikroprocesor Intel 8051 Představení mikroprocesoru 8051 Mikroprocesor as jádrem 8051 patří do rodiny MSC51 a byl prvně vyvinut firmou Intel v roce 1980, což znamená, že zanedlouho oslaví své třicáté narozeniny. Na poli informatiky je tento věk opravdu velmi velký a jen hrstka tak „starých“ řešení, se používá i v dnešní době. Procesory s jádrem 8051 se však těšily a těší poměrně velké oblibě a to i v dnešní již přeci jen o třicet let pokročilé době. Nemalá řada světových výrobců dnes staví své komponenty na jádru Intelu 8051. Za svou oblibu toto jádro vděčí zejména své jednoduchosti a poměrně přijatelné rozšiřitelnosti. Například firma Philips vyrábí 25 různých modifikací tohoto procesoru lišící se od sebe zejména vybavením, jak naznačuje obrázek 1. Procesory Intel 8051, potažmo jádro tohoto procesoru si i po třiceti letech drží své nadšence, které neodradili ani dnešní sofistikované systémy například Microsoft embedded a další. Proto si tento procesor zaslouží naši pozornost.
Obrázek 1 - Periferie rozšiřující jádro 8051
Dnešní modifikace původního procesoru Intel 8051se liší zejména svými možnostmi práce s periferním zařízením. Paměť programu se pohybuje mezi 2kB až 32 kB. Paměť pro data může být jak interní, tak je možné připojit i externí paměť. Jádro 8051 umožňuje také práci s interní a externí pamětí pro program najednou, což dává tomuto řešení poměrně velké možnosti. Frekvence procesoru se pohybuje od 12 do 32 MHz v závislosti na daném řešení. K jádru 8051 pak může být připojen analogově digitální převodník, sériová sběrnice, čítače a další. Vše je zabaleno v malém pouzdru s 40 nožičkami viz Obrázek 2, které je možné připájet na desku. Mikroprocesory řady 8051 mají v dnešní době využití v mnoha oborech, jako například medicína, těžký průmysl, zabezpečovací
technika a mnohé další. Díky nízké spotřebě je možné tyto procesory nasadit i do míst, kde není elektrické vedení, a jsme odkázání na napájení z baterií.
Obrázek 2 - Pouzdro Mikropočítače Intel P8051AH
Blokové schéma mikroprocesoru 8051 Mikroprocesor 8051 je osmibitový jednočipový mikroprocesor se smíšenou harwardsou a a Von Neumanovskou architekturou. 8051 má oddělenou datovou a programovou paměť. Formát instrukcí pro práci s daty a data samotná jsou totožné a přenáší se po stejné sběrnici. Více o tomto procesoru nám napoví blokové schéma, znázorňující jeho vnitřní strukturu viz Obrázek 3.
Obrázek 3 - Blokové schéma procesoru 8051
Popis bych začal od samotného srdce a to CPU. CPU je tvořeno aritmeticko-logickou jednotkou, která obsahuje sčítačku/odečítačku, násobičku/děličku a booleovskou aritmetickou jednotku. Aritmeticko-logická jednotka je spojena s aritmetickými registry ACC, B a PSW. ACC je střadač, do kterého se ukládá výsledek aritmetické operace. ACC, nebo také pro svou vlastnost práce s postupným přičítáním zpracovaných čísel také akumulátor je přístupný jak pod symbolickým názvem ACC, tak je možné jej přímo adresovat. B registr obsahuje operand pro instrukci násobení, nebo dělení. Poslední registr aritmeticko-logické jednotky PSW je stavové slovo viz Obrázek 6. Registru ACC, B a PSW jsou umístěny v SFR viz Registr speciálních funkcí. Generátor hodin určuje synchronizační signál procesoru. Na vývod XTAL1 a XTAL2 se připojuje piezoelektrický rezonátor neboli krystal. Dále na obrázku 3 můžeme vidět sériový kanál,
řadič přerušení a dva čítače/časovače T0 a T1. Řadič přerušení, sériový kanál, čtyři vstupně výstupní brány sloužící pro komunikaci mikropočítače s okolím, vnitřní paměť programu a vnitřní paměť dat včetně SFR, což je oblast speciálních funkcí tvořena 21 registry, které jsou umístěny v adresovém prostoru 128 (80H) až 255 (FFH). V prostoru SFR je mimo jiné, jak již bylo zmíněno uložen i střadač.
Registr speciálních funkcí SFR Registr speciálních funkcí SFR ukládá veškeré podstatné informace o chování všech periférií, jako jsou čítače/časovače, řadiče, sériový kanál a další. Registr speciálních funkcí, jenž je zobrazen na obrázku 5 je umístěn ve vnitřní paměti RAM.
Obrázek 5 - Rozdělení paměti RAM
Registr ACC a B jsem již popsal. Nyní bych se zaměřil na registr PSW viz Obrázek 5.
Obrázek 6 - PSW registr
Popis bitů PSW registru C – (Carry) bit přenosu je nastaven při aritmetických operací, kdy dochází k přenosu mezi osmým a devátým bitem. Tento bit je nastavován také při některých instrukcí porovnávání. AC – (Auxiliary carry) bit je nastaven, pokud dojde při sčítání k přenosu mezi čtvrtým a pátým bitem střadače. Příznak je využit pouze v instrukci DAA, což je instrukce dekadické korekce.
F0 – bit je tzv. programátorským příznakem a je možné jej využít dle libosti programátora. Používá se například jako bit indikující nějakou vnější událost. Tento bit pochází z předchůdce 8051 a to 8048. RS1, RS0, - jsou bity určující banku, které registry R0 až R7 budou používány. Slouží například k nepřímému adresování. Bity RS1 a RS0 jsou ovládány programově, pomocí bitových operací. Výchozí bankou je banka 0. Kombinace bitů a nastavení bank je zobrazeno v Tabulce 1. Rozdělenou paměť na banky pak můžeme vidět na Obrázku 5, kde je zobrazeno rozdělení paměťového prostoru. RS1
RS0
Zvolená Banka
0
0
0
Adresy registru R0 až R7 00H – 07H
0
1
1
08H – 0FH
1
0
2
10H – 17H
1
1
3
18H – 1FH
Tabulka 1 - Kombinace bitů nastavující banky
OV – (Overflow) je příznakem přetečení. Pokud se zpracovávají čísla, používá se tento bit jako znaménko. V ostatních případech slouží jako příznak přetečení aritmetické operace sčítání, nebo odčítání. Příznak se také používá při dělení, kdy indikuje dělení nulou, nebo při násobení. P – je příznakem parity. Tento bit poukazuje na lichou paritu střadače. Pokud ve střadači je lichý počet jedniček, je tento bit roven 1. Tento příznak se aktualizuje po každé instrukci. Další důležité registry z SFR SP – (Stack pionter) je osmi bitový ukazatel zásobníku, jenž je umístěn ve vnitřní paměti RAM. DPL, DPH – Jsou registry tvořící nižší a vyšší osmi bitovou slabiku šestnácti bitového ukazatele DTPR, kterým se používá pro nepřímé adresování externí paměti RAM. PC – (Program counter) je šestnácti bitový čítač instrukcí.
Čítače / časovače Jak již jsem zmínil 8051 obsahuje dva šestnácti bitové čítače. Obsah čítačů je přístupný přes registry TH0, TL0 a TH1, TL1. Čítače mohou dle nastavení registru TMOD pracovat ve čtyřech módech. Pokud chceme, aby čítač pracoval jako časovač, je nutné na jeho výstupy připojit hodinový impulz (piezoelektrický rezonátor). O tom, zda čítač bude pracovat v roli časovače rozhoduje registr C/T. Registrem M0 a M1 je možné nastavit jeden ze 4 módu čítače. Mod0 - Pracuje jako osmibitový čítač (THn), jehož vstup je předělen (nastaveni spodními bity TLn), pětibitovým čítačem. Při přetečení nastavují příznakový bit v registru TCON. Viz Obrázek 7.
Obrázek 7 - MOD 0
MOD1 - Pracuje jako mód 0, ovšem s tím rozdílem, že oba čítače jsou 16bitové viz Obrázek 8.
Obrázek 8 - MOD 1
MOD2 - Umožňuje využívat tzv. hardwarové přednastavení čítače. To znamená, že když si například uložíme do registru THn hodnotu 7F, pak pak po přetečení hodnoty v registru TLn, se tento registr nastaví také na 7F (tedy hodnotu THn) viz Obrázek 9.
Obrázek 9 - MOD 2
MOD3 - v módu 3 je čítač/časovač0 rozdělen na dva samostatné 8-bitové čítače TH0 a TL0. Čítač TL0 využívá standardní signály C/T, GATE, TR0, INT0 a TF0. Čítač TH0 pracuje ve funkci časovače a je ovládán pouze řídícím bitem TR1. Při přetečení nastavuje příznak TF1. Pracuje-li čítač/časovač0 v módu 3, potom čítač/časovač1 může pouze generovat přenosovou rychlost pro sériový kanál nebo může být použit v případě, kdy nebudeme využívat přerušení viz Obrázek 10.
Obrázek 10 - MOD3
Časování CPU Strojový cyklus procesoru se skládá ze šesti stavů označených S1 až ,S6. Každý z těchto stavů je dále rozdělen do dvou fází P1 a P2. Strojový cyklus je tak tvořen 12 fázemi označovanými S1P1, S1P2 až S6P2 shodnými s periodami synchronizačního oscilátoru. Realizace jednocyklové instrukce je započata ve fázi S1P2, uložením přečteného operačního znaku do registru instrukcí. Ve stavu S4 stejného strojového cyklu se provádí čtení ještě jednoho bytu z následujícího paměťového místa. Pokud je přečtený byte využit v instrukci, tak se čítač instrukcí inkrementuje. Pokud je zpracovávaná instrukce jednobytová a jednocyklová, tak se přečtený byte ve stavu S4 ignoruje a čítač instrukcí se nemění. Instrukce je vykonána ve fázi S6P2. V případě jednobytové dvoucyklové instrukce je situace stejná jako v předcházejícím případě s tím, že čtení dalšího bytu je ignorováno a to třikrát. Jedinou výjimkou je instrukce přístupu do vnější paměti MOVX, která jako 1 bytová dvoucyklová instrukce negeneruje ve fázi S1P2 až S2P1 druhého cyklu signál ALE a nerealizuje oba výběry dalšího bytu. Celý cyklus čtení instrukce je na Obrázku 11. Tento odstavec je přepisem prezentace http://noel.feld.cvut.cz/vyu/scs/prezentace99/8051/
Obrázek 11 - Cyklus čtení instrukce
Stručné srovnání Intel 8051 s AT89C2051
Klady
Intel 8051 Zápory
Klady
Atmel AT89C2051 Zápory
Rozšířenost
Větší cena
Nižší cena
Menší paměť 2KB
Ověřené jádro
Pouzdro o velikosti 40 pinů
Menší pouzdro velikost 20 pinů
Nelze připojit vnější paměť
Mnoho variací
Analogový komparátor
Poměrně jednoduchá architektura Paměť typu LFASH
Oba mikropočítače patří do rodiny MCS51. Rovněž by bylo možné provést srovnání s některým z mikropočítačů firmy PIC. Ovšem dle mých zkušeností je to jak srovnávat notebooky stejné řady. Každý má své proti i pro. Někomu vyhovuje škála periférií, někomu menší pouzdro apod. Porovnání pouzder je vidět na Obrázku 12. Nespornou výhodou mikropočítačů založených na jádru Intelu 8051 je jak už jsem uvedl jejich jednoduchost, díky které je tento mikropočítač zařazen do výuky na mnoha středních školách a mnoho kutilů jej má doma a zkouší si na něm různé realizace. Jsem přesvědčen, že jádro 8051 tu ještě pár let bude. Abych vyjádřil svůj postoj k porovnávaným mikropočítačům, tak osobně mám větší vztah k Intelu 8051, neboť jsem s ním strávil řadu let na střední škole.
Obrázek 12 - Porovnání pouzder Intel 8051 a Atmel AT89C2051
Tento stručný referát se do značné míry opírá o skripta P. Ing Ladislava Škapy, jenž vyučuje na SPŠ Kratochvílova 7 Ostrava a o výtečný referát na téma Intel 8051, který je možné nalézt na stránkách http://noel.feld.cvut.cz/vyu/scs/prezentace99/8051/