Mikroprocesory, MIKROPR3, POLITECHNIKA LUBELSKA


POLITECHNIKA LUBELSKA

KATEDRA ELEKTRONIKI

LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH

SPRAWOZDANIE DO ĆWICZENIA NR. 3

„PAMIĘĆ WEWNĘTRZNA RAM. ORGANIZACJA I WYKORZYSTANIE STOSU.”

Wykonali: Remigiusz Gwiazda ED 5.4

Paweł Luty ED 5.4

Cel ćwiczenia:

Celem ćwiczenia było zapoznanie się z układem pamięci wewnętrznej RAM mikroprocesora typu 8051 oraz jej wykorzystaniem ,a także z organizacją i wykorzystaniem stosu.

Zadanie 1.

Przy użyciu pracy krokowej systemu DSM-51 został przeanalizowany krótki program. Jednocześnie zostały zanotowane zmiany w rejestrze PSW procesora oraz stan wyświetlacza LCD.

Instrukcja

BIT

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

LCD

FLAGA

CY

AC

F0

RS1

RS0

OV

-

P

-

LJMP START

ORG 100H

START:

LCALL LCD_CLR

0

0

0

0

0

0

0

0

MOV A,#10H

0

0

0

0

0

0

0

1

LCALL WRITE_HEX

1

0

0

0

0

0

0

0

10

MOV ACC,#20H

1

0

0

0

0

0

0

1

10

LCALL WRITE_HEX

1

0

0

0

0

0

0

0

1020

LJMP $

1

0

0

0

0

0

0

1

1020

Zadanie 2.

W tym zadaniu program z poprzedniego przykładu został tak zmodyfikowany aby zawartość akumulatora była zmieniana poprzez adresowanie bezpośrednie jego wybranych bitów.

Listing zmodyfikowanego programu:

LJMP START

ORG 100H

START:

LCALL LCD_CLR

ANL A,#0H

SETB ACC.4

LCALL LCD_HEX

ANL A,#0H

SETB ACC.5

LCALL LCD_HEX

LJMP $

Instrukcja

BIT

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

LCD

FLAGA

CY

AC

F0

RS1

RS0

OV

-

P

-

LJMP START

ORG 100H

START:

LCALL LCD_CLR

0

0

0

0

0

0

0

0

ANL A,#0H

0

0

0

0

0

0

0

1

SETB ACC.4

1

0

0

0

0

0

0

0

LCALL WRITE_HEX

1

0

0

0

0

0

0

0

10

ANL A,#0H

1

0

0

0

0

0

0

0

10

SETB ACC.5

1

0

0

0

0

0

0

1

10

LCALL WRITE_HEX

1

0

0

0

0

0

0

0

1020

LJMP $

1

0

0

0

0

0

0

0

1020

Jak widać w tym przypadku zamiast wpisywać do akumulatora bezpośrednio cały bajt instrukcją MOV A,#XX jego zawartość została zmieniona za pomocą ustawienia jego odpowiednich bitów tak aby bity te reprezentowały pewną liczbę. W wielu przypadkach taki sposób zmieniania zawartości akumulatora oraz innych rejestrów jest szybszy , ale zależy to oczywiście od programu.

Analizując programy w zadaniach 1 i 2 można zauważyć ,że zawartość rejestru PSW zmienia się w momencie wywołania podprogramów, w tym przypadku obsługujących wyświetlacz. Oczywiście jest to spowodowane tym , że same podprogramy wykonując pewne instrukcje zmieniają zawartość PSW. Podczas wywoływania podprogramu LCD_CLR ustawiał się wskaźnik CY, a podczas wywoływania WRITE_HEX dodatkowo ustawiał się także wskaźnik P.

Zadanie 3.

Do akumulatora podobnie jak do pozostałych rejestrów specjalnych można się odwoływać zarówno jak do rejestru 8-bitowego jak też do 8 rejestrów 1-bitowych. Każdy z tych rejestrów posiada własny adres. Dla akumulatora jako całości adres ten jest liczba podzielną przez 8.

Jednocześnie adres jego pierwszego bitu jest taki sam , a adresy pozostałych bitów nie są podzielne przez 8. W programach używa się symbolu „A” gdy adresuje się akumulator jako rejestr 8­-bitowy oraz symbolu „ACC” gdy adresuje się jego poszczególne bity.

Zadanie 4.

W zadaniu został przeanalizowany krótki program z wykorzystaniem pracy krokowej.

Instrukcja

BIT

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

ACC

LCD

FLAGA

CY

AC

F0

RS1

RS0

OV

-

P

-

B0R7 EQU 7

B1R7 EQU 8+7

B2R7 EQU 10H+7

B3R7 EQU 18H+7

LJMP START

ORG 100H

0

0

0

0

0

0

0

0

START:

MOV B0R7,#0

0

0

0

0

0

0

0

0

MOV B1R7,#1

0

0

0

0

0

0

0

0

MOV B2R7,#2

0

0

0

0

0

0

0

MOV B3R7,#3

0

0

0

0

0

0

0

LCALL LCD_CLR

0

0

0

0

0

0

0

0

21

MOV A,R7

0

0

0

0

0

0

0

0

LCALL WRITE_HEX

1

0

0

0

0

0

0

0

21

00

SETB RS0

1

0

0

0

1

0

0

0

21

00

MOV A,R7

1

0

0

0

1

0

0

1

1

00

LCALL WRITE_HEX

1

0

0

0

1

0

0

1

19

0001

SETB RS1

1

0

0

1

1

0

0

1

19

0001

MOV A,R7

1

0

0

1

1

0

0

0

3

0001

LCALL WRITE_HEX

1

0

0

1

1

1

0

0

FF

000103

CLR RS0

1

0

0

1

0

0

0

0

FF

000103

MOV A,R7

1

0

0

1

0

0

0

1

2

000103

LCALL WRITE_HEX

1

0

0

1

0

0

0

1

FE

00010302

SJMP $

Zawartości rejestrów w poszczególnych bankach:

BIT

7

6

5

4

3

2

1

0

BANK 0

0

0

0

0

0

0

0

0

BANK 1

0

0

0

0

0

0

0

1

BANK 2

0

0

0

0

0

0

1

0

BANK 3

0

0

0

0

0

0

1

1

W wyniku wykonania programu na wyświetlacz zostały wyprowadzone liczby 00, 01, 03 oraz 02.

Liczby te były zawarte w rejestrach R7 poszczególnych banków od R0 do R3. Program działa w ten sposób, że po uprzedniej zmianie bieżącego banku rejestrów wpisuje do akumulatora zawartość rejestru R7 , a następnie wywołuje procedurę obsługi wyświetlacza ,która wyświetla tą zawartość.

Bieżący bank rejestrów jest zmieniany poprzez ustawienie lub wyczyszczenie odpowiednich bitów RS0 i RS1 w rejestrze PSW. Stan tego rejestru podobnie jak w poprzednich programach ulega zmianie podczas wywoływania podprogramów obsługujących wyświetlacz.

Zadanie 5.

Stosując adresowanie pośrednie można zapełnić pewien obszar pamięci wartością 0EEH np. przy pomocy następującego programu:

ADRES EQU 50H

LICZBA EQU 0EEH

LJMP START

ORG 100H

START: MOV R0,#40H

LOOP : MOV @R0,#LICZBA

DEC R0

CJNE R0,#20H,LOOP

Działanie tego programu polega na tym, że do rejestru R0 wpisuje się wartość liczby, która odpowiada adresowi dowolnej komórki pamięci (w tym wypadku 40H), a następnie za pomocą instrukcji MOV @R0,#LICZBA wpisuje się wartość LICZBA (0EEH) do komórki ,której adres znajduje się w R0. Instrukcja CJNE R0,#20H,LOOP porównuje zawartość R0 z liczbą ,która reprezentuje ilość komórek pamięci ,które chcemy zapełnić. Jeśli wartość ta jest różna to proces wpisywania stałej 0EEH powtarza się aż zapełni się 20 komórek pamięci.

Zadanie 6.

Prosty program ,który ustawia wartość komórki 21 na 3H i wyświetla ją:

KOMORKA EQU 21

SJMP START

ORG 100H

START: LCD_CLR

SETB KOMORKA.0

SETB KOMORKA.1

MOV ACC,KOMORKA

WRITE_HEX

Wnioski:

Zadania od 1 do 7 miały na celu objaśnienie budowy i działania pamięci wewnętrznej mikroprocesora 8051. Pamięć ta ma w wersji podstawowej 128 bajtów z czego cześć jest zajęta przez rejestry specjalne. Używa się jej w wielu programach do przechowywania danych.

Można ją adresować bezpośrednio lub pośrednio tak jak to było pokazane w ćwiczeniu.

Z kolei zadania 8-10 miały za zadanie objaśnienie działania stosu mikroprocesora.

W programach do tych zadań używa się stosu czyli pamięci podręcznej ,która umożliwia szybkie zapamiętywanie i odtwarzanie wartości rejestrów lub komórek pamięci.

Stos zajmuje miejsce w pamięci RAM począwszy od adresu ,który wskazuje wskaźnik stosu czyli rejestr SP. Wskaźnik ten można dowolnie ustawiać wpisując odpowiednią liczbę. Można więc ustalić położenie stosu w pamięci. Należy uważać aby podczas wykorzystywania stosu nie zniszczyć zawartości komórek pamięci ,które mogą mieć swoje adresy w obszarze stosu. Do zapamiętania wartości na stosie służy instrukcja „PUSH” , a do jej odtworzenia instrukcja „POP”.

Stos najczęściej jest używany w podprogramach ,które przechowują wartości rejestrów aby uchronić je przed utratą danych.



Wyszukiwarka

Podobne podstrony:
Mikroprocesory, MIKROP10, POLITECHNIKA LUBELSKA
Mikroprocesory, 1,2', Politechnika Lubelska
Budowa mikroprocesora, Politechnika Lubelska, Studia, Semestr 6, sprawka 6 sem moje
Laboratorium budowy urządzeń mikrokomputerowych, Sprzęganie urządzeń zewnętrznych i peryferyjnych mi
Labolatorium komputerowych systemów automatyki, Regulatory mikroprocesorowe, Politechnika Lubelska
Labolatorium Urządzeń mikrokomputerowych, Badanie zasilacza ukł. mikroprocesor., Politechnika Lubel
Mikroprocesory, MIKROP4, POLITECHNIKA LUBELSKA
Mikroprocesory, MIKROP3B, POLITECHNIKA LUBELSKA
LAB6MICR, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
MICRO7~1, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
Mikroprocesory, Micro 3, Politechnika Lubelska
Mikroprocesory, moje9, POLITECHNIKA LUBELSKA
Mikroprocesory, Micro10, Politechnika Lubelska
Mikroprocesory, Micro10, Politechnika Lubelska
PROCES5, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
M7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LABOL
Mikroprocki 1kl, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPR
PROC7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LA
Badanie zasilacza ukł. mikroprocesor, Studia, sprawozdania, sprawozdania od cewki 2, Dok 2, Dok 2, P

więcej podobnych podstron