Organizace paměti

Mikroprocesory řady 8051 mají oddělené paměťové prostory - paměť programu (ROM, příp.EPROM, EEPROM, FLASH) a paměť dat (RAM).Tyto paměťové prostory jsou přístupné různými instrukcemi.Paměťový prostor může být dále vnitřní,umístěný přímo na čipu mikroprocesoru, nebo vnější,prostřednictvím dalších externích součástek. U základního mikroprocesoru 8051 má vnitřní paměť programu velikost 4kB a vnější paměť má max.velikost 64kB. Mikroprocesor je vybaven vstupem EA, který řeší překrývání vnitřního a vnějšího paměťového prostoru (viz obr. 1). Je-li vstup EA=0, potom paměť programu je tvořena celou vnější pamětí. Je-li vstup EA=1,potom se instrukce v paměťovém prostoru 0000H až 0FFFH čtou z vnitřní paměti programu a mimo tento prostor (tedy z 1000H až FFFFH) ze zbývajích 60kB vnější paměti programu.

Struktura ROM
Obr. 1  Struktura paměťového prostoru programu

Překrývání vnitřního a vnějšího paměťového prostoru dat je odstraněno tím,že přístup do do každého prostoru je prováděn pomocí rozdílních instrukcí. Rozdělení vnitřní paměti dat (RAM) ukazuje obr. 2.

Rozdělení vnitřní paměti dat (RAM)
Obr. 2  Rozdělení vnitřní paměti dat (RAM)

Vnitřní paměť dat má u základního typu 8051 velikost 128 bytů a tvoří ji (bráno od spoda,tedy od adresy 00H): čtyři banky, z nichž každá má po osmi registrech (vždy R0 až R7). Registry z neaktivní banky nelze adresovat symbolickým označením (R0,R1..R7), ale pouze přímou adresou(absolutně). Za nimi následuje tzv.bitová oblast. Pro ni je vyhrazeno 16 bytů na adresách 20H až 2FH,bity z této oblasti jsou přímo adresovatelné (tzn.lze adresovat jednotlivé bity). V oblasti od 30H do 7FH se nachází zbývající vnitřní paměť,tu lze adresovat pouze po bytech (přímé i nepřímé adresování). Nad touto oblastí, tedy na adresách 80H až FFH se nacházejí registry speciálních funkcí(SFR) - viz obr.3.

Registry speciálních funkcí (SFR)

Obr. 3  Registry speciálních funkcí (SFR)
Jedno políčko tabulky představuje 1 byte. Po stranách tabulky jsou uvedeny hexadecimální adresy. Registry v prvním sloupci tabulky jsou bitově adresovatelné (toto je ale také do určité míry závislé na použitém překladači, některý překladač podporuje bitové adresování např. i u PCON pomocí symbolického označení - SMOD,PD,IDL), ostatní jsou adresovatelné pouze po bytech.


Podrobnější popis SFR naleznete v samostatné kapitole. Celkové uspořádání paměti dat je přehledně zobrazeno na obr.4.
Některé typy mikroprocesoru 8051 mohou být vybaveny rozšířenou vnitřní pamětí dat v adresovém prostoru 80H až FFH, potom je tato paměť s ohledem umístění speciálních funkčních registrů (SFR) v téže adresové oblasti přístupná pouze pomocí nepřímého adresování.

Struktura paměťového prostoru dat
Obr. 4  Struktura paměťového prostoru dat

Vnější paměť dat s kapacitou až 64kB je přístupná přes 16-bitový pomocný ukazatel dat DPTR.Určitou nevýhodou je to,že DPTR může být pouze naplně konkrétní adresou paměťového místa nebo inkrementován (DPTR může být zmenšován pouze odečítáním hodnoty od jeho dílčích částí DPH a DPL). Vnější paměť dat může být přístupná i s pomocí registrů R0 nebo R1 příslušné aktivní banky, které se využívají k 8-bitovému nepřímému adresování. Zapsáním 8-bitové hodnoty do výstupní brány P2, která představuje horní část adresy při adresování vnější paměti, vybereme jeden z 256 bloků paměti RAM o velikosti 256 bytů. Nepřímým adresováním pomocí registrů R0 a R1 potom lze zapsat nebo přečíst vybraný byte ve zvoleném bloku. Dolní část adresy vnější paměti se nastaví zapsáním 8-bitové hodnoty do výstupní brány P0 (horní+dolní část adresy = 8+8 bitů, tedy celkem 16-bitová adresa, tou lze tedy adresovat právě oněch 64kB paměti).Podrobnosti o přístupu do vnější paměti naleznete v samostatné kapitole.
Oblast registrů speciálních funkcí (SFR) je tvrořena 21 registry,které jsou umístěny v paměťovém prostoru na adresách 80H až FFH. Nachází se tedy za zbývající vnitřní pamětí RAM nebo ve stejném paměťovém prostoru jako leží rozšířená paměť dat u novějších typů 8051.Z tohoto důvodu jsou SFR přístupné pouze pomocí přímého adresování bytů nebo bitů.

Přímé a nepřímé adresování

Přímé adresování - adresa přímo udává paměťové místo, s kterým se bude dále pracovat Např. MOV A,20H , do akumulátoru uloží obsah bytu na adrese 20H
Nepřímé adresování - danou instrukcí neurčujeme přímo adresu paměťového místa (bytu nebo bitu), ale odvoláváme se na registr, ve kterém je adresa uložena. Při zápisu se před tento registr píše @.
Např. MOV A,@R1 , kde v R1 je uložena konstanta udávající adresu, z které se bude číst byte a ten se následně uloží do akumulátoru


POZN: V textu je někdy použito označení speciální funkční registry, někdy zase registry speciálních funkcí. Obě označení jsou si rovnocená, druhé označení se zdá být logičtější, první má zase blíže angl. originálu, záleží jen na vás, které budete používat.

Zpět na hlavní stránku povídání

Copyright © Michal Fuksa 2001