Systemy wbudowane - rejestruje bank / stos
Mikrokontroler 8051 ma łącznie 128 bajtów pamięci RAM. Omówimy alokację tych 128 bajtów pamięci RAM i zbadamy ich użycie jako stosu i rejestru.
Alokacja miejsca w pamięci RAM w 8051
128 bajtów pamięci RAM w 8051 ma przypisane adresy od 00 do 7FH. Można uzyskać do nich bezpośredni dostęp jako lokalizacje pamięci i są podzielone na trzy różne grupy w następujący sposób -
32 bajty od lokalizacji 00H do 1FH są zarezerwowane dla banków rejestrów i stosu.
16 bajtów od 20H do 2FH jest zarezerwowanych na adresowalną bitowo pamięć do odczytu / zapisu.
80 bajtów od 30H do 7FH jest używanych do odczytu i zapisu; nazywa się toscratch pad. Pamięć RAM tych 80 lokalizacji jest powszechnie wykorzystywana do przechowywania danych i parametrów przez programistów 8051.
Zarejestruj banki w 8051
Łącznie 32 bajty pamięci RAM są zarezerwowane dla banków rejestrów i stosu. Te 32 bajty są podzielone na cztery banki rejestrów, w których każdy bank ma 8 rejestrów, R0 – R7. Lokalizacje RAM od 0 do 7 są zarezerwowane dla banku 0 R0 – R7, gdzie R0 to lokalizacja RAM 0, R1 to lokalizacja RAM 1, R2 to lokalizacja 2 itd., Aż do komórki pamięci 7, która należy do R7 banku 0.
Drugi bank rejestrów R0 – R7 zaczyna się w lokalizacji RAM 08 i przechodzi do lokalizacji OFH. Trzeci bank R0 – R7 zaczyna się od komórki pamięci 10H i przechodzi do lokacji do 17H. Wreszcie, lokalizacje RAM od 18H do 1FH są zarezerwowane dla czwartego banku R0 – R7.
Domyślny bank rejestru
Jeśli lokalizacje RAM 00–1F są zarezerwowane dla czterech banków rejestrów, do którego banku rejestru R0 – R7 mamy dostęp po włączeniu 8051? Odpowiedź brzmi: bank rejestru 0; to znaczy, lokalizacje RAM od 0 do 7 są dostępne pod nazwami R0 do R7 podczas programowania 8051. Ponieważ dużo łatwiej jest odnosić te lokalizacje RAM przez nazwy takie jak R0 do R7, niż przez ich lokalizacje w pamięci.
Jak zmienić banki rejestru
Bank rejestru 0 jest domyślny, gdy 8051 jest włączony. Do innych banków możemy przejść za pomocą rejestru PSW. Bity D4 i D3 PSW są używane do wyboru pożądanego banku rejestrów, ponieważ można uzyskać do nich dostęp za pomocą adresowalnych instrukcji bitowych SETB i CLR. Na przykład „SETB PSW.3” ustawi PSW.3 = 1 i wybierze rejestr banku 1.
RS1 | RS2 | Wybrano bank |
---|---|---|
0 | 0 | Bank0 |
0 | 1 | Bank1 |
1 | 0 | Bank2 |
1 | 1 | Bank3 |
Stos i jego operacje
Stos w 8051
Stos jest częścią pamięci RAM używanej przez procesor do tymczasowego przechowywania informacji, takich jak dane lub adres pamięci. CPU potrzebuje tego obszaru pamięci, biorąc pod uwagę ograniczoną liczbę rejestrów.
Jak uzyskuje się dostęp do stosów
Ponieważ stos jest częścią pamięci RAM, wewnątrz procesora znajdują się rejestry wskazujące na niego. Rejestr używany do uzyskiwania dostępu do stosu jest znany jako rejestr wskaźnika stosu. Wskaźnik stosu w 8051 ma szerokość 8 bitów i może przyjmować wartość od 00 do FFH. Gdy 8051 jest inicjalizowany, rejestr SP zawiera wartość 07H. Oznacza to, że lokalizacja 08 w pamięci RAM jest pierwszą lokalizacją używaną dla stosu. Operacja przechowywania rejestru procesora w stosie jest znana jako plikPUSH, a pobranie zawartości ze stosu z powrotem do rejestru procesora nazywa się a POP.
Wepchnięcie do stosu
W 8051 wskaźnik stosu (SP) wskazuje ostatnio używaną lokalizację stosu. Kiedy dane są umieszczane na stosie, wskaźnik stosu (SP) jest zwiększany o 1. Gdy wykonywana jest funkcja PUSH, zawartość rejestru jest zapisywana na stosie, a SP jest zwiększane o 1. Aby wypchnąć rejestry na stos, możemy muszą używać swoich adresów RAM. Na przykład instrukcja „PUSH 1” umieszcza rejestr R1 na stosie.
Wyskakujące ze stosu
Umieszczenie zawartości stosu z powrotem w danym rejestrze jest odwrotnością do procesu odkładania. Przy każdej operacji pop górny bajt stosu jest kopiowany do rejestru określonego przez instrukcję, a wskaźnik stosu jest zmniejszany raz.