Přístup do vnější paměti

Rozlišujeme dva druhy přístupu do externí paměti:
Při komunikaci s externí pamětí programu se využívá řídící signál mikroprocesoru PSEN (program store enable) pro čtení, při komunikaci s externí pamětí dat se využívá dvou řídících signálů - RD (čtení) a WR (zápis). Jejich význam je zakreslen v časových průbězích na obr.1 až 3.
Pro přístup do paměti programu se vždy používá 16-bitová adresa. Pro přístup do externí paměti dat se může používat buď 16-bitová adresa (MOVX @DPTR,A) nebo 8-bitová adresa (MOVX A,@Rr).
Pokud se používá 16-bitové adresace (pro paměť dat), vyšší byte adresy se vysílá na port 2, kde zůstává po celou dobu cyklu čtení nebo zápisu. Výstupní budiče portu 2 v tomto případě využívají velké zvyšovací odpory po celou dobu, kdy se portem vysílají log.1, které jsou obsaženy v adrese. Tak je tomu tedy během vykonávání instrukce MOVX @DPTR,A. Během této doby KO portu 2 (v SFR) nemusí obsahovat jedničky a obsah KO není ani nijak modifikován. Pokud po cyklu externí paměti okamžitě nenásleduje další cyklus externí paměti, nezměněný obsah KO portu 2 se vysílá znovu v dalším cyklu. Pokud se používá 8-bitové adresace (MOVX A,@Rr), obsah KO portu 2 (tedy příslušné SFR) zůstanou na pinech portu 2 po celou dobu cyklu externí paměti. To usnadňuje stránkování. V jiném případě je na portu 0 časově přepínán (multiplexován) nižší byte adresy s datovým bytem. Vnitřní signál CPU Adresa/Data ovládá oba FET tranzistory ve výstupních budičích portu 0 a pak tedy piny portu nejsou obvodem s otevřeným kolektorem a nevyžadují tím pádem externí zvyšovací rezistory. Signál ALE (Adress Latch Enable) by měl být použit k zachycení adresového byte do externího KO. Adresový byte je platný při sestupné hraně signálu ALE. Potom, v cyklu zápisu, datový byte který má být zapsán se vyšle na port 0 přesně před aktivací WR a zůstane zde, dokud není WR deaktivován. Během každého přístupu k externí paměti CPU zapíše FFH do KO portu 0, potom tedy mazání jakékoliv informace v KO portu 0 může být pozdrženo. Pokud uživatel zapisuje do portu 0 během vybavování dat v externí paměti (činnosti paměti), příchozí datový byte bude znehodnocen. Proto, nezapisujte data do portu 0, pokud se používá externí paměť programu. Přístup k externí paměti programu je umožněn, pokud jsou splněna některá z následujících podmínek: 1) signál EA je aktivní 2) čítač instrukcí PC (Program Counter) obsahuje číslo větší než FFFH Verze mikroprocesoru 8051, které nemají integrovánu žádnou paměť programu (ROM, FLASH EPROM) musejí mít signál EA trvale aktivován (pin EA připojen na zem). Program je pak celý načítán z externí paměti (max.64kB u standardní verze). Když CPU vykoná program v externí paměti, všechny piny portu 2 jsou nastaveny jako výstupní, a nemohou být používány pro normální v/v použití. Během vybavováni dat externího programu port 2 vysílá vyšší byte čítače instrukce (PC). Během tohoto vysíláni výstupní budiče portu 2 využívají velkého zvyšovacího odporu a to v případě, kdy bity čítače instrukcí (PC) jsou jedničkové.

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

Copyright © Michal Fuksa 2001