19
2. Struktura pamięci mikrokontrolera
Stan portu 1*2 równy jest bardziej znaczącemu bajtowi wskaźnikowego rejestru danych (DPTR), rejestrowi DPH, a port PU mniej znaczącemu bajtowi rejestru DPTR, rejestrowi DPL. Stan len przedstawiono na rysunku 2-9.
• portu P2 i rejestru R1:
MOV 1*2,»5AH ;P2 c= 5AH, adres segmentu (strony)
MOV Rl.#8EH ;R1 <= 8EH, adres w obrębie segmentu (strony)
MOVX A,ORl ;A <= (5AOOH+8EH)
Adres komórki zewnętrznej pamięci RAM zawarty jest w buforze portu 1*2 (część bardziej znacząca) i rejestrze R1 (część mniej znacząca). W trakcie wykonywania instrukcji MOVX A,ORl stan portu P2 nie ulega zmianie, a zawartość rejestru Rl pojawia się na liniach portu PO (rysunek 2-10).
XDATA
Rys. 2-10 Adresowanie zewnętrznej pamięd RAM za pośrednictwem portu P2 i rejestru Rl
MOV |
P2.M3H 0 0 |
;P2 c= 43H. |
MOV |
RU.M) |
;R0 c= 0. |
tGW | ||
MOV |
DPTR.#4E68H |
,DITR cs. 4Ei |
MOV |
R7,#128 |
,K7 c 128. |
Skok:
bardziej znaczący bajt adresu, adres segmentu (strony) mniej znaczący bajt adresu, adres w obrębie segmentu (strony) >8H, adres nowego obszaru R7 - licznik przesuwanych bajtów
MOVX A,OKO ;a c= (256*1*2 ♦ R0)xDATA
MOVX @DPTR,A ;<DPTR)XDaTA <= A
Mikrokontioler 80(C)5I - programowanie
wewnątrz 2 kBajtowego bloku pamięci kodu programu, bity Ajq # adresu skoku zmieniają 3 najbardziej znaczące bity pierwszego bajtu rozkazu,
• 16-bitowy adres w rozkazie LCAI.L adr_16; modyfikowana jest cala zawartość licznika rozkazów (PC).
Zawartość rejestru znaczników (PSW) nie jest zmieniana i nie jest wpisywana dn stosu. Wskaźnik stosu (SP) wskazuje ostanią zajętą komórkę stosu.
Przykład:
W programie głównym stan licznika rozkazów PC » 23ACH i wskaźnika stosu SP = 2FH następuje wywołanie podprogramu Progi o adresie 0A211i:
Calladr:
LCALL Progi .wywianie podprogramu Progi
po wykonaniu rozkazu stan rejestrów procesora jest następujący:
• licznik rozkazów PC = 0A21H.
• wskaźnik stosu SP a 31H,
• wewnętrzna pamięć RAM traktowana jako stos: (30H) = OACH, (3111) = 2311
RET, RETI * Return
Dziabnie PC]5< g c= (SP)
SP<=SP-1 PC7..0 c= (SP)
SP <= SP * 1
Adresowanie: Mnemonik: Strukluni bajtów: Cykle ćh$u .
■ tnaszytMiK. nikt
pośrednie: |
RET |
| 0 0 1 |
1) \ 0 0 |
1 Oj |
■> |
pośrednie: |
RETI |
| 0 0 1 |
1 | 0 0 |
1 oj |
2 |
Dztatanie:
Powrót z podprogramu do programu, z którego nastąpiło wywołanie podprograuio. • pobranie ze stosu adresowanego wskaźnikiem stosu (SP) lh bitowego adre.-ai następnego rozkazu, który ma być wykonany
Mikrokontroler 80(C)S I - programowanie