Zarejestruj banki i alokację pamięci stosu w mikrokontrolerze 8051

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Zbiór rejestrów ogólnego przeznaczenia (R0-R7) nazywany jest bankami rejestrów, które akceptują jeden bajt danych. Rejestr bankowy jest częścią Pamięć RAM w osadzonym mikrokontrolerów i służy do przechowywania instrukcji programu. Każdy mikrokontroler składa się z różnych banków pamięci, a każdy rejestr banku zawiera niepowtarzalny adres do rozpoznawania miejsca przechowywania.

Zarejestruj banki w 8051

Zarejestruj banki w 8051

Zarejestruj banki w 8051



Mikrokontroler 8051 składa się z czterech banków rejestrów, takich jak Bank0, Bank1, Bank2, Bank3, które są wybierane przez rejestr PSW (Program Status Word). Te banki rejestrów są obecne w wewnętrznej pamięci RAM mikrokontrolera 8051 i służą do przetwarzania danych, gdy mikrokontroler jest programowany.


Zmiana banków rejestrowych



Domyślnie mikrokontroler 8051 jest zasilany z banku rejestrów 0 i za pomocą słowa programowego (PSW) możemy przełączyć się na inne banki. Dwa bity PSW są używane do przełączania między bankami rejestrów. Dostęp do tych dwóch bitów uzyskuje się za pomocą adresowalnych bitów instrukcji SETB i CLR.

W oparciu o możliwe kombinacje RS1 i RS0 PSW, bank rejestrów jest odpowiednio zmieniany, tj. Jeśli RS1 i RS0 mają wartość 0, to wybierany jest Bank 0. Podobnie, Bank1, 2 i 3 są wybierane zgodnie z wartościami RS1 i RS0.

Alokacja pamięci stosu w mikrokontrolerze 8051

Stos jest obszarem pamięci o dostępie swobodnym (RAM) przeznaczonym do tymczasowego przechowywania wszystkich parametrów zmiennych. Stos jest również odpowiedzialny za przypominanie o kolejności wywołania funkcji, aby można było ją poprawnie zwrócić. Za każdym razem, gdy funkcja jest wywoływana, parametry i zmienne lokalne z nią powiązane są dodawane do stosu (PUSH). Gdy funkcja zwraca, parametry i zmienne są usuwane („POP”) ze stosu. Dlatego rozmiar stosu programu zmienia się w sposób ciągły podczas jego działania.


Rejestr używany do uzyskiwania dostępu do stosu jest nazywany rejestrem wskaźnika stosu. Wskaźnik stosu to mały rejestr używany do wskazywania stosu. Kiedy wepchniemy coś do pamięci stosu, wskaźnik stosu rośnie.

Alokacja pamięci stosu w mikrokontrolerze 8051

Alokacja pamięci stosu w mikrokontrolerze 8051

Przykład

Po włączeniu mikrokontrolera 8051, wartość wskaźnika stosu zawiera domyślnie 07, jak pokazano na powyższym rysunku. Jeśli wykonamy operację „PUSH”, adres wskaźnika stosu zostanie zwiększony i przesunięty do innego rejestru. Aby uniknąć tego problemu, przed uruchomieniem programu musimy przypisać inną lokalizację adresu do wskaźnika stosu.

Operacja PUSH

„PUSH” służy do pobierania wartości z dowolnego rejestru i zapisywania w adresie początkowym wskaźnika stosu, tj. 00h za pomocą operacji „PUSH”. A dla następnego „PUSH” zwiększa o +1 i przechowuje wartość w następnym adresie wskaźnika stosu, tj. 01h.

Operacja PUSH stosu

Operacja PUSH stosu

Operacja PUSH oznacza (First in First out)

Przykład: WAP w języku asemblera dla operacji PUSH

0000h
MOV 08h, # 21h
MOV 09h, # 56h
PUSH 00h
PUSH 01h
KONIEC

Obsługa POP

Służy do umieszczania wartości z maksymalnego adresu wskaźnika stosu na adres dowolnego innego rejestru. Jeśli użyjemy tego „POP” ponownie, to zmniejszy się on o 1, a wartość przechowywana w dowolnym rejestrze będzie podawana jako „POP”.

Operacja POP w stosie

Operacja POP w stosie

Operacja POP oznacza „Last in First out”.

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
POP 0EH
KONIEC

Rejestry mikrokontrolera 8051

Jeśli wykonamy jakąkolwiek operację, czy to dodawanie, czy odejmowanie, to operacji tych nie da się wykonać bezpośrednio w pamięci i dlatego są wykonywane przy użyciu rejestrów. Istnieją różne typy plików rejestruje się w mikrokontrolerze 8051 .

Rejestry te dzielą się na dwa typy w zależności od ich operacji:

• Rejestry ogólnego przeznaczenia

• Rejestry funkcji specjalnych

Rejestry ogólnego przeznaczenia

Jak omówiliśmy wcześniej w tym artykule, istnieją cztery różne rejestry bankowe, z których każdy ma 8 adresowalnych 8-bitowych rejestrów i jednocześnie można uzyskać dostęp tylko do jednego rejestru bankowego. Ale zmieniając numer rejestru bankowego w rejestrze flag, możemy uzyskać dostęp do innych rejestrów bankowych, które zostały omówione wcześniej w tym artykule wraz z koncepcja przerwania w 8051 .

Rejestry funkcji specjalnych

Rejestry funkcji specjalnych, w tym akumulator, rejestr B, wskaźnik danych, PCON, PSW itp., Są przeznaczone do z góry określonego celu podczas produkcji z adresami od 80H do FFH, a obszar ten nie może być używany do przechowywania danych lub programu. Rejestry te mogą być implementowane poprzez adresy bitowe i rejestry adresowe bajtów.

Typy rejestrów funkcji specjalnych

8051 składa się z czterech rejestrów funkcji specjalnych związanych z wejściem / wyjściem, w których znajdują się łącznie 32 linie I / O. Rejestry funkcji specjalnych kontrolują wartości odczytywane z linii I / O i rejestry funkcji specjalnych, które sterują działaniem 8051. Rejestry pomocniczych funkcji specjalnych nie są bezpośrednio połączone z 8051 - ale w rzeczywistości bez tych rejestrów - 8051 nie może działać prawidłowo. Zestaw rejestrów 8051 jest wyjaśniony poniżej.

Rejestr zestawu mikrokontrolera 8051

Ustawienie stałej wartości w rejestrze nazywa się zestawem rejestrów. Wartości są ustawiane w rejestrach za pomocą zestawu instrukcji. 8051 postępuje zgodnie z instrukcjami CISC z architekturą „Harvard”. Plik CISC oznacza złożone przetwarzanie zestawu instrukcji . Różne typy instrukcji w mikrokontrolerze 8051 obejmują:

  1. Instrukcje arytmetyczne
  2. Instrukcje warunkowe
  3. Instrukcje wywołania i skoku
  4. Instrukcje pętli
  5. Instrukcje logiczne
  6. Instrukcje dotyczące kruszców

1. Instrukcje arytmetyczne

Instrukcje arytmetyczne wykonują kilka podstawowych operacji, takich jak:

  • Dodanie
  • Odejmowanie
  • Mnożenie
  • Podział
Instrukcje arytmetyczne w mikrokontrolerze 8051

Instrukcje arytmetyczne w mikrokontrolerze 8051

Przykłady:

za. Dodanie:

Org 0000h
MOV R0, # 03H // przesuń wartość 3 to rejestr R0 //
MOV A, # 05H // przesuń wartość 5 w akumulatorze A //
Dodaj A, 00H // wartość akumulatora „5” z 0 i zapisz na akumulatorze //
KONIEC

b. Odejmowanie:

Org 0000h
MOV R0, # 03H // przesuń wartość 3 to rejestr R0 //
MOV A, # 05H // przesuń wartość 5 w akumulatorze A //
SUBB A, 03H // A = 5-3 końcowa wartość to 2 przechowywane w akumulatorze A //
KONIEC

C. Mnożenie:

Org 0000h
MOV R0, # 03H // przesuń wartość 3 to rejestr R0 //
MOV A, # 05H // przesuń wartość 5 w akumulatorze A //
MUL A, 03H // A = 5 * 3 końcowa wartość to 15, przechowywana w akumulatorze A //
KONIEC

D. Division:

Org 0000h
MOV R0, # 03H // przesuń wartość 3 to rejestr R0 //
MOV A, # 15H // przesuń wartość 5 w akumulatorze A //
DIV A, 03H // A = 15/3 końcowa wartość to 5 zapisana w akumulatorze A //
KONIEC

2. Instrukcje warunkowe

CPU może wykonywać instrukcje w oparciu o warunek, sprawdzając status jednobitowy lub status bajtu nazywany jest instrukcjami warunkowymi, takimi jak:

Sprawdzanie statusu pojedynczego bitu w rejestrze adresowalnym bitowo

JB - skocz, jeśli poniżej

JNB - skocz, jeśli nie powyżej

Aby sprawdzić stan przenoszenia bitów

JC - skacz, jeśli masz flagę

JNC-jump, jeśli nie ma przeniesienia

Aby sprawdzić stan akumulatora 0 lub 1

JZ - skok, jeśli flaga zerowa

JNZ - skocz, jeśli nie zero

Chodzi o rejestr ustawiony w mikrokontrolerze 8051 i ich alokację pamięci stosu. Mamy nadzieję, że ten artykuł dostarczył Ci niezbędnych informacji na ten temat, a także kilka bardzo interesujących programów towarzyszących każdemu tematowi. Możesz również napisać do nas, aby uzyskać pomoc w zakresie kodowanie mikrokontrolera a także o najnowsze projekty dotyczące mikrokontrolera .