26 4. Jak odczytywać i zapisywać dane ...
instrukcja: |
zapis binarny instrukcji: |
wykonywana operacja |
MOVC A,@A+DPTR |
1001 OOllb |
A<-(A-f-DPTR)CODE 1 |
Aby wykonać dodawanie zawartości 8-bitowego akumulatora A i 16-bitowego wskaźnikowego rejestru danych DPTR, zawartość akumulatora A rozszerzana jest znakowo z 8 bitów do 16 bitów o bajt równy 00. Adresowanie pamięci programu określane jest jako adresowanie za pomocą rejestrów bazowych (w tym przypadku za pośrednictwem wskaźnikowego rejestru danych DPTR) lub indeksowo-rejestrowo pośrednie.
wykonywanej instrukcji
Rys. 4-2 Pobieranie danych z pamięci programu i wymiana danych z/do zewnętrznej pamięci RAM.
3. sumą zawartości 8-bitowego akumulatora A i 16-bitowego licznika rozkazów PC. Podobnie jak poprzednio liczba zawarta w akumulatorze A traktowana jest jako liczba całkowita bez znaku:
instrukcja: |
zapis binarny instrukcji: |
wykonywana operacja |
MOVC A,@A+PC |
1000 OOllb |
A <— (A+PC)code |
Zawartość akumulatora A jest rozszerzana znakowo z 1 do 2 bajtów. Różnica między tym, a poprzednim rozkazem polega na tym, że po pobraniu kodu instrukcji licznik rozkazów PC zwiększany jest o 1. W ten sposób licznik rozkazów' PC wskazuje na pierwszy bajt następnej instrukcji znajdującej się po wykonywanym rozkazie
MOVC A,@A+PC. W podanej instrukcji pamięć programu adresowana jest za pomocą rejestru bazowego jakim jest licznik rozkazów PC (adresowanie indeksowo-rejestrowo pośrednie).
W dwóch ostatnich rozkazach wskaźnikowy rejestr danych DPTR i bieżąca wartość licznika rozkazów PC traktowane są jako wskaźniki (adresy początkowe) do tablic umieszczonych w pamięci programu ROM. Zawartość akumulatora A traktowana jest jako indeks tablicy. Wielkość tych tablic ograniczona jest do 256 bajtów, ze względu na 8-bitową zawartość akumulatora A. Oba rozkazy stosowane są również bardzo często do pobierania z pamięci programu kolejnych znaków komunikatów, np: wyświetlanych na polu odczytowym modułu dydaktycznego, przyrządu pomiarowego, sterowanego urządzenia itp.
Zewnętrzna pamięć danych RAM, jeśli istnieje potrzeba jej dołączenia do mikrokontrolera wskutek zbyt małej wewnętrznej pamięci RAM, adresowana jest w dwojaki sposób:
1. wskaźnikowym rejestrem danych DPTR:
instrukcja: |
zapis binarny instrukcji: |
wykonywana operacja |
MOVX ©DPTR,A |
1111 OOOOb |
(DPTR)xdata <- A |
MOVX A,©DPTR |
1110 OOOOb |
A 4- (DPTR)xdata |
Jest to standardowy sposób odwoływania się do pamięci. 16-bitowy wskaźnikowy rejestr danych DPTR zawiera pełny 16-bitowy adres komórek pamięci. Ponieważ rejestr ten tworzą dw?a połączone rejestry:
• DPH jako 8-bitowa, bardziej znacząca część rejestru DPTR,
• DPL jako 8-bitow'a, mniej znacząca część rejestru DPTR
W trakcie adresowania komórek pamięci stan obu rejestrów pojawia się na liniach portu PO (stan rejestru DPL) i P2 (stan rejestru DPH), tak jak przedstawiono na rysunku 4-3. Multipleksowanie stanu obu