Ćwiczenie 8 Temat ćwiczenia : zewnętrzna pamięć danych procesora 8051, dostęp i tryby adresacji. Zadanie domowe



Pobieranie 22.74 Kb.
Data08.05.2016
Rozmiar22.74 Kb.
Ćwiczenie 8
Temat ćwiczenia : zewnętrzna pamięć danych procesora 8051, dostęp i tryby adresacji.
Zadanie domowe:
Należy zapoznać się z budową, sposobem adresowania i wykorzystaniem pamięci procesora oraz przeanalizować załączone programy.

Zewnętrzna pamięć danych.
Zestaw DSM-51 posiada 32KB zewnętrznej pamięci RAM, adresowane od 0000 do 7FFFh Obszar o adresach 7700-7FFFh jest używany przez programy asemblera i monitora i nie należy go używać.

Pamięć zewnętrzna dostępna jest wyłącznie w trybie adresowania pośredniego 16 (rejestrem DPTR) lub 8-bitowego (rejestrem R0 lub R1). W przypadku adresowania 8-bitowego jako starszy bajt adresu użyta jest wartość na porcie P2, zatem, jeżeli nie jest to obojętne co będzie na starszych adresach, trzeba port P2 ustawić przed operacją transferu.

Uwaga. Po resecie na porcie P2 są same jedynki, zatem operacja MOVX z użyciem rejestru Rx będzie dotyczyła obszaru pamięci 0FF00h do 0FFFFh. W tym obszarze zestaw DSM51 nie posiada zainstalowanej pamięci a dodatkowo ten zakres adresów jest przeznaczony (w zestawie DSM-51) dla zewnętrznych rejestrów i urządzeń zestawu, takich jak rejestry klawiatury matrycowej, rejestry wskaźników segmentowych, porty układu 8255, rejestry przetwornika C/A itp.

Zadania do wykonania w laboratorium:



  1. Wypełnij identyczny jak w module A ćwiczenia 7 obszar pamięci wewnętrznej zgodnie z p. 1.2 ćwiczenia 7.

  2. Skonstruuj program, który przepisze zapisany obszar wewnętrznej pamięci RAM do zewnętrznej pamięci RAM pod adres o twój numer indeksu w większy, niż początkowy adres bloku w pamięci wewnętrznej. Przykładowo, jeżeli kod kropki jest pamięci wewnętrznej pod adresem 46h a twoim numerem indeksu jest 22628 to pierwszy bajt wpisu w pamięci zewnętrznej powinien mieć adres = 46h+ 22628= 22698=58AAh. Zapisu do pamięci zewnętrznej RAM można dokonać jedynie w trybie adresacji pośredniej z użyciem rejestru DPTR i rozkazu MOVX, np. przesłanie 20H do komórki 1720H będzie wyglądało w sposób następujący
    MOV DPTR,#1720H ;wstępne załadowanie rejestru DPTR
    MOV A,#20H
    MOVX @DPTR,A ;przesłanie w trybie adresacji pośredniej z użyciem rejestru DPTR




  1. Sprawdź zawartość pamięci zewnętrznej. Zawartości pamięci zewnętrznej danych nie da się obejrzeć na monitorze DSM-51. Skorzystaj z zamieszczonego niżej programu, który po wprowadzeniu z klawiatury (heksalnie) adresu komórki pamięci zewnętrznej danych wyprowadza na wyświetlacz jej zawartość (heksalnie). Wprowadzić należy wszystkie 4 cyfry, czyli np. 00F7 w kolejności od najstarszej do najmłodszej, tzn najpierw 0, potem 0 potem F a potem 7. Odpowiedzią programu będzie wyprowadzenie heksalnej zawartości komórki 00F7. Zawartość kolejnych komórek (00F8, 00F9 itd.) można oglądać naciskając dowolny klawisz z klawiatury matrycowej zestawu. Każde naciśnięcie powoduje zwiększenie zawartości DPTR o 1 i wyprowadzenie na wyświetlacz zawartości kolejnej komórki.
    Program jest dostępny w materiałach do pobrania jako PR31.ASM




  1. Skonstruuj program, który przepisze zapisany obszar wewnętrznej pamięci RAM do zewnętrznej pamięci RAM pod identyczne adresy jak w wewnętrznej pamięci RAM używając trybu adresacji 8-bitowej (czyli poprzez rejestry R0 lub R1). Przykładowo, jeżeli kod kropki jest pamięci wewnętrznej pod adresem 46h to kod kropki powinien znaleźć się w pamięci zewnętrznej pod identycznym adresem 46h.. Zapisu do pamięci zewnętrznej RAM można dokonać jedynie w trybie adresacji pośredniej z rozkazu MOVX, np. przesłanie 20H do komórki 46H A 25H do komórki 47H będzie wyglądało w sposób następujący

    CLR A ;wstepne zaladowanie akumulatora


    MOV P2,A ;to jest strasze 8 bitow adresu
    MOV A,#20H
    MOV R0,#46H ;wstępne załadowanie rejestru R0
    MOVX @R0,A ;przesłanie w trybie adresacji pośredniej z użyciem rejestru R0
    MOV A,#25H
    INC R0 ; starsze 8 bitow adresu jest takie jak poprzednio wiec ponowne
    ;ladowanie portu P2 nie jest konieczne
    MOVX @R0,A ;przesłanie w trybie adresacji pośredniej z użyciem rejestru R0



  2. Sprawdź zawartość pamięci zewnętrznej identycznie jak poprzednio.

;************************************************

;

;PRZYKŁAD - WYPISANIE ZAWARTOSCI PAMIECI



;************************************************

LJMP START

ORG 100H

START:


LCALL LCD_CLR

LCALL WAIT_KEY ;pobierz najstarszy znak adresu

;z klawiatury matrycowej

SWAP A ;przesuń 4 bity w lewo

MOV DPH,A ;zapamiętaj w DPH
LCALL WAIT_KEY ;pobierz kolejny znak

XRL A,DPH ;uzupełnij pierwszą liczbę o młodsze 4 bity

MOV DPH,A ;zapamiętaj w DPH

LCALL WRITE_HEX ;wyświetl na LCD


LCALL WAIT_KEY ;pobierz kolejny znak

;z klawiatury matrycowej

SWAP A ;przesuń 4 bity w lewo

MOV DPL,A ;zapamiętaj w DPL


LCALL WAIT_KEY ;pobierz kolejny znak

XRL A,DPL ;uzupełnij pierwszą liczbę o młodsze 4 bity

MOV DPL,A ;zapamiętaj w DPL

LCALL WRITE_HEX

LOOP1:

MOV A,#’:’



LCALL WRITE_DATA

MOVX A,@DPTR

LCALL WRITE_HEX ;wypisz na LCD

INC DPTR ;adres na następny bajt

LCALL WAIT_KEY ;CZEKAJ NA POLECENIE WYPISANIA KOLEJNEJ KOMORKI

LCALL LCD_CLR

MOV A ,DPH ;

LCALL WRITE_HEX ;wyświetl na LCD

MOV A ,DPL ;

LCALL WRITE_HEX ;wyświetl na LCD

SJMP LOOP1

Literatura



  1. Gałka P., Gałka P. „Podstawy programowania mikrokontrolera 8051”, MIKOM

  2. Starecki T. „Mikrokontrolery 8051 w praktyce” Wydawnictwo BTC 2002

Dodatek




MOV ,


Funkcja: Przesłania zmiennej bajtowej.

Opis: zmienna bajtowa wskazana przez drugi z operandów jest kopiowana w miejsce identyfikowane przez pierwszy z operandów. Stan zmiennej źródłowej nie ulega zmianie. Stan żadnego ze wskaźników nie ulega zmianie. zmienna źródłowa i miejsce przeznaczenia w instrukcji przesłania zmiennej bajtowej mogą być adresowane łącznie na 15 różnych sposobów. Czyni to opisywaną instrukcję najbardziej elastyczną operacją w całej liście rozkazów mikrokontrolerów rodziny 51.

Przykład: Bajt wewnętrznej pamięci RAM znajdujący się pod adresem 30H zawiera 40H, a
pod adresem 40H tej pamięci umieszczona jest wartość 10H. Stan wyprowadzeń portu P1
reprezentuje liczba 11001010B (0CAH). Po wykonaniu ci gu instrukcji
MOV R0, #30H ; R0 := 30H
MOV A, @R0 ; A := 40H
MOV R1, A ;R1 := 40H
MOV B,@R1 ; B := 10H
MOV @R1, P1; RAM(40H) := 0CAH
MOV P2, P1 ; P2 := 0CAH
w rejestrze roboczym R1 znajdzie się wartość 30H, w rejestrze roboczym R1 i akumulatorze
będzie 40H, rejestr B będzie zawierał 10H, a w wewnętrznej pamięci RAM o adresie 40H
oraz w rejestrze wyjściowym portu P2 pojawi się 0CAH (11001010B).
MOV A, Rn
Operacja: MOV
A:=Rn
MOV A, direct
Operacja: MOV
A := (direct)
MOV A, @Ri
Operacja: MOV
A := [Ri]
MOV A, #data
Operacja: MOV
A := data
MOV Rn, A
Operacja: MOV
Rn := A
MOV Rn, direct
Operacja: MOV
Rn := (direct)
MOV Rn, #data
Opercja : MOV
Rn := data
MOV direct, A
Operacja MOV
(direct) := A
MOV direct, Rn
Operacja : MOV
(direct) := Rn
MOV direct1, direct2
Operacja: MOV
(direct1) := (direct2)
MOV direct @Ri
Operacja: MOV
(direct) := [Ri]
MOV direct, #data
Operacja : MOV
(direct) := data
MOV @Ri, A
Operacja MOV
[Ri] := A
MOV @Ri, direct
Operacja : MOV
[Ri] := direct

MOV @Ri, #data
Operacja : MOV
[Ri] := data


MOVX ,


Funkcja: Przesłanie z udziałem zewnętrznej pamięci danych

Opis: Instrukcja MOVX służy do przeprowadzania wymiany informacji między akumulatorem i zewnętrzną pamięcią danych. Przesiania za pomoc instrukcji MOVX mogą by wykonywane przy wykorzystaniu 8- lub 16-bitowego adresowania zewnętrznej pamięci RAM. Przy adresowaniu 8-bitowym zewnętrzna pamięć może by adresowana zawartością rejestru R0 lub R1. Adres jest wystawiany na porcie P0 i jest multipleksowany z bajtem danych. Adresowanie 8-bitowe jest wystarczające zwykle tylko przy korzystaniu z niewielkiej zewnętrznej pamięci danych lub przy sterowaniu zewnętrznych układów peryferyjnych. Jeżeli obszar adresowy układów zewnętrznych przekracza 256 bajtów, to do określania starszych bitów adresu przy adresowaniu 8-bitowym mogą być wykorzystane dowolne wyprowadzenia mikrokontrolera (bardzo często wykorzystuje się do tego celu linie portu P2). Stan tych wyprowadzeń musi by oczywiście odpowiednio ustawiany przed każdą operacją MOVX działającą w trybie 8-bitowym. W przypadku adresowania 16-bitowego do adresowania wykorzystywany jest 16-bitowy wskaźnik danych DPTR. Podczas wykonywania instrukcji starszy bajt adresu (zawartość DPH) wystawiany jest na liniach portu P2, za to młodszy bajt adresu (DPL)jest multipleksowany z bajtem danych na liniach portu P0. Po wykonaniu operacji przesłania linie portu P2 powracaj do stanu sprzed jej wykonywania. Adresowanie 16-bitowe jest szybsze i wydajniejsze ni 8-bitowe w przypadku dużego obszaru adresowego układów zewnętrznych, ponieważ nie jest wtedy potrzebne wstępne ustalanie (za pomoc dodatkowej instrukcji) stanu starszych bitów adresowych przed każdą operacją MOVX. Możliwe jest naprzemienne stosowanie obu trybów adresowania.

Przykład: Zewnętrzna pamięć RAM o pojemności 256 bajtów z multipleksowaną szynę
danych i adresów (np. układ 8155) jest podłączona do portu pn mikrokontrolera. Liniami
sterującymi (/CS, /WR) są odpowiednie linie portu P3. Linie portów P1 i P2 wykorzystywane są jako zwykle linie wejścia/wyjścia. Rejestry robocze R0 i R1 zawierają odpowiednio 12H i 34H. Pod adresem 34H zewnętrznej pamięci RAM umieszczono liczbę 56H. Ciąg instrukcji
MOVX A,@R1
MOVX @R0,A
spowoduje skopiowanie liczby 56H do akumulatora oraz pod adres 12H zewnętrznej pamięci
RAM.
MOVX A, @Ri
Operacja : MOVX
A := [Ri]
MOVX A, @DPTR
Operacja : MOVX
A = [DPTR]
MOVX @Ri, A
Operacja : MOVX
[Ri] := A
MOVX @DPTR, A
Operacja : MOVX
[DPTR] := A

MOV DPTR, #


Funkcja: Ładowanie wskaźnika danych stałą16-bitową


Opis: wskaźnik danych ładowany jest podaną stałą 16-bitów . Wartość stałej określana jest stanem drugiego (DPH) i trzeciego (DPL) bajtu kodu instrukcji. Stan żadnego ze wskaźników nie ulega zmianie. Instrukcja jest jedyną instrukcją na liście rozkazów 8051 dokonującą transferu 16-bitowego.

Przykład: Instrukcja
MOV DPTR, #1234H
spowoduje załadowanie do wskaźnika danych stałej 1234H. Rejestr DPH będzie zawierał
12H, a rejestr DPL 34H.
Operacja: MOV
DPTR := d15-0 <=> (DPH := d15-8; DPL := d7-0)
Liczba cykli: 2 Liczba bajtów: 3




©absta.pl 2019
wyślij wiadomość

    Strona główna