52__6. RAM czy SFR ?
Rejestr ten stosowany jest do adresowania zewnętrznej pamięci danych RAM lub pamięci programu ROM w trybie indcksowo-rejestrowo pośrednim, np:
MOVX A,@DPTR ;A <- (DPTR)xdata
MOVC A,@A+DPTR ;A <- (A+DPTR)code
W układach sterowania do zapamiętywania stanu obiektu wystarcza informacja dwu-stanowa. Silnik jest włączony lub wyłączony, suwnica jest w obszarze roboczym lub przesunęła się do końca - do ogranicznika, parametry wprowadzone przez użytkownika są poprawne lub błędna itd. Do pamiętania takich informacji wygodniej użyć jednego bitu niż całego bajtu. Przewidując takie sytuacje, konstruktorzy mikrokontrolera 8051 zaproponowali użytkownikom możliwość pamiętania danych bajtowo i bitowo. Dostępnych jest 256 indywidualnie adresowanych bitów' w' dwóch segmentach:
• w' wewnętrznej pamięci RAM o adresach od 20h do 2Fh. 16 bajtów każdy po 8 bitów daje łącznie 128 bitów tak jak przedstawiono to na rysunku 6-6. Wszystkie bity adresowane są przez:
-► przez podanie adresu bitu z przedziału: OH .. 7Fh,
—» przez odwołanie bajtowe i wskazanie numeru bitu w bajcie, np. bity od 0 do 7 adresowane są jako 20h.0.. 20h.7, od 8 do OFh jako 21h.U .. 21h.7 itd.
a d res dziesiętnie:
7Fh 30h |
Obszar o |
golnie dostępny | |||
2Fh |
7Fh |
7Ch |
78h | ||
2Eh |
77h |
74h |
70h | ||
24 h |
27h |
24h |
20h | ||
21 h |
OFh |
OCh |
8 | ||
20h |
7 |
4 |
0 | ||
lFh |
Rejestr R7 |
Bank | |||
18h |
Rejestr R0 |
rejestrów RB3 |
127
48
47
46
36
33
32_
31
24
adres szesnastkowo:
Segment bitowy zawierający 128 bitów' o adresach: 0..7Fh
Rys. 6-6
Fragment wewnętrznej pamięci RAM z segmenten bitowrym.
• w tych wszystkich rejestrach specjalnych SFR, których adresy podzielne są przez 8 bez reszty, tzn. o adresie 80h, 88h,.., OFOh i 0F8h, tak jak zaznaczono to na rysunku 6-4. Bity te mają adresy od 80h do OFFh. Taki sposób dostępu do wybranych rejestrów specjalnych SFR jest bardzo użyteczny, ponieważ przeważnie każdy bit takiego rejestru odpowiada za inną funkcję pełnioną przez wewnętrzne układy. Ułatwia programowanie i czyni program czytelniejszym.
Łącznie w mikrokontrolerach rodziny '51 dostępnych jest 256 bitów o adresach od 0 do OFFh.
Operacje bitowe znajdują swoje odzwierciedlenie w liście instrukcji mikrokontrolera. Tak jak w przesłaniach bajtowych uprzywilejowaną rolę odgrywa akumulator A, taką samą rolę w operacjach bitowych pełni znacznik przeniesienia C:
MOV |
C,bit |
C <- (bit) | |
MOV |
bit,C |
(bit) <- C | |
SETB |
C |
C <— 1, |
ustawienie znacznika C |
SETB |
bit |
(bit) <- 1, |
ustawienie bitu |
CLR |
C |
C<-0, |
zerowanie znacznika C |
CLR |
bit |
(bit) <- 0, |
zerowanie bitu |
Wybór pierwszego banku rejestrów RB1 wymaga ustawienia bitu RSO i zerowania bitu RSl w rejestrze słowa statusowego PS W. Operację te można wykonać następująco:
-» bitowo: |
SETB |
RSO |
;RS0 <- 1, |
symbol bitu |
CLR |
RSl |
;RS1 <- 0 | ||
lub |
SETB |
PS W. 3 |
;PSW.3«-1, |
numer bitu i |
CLR |
PSW.4 |
;PSW.4 <- 0, |
symbol rejestru | |
lub |
SETB |
0D0h.3 |
;(0D0h.3) <- 1 |
numer bitu i |
CLR |
0D0h.4 |
;(0D0h.4) <- 0 |
adres rejestru | |
lub |
SETB |
0D3h |
;(0D3h) 1 |
adres bitu |
CLR |
0D4h |
;(0D4h) <- 0 | ||
—> bajtowo: |
MOV |
PSW,#18h |
;PSW <- 18h |
Obszar wewnętrznej pamięci RAM o adresach 30h .. 7Fh i cały segment pamięci o adresach 80h.. OFFh przewidziany jest do zastosowań ogólnych, np. przechowywania danych, wyników obliczeń, wydzielenia jako stos itp. Dostęp do tego obszaru możliwy jest jedynie bajtowo.