Pamięć w 8051

Zerknijmy na to, jaką pamięć mamy w 8051.

Mamy pamięć wewnętrzną. Każdy 8051 ma pamięć wewnętrzną, składającą się z RAMu i SFR1). Może mieć również wewnętrzną pamięć kodu - np jakiś EEPROM - i wtedy nie musi sięgać na zewnątrz po kod programu.

Source: www.zntu.edu.ua/base/lection/rpf/lib/zhzh03/8051_tutorial.pdf

Zerknijmy na pamięć wewnętrzną w 8051. Pierwsze 0x20h bajtów to banki rejestrów. Mamy do nich dostęp albo bezpośrednio, za pomocą adresu w pamięci, albo odwołując się do nich jak do rejestrów (tzn R0, R1 itp). Warto zwrócić uwagę na to, że manipulując w SFR można wybrać, z którego banku się aktualnie korzysta.

Niżej mamy pamięć, którą możemy adresować bitowo. Przyjemna i wygodna sprawa.

Jeszcze niżej, na żółto, znajduje się przestrzeń pamięci ogólnego przeznaczenia, w której również może znajdować się stos. Z tym stosem to jednak jest grubsza sprawa.

Kwestia stosu

Po inicjacji wskaźnik stosu jest ustawiany na 0x07h. Tak, to będzie R7 w zerowym banku rejestrów. To dlatego, że SP wskazuje na obecny element na stosie, czyli następne elementy są wstawiane dalej. Co więcej, SP jest inkrementowany. Stos w 8051 rośnie w górę, a nie w dół.

Kłopot zaczyna się w momencie, gdy chcemy korzystać z innych banków rejestrów. Pierwszy element na stosie wyląduje przecież w 0x08h, a to jest R0 z pierwszego banku rejestrów. Rozwiązanie jest proste - trzeba na początku ustawić SP na jakąś odleglejszą wartość, np 0x30h. Problemem oczywiście jest wtedy mniejsza pojemność stosu, ale z tym musimy już jakoś sobie poradzić.

SFR

Source: www.zntu.edu.ua/base/lection/rpf/lib/zhzh03/8051_tutorial.pdf SFR zawiera rejestry specjalnego przeznaczenia. Niektóre są nawet adresowane bitowo! Znajdziemy tam m.in. porty od P0 do P3, akumulator, rejestr B2), kontrolę licznika czasu, DPTR itp. Więcej informacji można znaleźć w 8051_tutorial.pdf.

Dlaczego tam jest tyle wolnych miejsc? Żeby było gdzie wsadzić nowe elementy dodawane przy rozbudowie 8051 w nowe wersje, których było dość dużo.

SFR może być adresowany tylko za pomocą trybu adresowania bezpośredniego.

Pamiętajmy - 8051 wykorzystuje architekturę harwardzką w kwestii pamięci. Oznacza to, że przestrzeń na kod i przestrzeń danych są rozgraniczone. Przestrzeń kodu jest tylko do odczytu.

Źródła

1) Special Function Register
2) Rejestru B używamy do przechowywania tymczasowych informacji, jest on również wykorzystywany podczas mnożenia i dzielenia
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki