2. Struktura pamięci mikrokontrolera 17
Zewnętrzna pamięć RAM mikroprocesora przeznaczona jest do przechowywania dużych tablic danych lub zmiennych. Maksymalny rozmiar tej pamięd ograniczony jest podobnie jak i pamięci kodu programu do 64 kBajtów. Jednak w odróżnieniu do pamięci kodu programu, z której dane mogą być tylko odczytywane, zawartość zewnętrznej pamięci RAM można zmieniać. Sytuaq'ę tę przedstawiono na rysunku 2-7.
CODĘ
XDATA
OFFFFH
OFFFFH
adres komórki pamięd w.
DPTR+AL
lub
PC+A
MOVC
adres komórki pamięd w.
DPTR+A
256*P2 ♦ Rl
lub
Z
MOVX
Pamięć kodv programu ROM
Rejestry specjalne SFR |
Wewnętrzna pamięć RAM | ||
0 |
Wewnętrzna pamięć RAM |
Zewnętrzna
pamięć
RAM
Rys. 2-7 Adresowanie pamięci kodu programu ROM (CODĘ) i zewnętrznej pamięd RAM (XDATA)
W obu typach pamięd wymagany jest 16-bitowy adres komórek pamięd. Zarówno licznik rozkazów (PO i wskaźnikowy rejestr danych (DPTR) są rejestrami 16 bitowymi. Zewnętrzną pamięć danych RAM można również adresować za pośrednictwem dwóch 8-bitowych rejestrów (rysunek 2-8):
• portu P2 (8 bardziej znaczących bitów adresu Adr] 5 g),
• rejestru Ri. Ri=R0 lub Rl (8 mniej znaczących bitów adresu Adt7 q).
Zawartość portu P2 określa numer segmentu (strony) zewnętrznej pamięd RAM, a rejestr Ri adres komórki pamięd w obrębie segmentu (strony). Łącznie dostępnych jest 256 segmentów (stron) zewnętrznej pamięd RAM każdy o objętośd 256 bajtów, co pokrywa pełny zakres pamięd, tj. 64 kBajty.
Przykładowo przesłanie zawartośd komórki zewnętrznej pamięd RAM o adresie 9A5EH do akumulatora może być zrealizowane za pomocą:
• wskaźnikowego rejestru danych DPTR:
MOV DPTR.#5A8EH ;DITR er 5A8EH. tzn.
; - DPH<=5AH,
; DPL c= 8EI1
MOVX A.ODPTR ;A c= <DPTR>XDATA
Mikrokontroler 80(C)51 - programowanie
Wewnętrzna pamięć RAM mikroprocesora adresowana jest bajtowo, a bszar 20H..2FH również bitowo (adresy bitowe 0..127). Także rejestry specjalne (SFR) o adresach będących wielokrotnością 8, np. 80H, 88H, 90H,.. OFOH, 0F8H adresowane są bajtowo i bitowo (adresy bitowe 128..0FFH). Ma to istotne znaczenie z punktu widzenia listy instrukcji modyfikujących lub zmieniających bity, która przedstawiona jest w tabeli 8-1.
Tabela 8-1. Instrukcje modyfikacji bitów
Mnemonik instrukcji |
Operacje |
Tryby adresowania |
Liczba cykli maszyn. | |||
ANL |
C,bit |
C |
cr |
C and bit |
B |
2 |
ANL |
C./bit |
C |
<= |
C and (not bit) |
B |
2 |
ORL |
C,bit |
C |
<= |
C or bit |
B |
2 |
OKL |
C/bit |
C |
<z |
C or (not bit) |
B |
- 2 |
MOV |
C.bit |
C |
<= |
bit |
B |
1 |
MOV |
bit.C |
bit |
ca |
C |
B |
2 |
CLR |
C |
C |
ca |
0 |
B |
1 |
CLR |
bit |
bit |
c= |
0 |
B |
l |
setb |
C |
C |
cr |
1 |
B |
1 |
SETB |
bit |
bit |
cr |
1 |
B |
1 |
CPL |
C |
C |
Cr |
not C |
B |
1 |
CPL |
bit |
bit |
cr |
not bit |
B |
1 |
JBC |
bit.rcl |
Jeśli bit = 1 to PC cr PC +■ rei. bit = 0 |
B |
2 |
Pierwsza grupa instrukcji dotyczy instrukcji logicznych and', or' i not', druga instrukcji przesłań bitowych, a ostatnia instrukcja - skoków warunkowych omówionych przy przedstawianiu tabeli 7-1. Na podkreślenie zasługuje wyróżnienie znacznika przeniesienia (C), który musi być jednym z argumentów operacji międzybitowych. Adresowanie znacznika przeniesienia (C) możliwe jest w następujący sposób, np. wpisanie jedynki logicznej:
MOV C.#l .-podanie nazwy bitu
MOV PSW.C,#1 .podanie nazwy bitu w słowie statusowym (PSW)
MOV PSW.7,#1 ; podanie numeru bitu w słowie statusowym (PSW)
MOV 0DOH.7,*l ;podanie adresu bilu
Trzy pierwsze instrukcje używają adresu symbolicznego bitu znacznika przeniesienia (O. w ostatniej adres podany jest w sposób jawny.
Rozkazy dotyczące manipulacji bitów nie zawierają funkcji logicznej xor', nie ma więc możliwości bezpośredniego wykonania funkcji ’xor‘ dla dwóch wybranych bitów.
Mikrokontroler SOtOSI • Mmr>moun«i'