8051 - Paměť
Organizace a využívání paměti
Mikroprocesory s jádrem 8051 jsou postaveny na Hardwardské architektuře. To znamená, že paměť dat je oddělena od paměti programu. Paměť programu se u tohoto čipu může nacházet nejen v součástce samotné, ale také v externí paměti. Toho se využívá například ve vývojových deskách…
Aby se vnitřní paměť programu nepřekrývala s tou vnější, je na některých součástkách vyveden pin EA. Je-li tento pin nulován, pak se instrukce načítají pouze z vnější paměti. Je-li v log. „1“, pak se až po adresu FFFH užije vnitřní paměť.
Aby ke stejné situaci nedocházelo při užití vnější programové paměti, užívají se pro přístup do této paměti speciální instrukce přesunu.

Ale ani s využitím vnitřní paměti dat to není úplně jednoduché. Situaci ilustruje obrázek výše. Adresy 00H – 1FH obsazují registry. Tyto registry využíváme k vlastním výpočtům. Pokud využíváme tyto registry (užitím symbolických označení R1-R7 + změny bank, musíme mít na vědomí, že přepisem dat na jejich adresách vlastně dojde k přepisu samotných registrů, takže POZOR!!!
Adresy 20H – 7F můžeme používat bez výčitek svědomí. Je vhodné si ty nejpoužívanější pojmenovat nějakým smysluplným jménem. Např.:
sec1 EQU 59D
Tato operace, která je významná pouze pro překladač – nikoliv pro výsledný kód nám hodně usnadní přehlednost kódu. Místo :
MOV 59D, #30
což znamená „přesuň číslo 30 na paměťové místo s adresou 59
Můžeme psát
MOV sec1, #30
což znamená totéž
Další paměťová místa už obsazují speciální registry, řídící jednotlivé periferie, nebo činnost samotného procesoru. Například zápisem
MOV SBUF, #30
odešleme po sériové lince číslo 30H (tedy pokud je správně nastavena)
Dnes se budeme zabývat pouze třemi z těchto registrů. Jsou to ACC (střadač – accumulator), B (regist B), PSW (Stavové slovo mikroprocesoru)
A(CC) – ACUMULATOR
Je základní řídící registr aritmeticko-logické jednotky. Tento registr používáme ve valné většině aritmetických i jiných operací (skokových, přesunových apod.) Tvoří vždy jeden z operandu aritmetických operací.
B – B REGISTER
Obsahuje druhý operand některých aritmetických funkcí (násobení, dělení) – druhým je střadač. A pak také výsledek těchto operací (opět jednu číst výsledku)PSW - Stavové slovo
Stavové slovo obsahuje informace o stavu procesoruC - Carry - bit se nastaví když dojde při aritmetické operaci k přenosu – (číslo větší než FF, záporné číslo, operace rotací…)
AC - Auxiliary Carry - částečný přenos – nastaví se pokud dojde k přenosu mezi třetím a čtvrtým bitem (počítáno od nultého)
F0 - Uživatelský příznak - může být uživatelem libovolně využit
RS0, RS1 - určují banku používaných registrů
| Paměť | |||
| 00H – 07H | |||
| 08H – 0FH | |||
| 10H – 17H | |||
| 18H – 1FH |
Komentovat článek
Komentáře k článku
Původní architektura mikroprocesorů I8051 není hardwardská, jak se lecke mylně píše. Aby to mohla být hardwardská architektura, nestčí jen oddělit datovou a kódovou pamět, ale tok dat a instrukcí musí probíhat po separátních sběrnicích. To 8051 zjevně nemá, neboť u ní existuje multiplex mezi daty a instrukcemi.
Mno, trocha je to pomiesane... Tych pamatovych priestorov je v 8051 trocha viac. Pin /EA sluzi na prepinanie programovej pamate (aj to este zavisi od nastavenia fuses pri programovani), ktora nema nic spolocne s internou datovou pamatou, externou datovou pamatou ani oblastou SFR... Ale to je naozaj na dlhsie rozpravanie...