42 6. KAM czy SFR ?
MOV R0,#80h ;R0 *- 80h
MOV @RO,A ;(R0) <- A
Przy adresowaniu pośrednim nie należy zapominać o znaku ® przed nazwą właściwego rejestru. Tym rejestrem może być tylko rejestr RO lub Rl.
komórkę |
pamięci. Przesłanie |
zawartości komórki |
wewnętrznej |
pamięci |
KAM o adresie 4Dh |
do akumulatora można |
zrealizować |
dwojako: | |||
MOV |
A,4Dh |
;A (4Dh) | |
lub | |||
MOV |
Rl,#4Dh |
;R1 <- 4Dh | |
MOV |
A,@R1 |
;A <— (Rl) |
• bezpośrednie i pośrednie w przypadku wewnętrznej pamięci RAM o adresach 0 .. 7Fh. Dla tej części pamięci RAM dozwolone są oba tryby adresowania, ponieważ adres jednoznacznie wskazuje, na
Graficznie oba sposoby, tryby adresowania wewnętrznej pamięci RAM i rejestrów' specjalnych SFR przedstawiono na rysunku 6-2.
OFFh |
rejestry |
wewnętrzna |
rejestry |
wewnętrzna | |
specjalne |
pamięć |
specjalne |
pamięć | ||
80h |
SFR |
RAM |
SFR |
RAM |
OFFh
80h
wewnętrzna |
7Fh |
wewnętrzna |
7Fh |
pamięć |
pamięć | ||
RAM |
0 |
RAM |
0 |
Rys. 6-2 Adresowanie wewnętrznej pamięci RAM i rejestrowi specjalnych SFR.
Kolizja adresów wewnętrznej pamięci RAM i rejestrów specjalnych w mikrokontrolerach 8052 i nowszych (np. 80515/535) została usunięta przez właściwy dla danego obszaru sposób adresowania:
• bezpośrednio i pośrednio wewnętrznej pamięci RAM o adresach 0 .. 7Fh; w adresowaniu pośrednim nie zapominając o znaku
• tylko pośrednio wewnętrznej pamięci RAM o adresach 80h .. OFFh,
• tylko bezpośrednio rejestrów specjalnych SFR
Podane sposoby adresowania dotyczą wszystkich mikrokontrolerów rodziny 51.
W 128-bajtowym segmencie wewnętrznej pamięci RAM o adresach od 0 do 7Fh rozmieszczone są rejestry RO i Rl, które wykorzystywane są przy adresowaniu pośrednim. Oprócz nich konstruktorzy mikrokontrolera dali użytkownikom do dyspozycji 6 następnych rejestrów oznaczonych kolejnymi symbolami cyfrowymi: R2, R3, R4, R5, R6 i R7. W ten sposób mamy w mikrokontrolerze 8 rejestrów. Osiem rejestrów (RO, R7) tworzy bank rejestrów i takich banków mamy 4 oznaczonych symbolami RBO (bank numer 0),.. , RB3 (bank numer 3).
adres szesnastkowo: adres dziesiętnie:
7Fh 30h |
Obszar ogólnie dostępny |
1127 48 | ||
2Fh |
Obszar |
47 | ||
o specjalnym | ||||
20h |
przeznaczeniu |
32 | ||
lFh |
Rejestr R7 |
Bank |
31 | |
rejestrów | ||||
18h |
Rejestr RO |
RB3 |
24 | |
17h |
Rejestr R7 |
Bank |
23 | |
po zerowaniu |
rejestrów | |||
procesora |
l()h |
Rejestr RO |
RB2 |
16 |
linią RST |
OFh |
Rejestr R7 |
Bank |
05 |
(ReSeT) |
rejestrów | |||
wskaźnik stosu |
8 |
Rejestr RO |
RB1 |
8 |
SP=7 |
7 |
Rejestr R7 |
7 | |
6 |
Rejesti R6 |
6 | ||
5 |
Rejestr R5 |
Bank |
5 | |
4 |
Rejestr R4 |
rejestrów |
4 | |
3 |
Rejestr R3 |
RBO |
3 | |
2 |
Rejestr R2 |
2 | ||
1 |
Rejestr Rl |
1 | ||
0 |
Rejestr RO |
0 |
Rys. 6-3 Rozmieszczenie rejestrów RO, .. , R7 w wewnętrznej pamięci RAM mikrokontrolera. .
Z rysunku 6-3 wynika, że wszystkie banki rejestrów rozmieszczone są w początkowym obszarze wewnętrznej pamięci RAM mikrokontrolera. Oznacza to, że do każdego z rejestrów można odwołać się przez: