Technika cyfrowa

Technika cyfrowa – PIC16F84 – Organizacja pamięci

W procesorze PIC 16F84 znajdują się dwa bloki pamięci :

blok pamięci programu,

blok pamięci danych.

Organizacja pamięci programu.
Pamięć programu w omawianym procesorze jest pamięcią typu FLASH, co umożliwia wielokrotne zapisywanie tej pamięci. W praktyce umożliwia to wykorzystanie jednego procesora w wielu aplikacjach. PIC 16F84 posiada trzynastobitowy licznik programu co umożliwia adresowanie bloku pamięci o maksymalnym rozmiarze 8KB. Opisywany procesor posiada 1KB pamięci programu. Mikroprocesor posiada jeden wektor procedury przerwania (adres 04h), dlatego rozpoznanie przyczyny przerwania spoczywa na programie w części procedury przerwania.

Organizacja pamięci danych.
Pamięć danych jest podzielona na dwa obszary. Pierwszy obszar to rejestry specjalnego przeznaczenia ? SFR ( adresy od 00h do 0bh i od 80h do 8bh ), które służą do sterowania oraz kontrolowania mikroprocesora, drugi zaś to rejestry ogólnego przeznaczenia GPR służące jako pamięć operacyjna (statyczna) RAM . Pamięć danych jest podzielona na banki w PIC 16F84 znajdują się dwa banki, patrz rysunek). Bezpośredni dostęp do rejestrów jest możliwy w obrębie tylko jednego banku.

Aby przejść do przeciwnego banku należy zmienić bit IRP w rejestrze STATUS (nie dotyczy to adresowania pośredniego).

Opis rejestrów sterujących.
Rejestry i ich znaczenie:
INDF – Indirect addr. – rejestr pomocniczy przy adresowaniu pośrednim, tj. wpis (odczyt) do (z) tego rejestru jest równoznaczne z wpisem do komórki pamięci o adresie umieszczonym w rejestrze zwanym FSR,
OPTION – rejestr konfiguracji,
TMR0 – licznik,
PCL – młodsza cześć ( młodszy bajt ) licznika programu,
STATUS – rejestr flag ( znaczników ),
FSR – rejestr w którym umieszcza się adres do adresowania pośredniego,
PORTA – rejestr odzwierciedlający stan końcówek portu A,
PORTB – rejestr odzwierciedlający stan końcówek portu B,
TRISA – konfiguracja kierunku portu A,
TRISB – konfiguracja kierunku portu B,
EEDATA, EECON1, EEADR, EECON2 – rejestry służące do obsługi pamięci EEPROM wewnątrz procesora,.
PCLATH – starsza cześć ( tj. piec bitów ) licznika programu,
INTCON – konfiguracja przerwań.
Ciekawym może być fakt, iż rejestr PCL reprezentuje sobą mniej znacząca cześć licznika programu PC i dozwolone są manipulacje na tym rejestrze. Porty wejscia-wyjscia dostępne są poprzez rejestry PORTA oraz PORTB, przy czym kierunek poszczególnych linii ustala się wykorzystując parę rejestrów TRISA oraz TRISB. Rejestr TMR0 odzwierciedla zawartość licznika i dozwolone są na nim operacje arytmetyczno-logiczne. W rejestrze STATUS oprócz wspomnianych powyżej bitów przełączania banków pamięci znajdują się bity przedstawiające stan jednostki arytmetyczno-logicznej (odpowiednik powszechnie znanego rejestru znaczników) oraz bity informujące o przyczynie wyzerowania mikrokontrolera włączenie zasilania, zadziałanie układu WatchDog-a). Rejestr OPTION odpowiedzialny jest za konfiguracje peryferii jednostki centralnej natomiast rejestr INTCON konfiguruje prace systemu przerwań. Rejestry EEDATA, EEADR, EECON1, EECON2 umożliwiają obsługę wewnętrznej pamięci typu EEPROM. Dalej znajduje się 68 rejestrów ogólnego przeznaczenia (odpowiednik pamięci RAM), w których przechowywane są dane programu. Najczęściej używane rejestry są zaimplementowane w obu bankach jednocześnie by uniknąć kłopotliwego przełączania banków. Interesujący może być fakt, iż producent mikrokontrolera zapewnia tylko programowa zgodność różnych typów mikrokontrolerów w ramach jednej rodziny. Program napisany na mikrokontroler określonego typu musi być ponownie skompilowany na mikrokontroler innego typu by mógł pracować poprawnie, gdyż nie jest zapewniona sprzętowa zgodność adresów rejestrów sterujących.