Procesor z-80 w trybie drugim przyjęcia przerwań, 8255 port a w trybie drugim



Pobieranie 50.83 Kb.
Data03.05.2016
Rozmiar50.83 Kb.
PROCESOR Z-80 W TRYBIE
DRUGIM PRZYJĘCIA PRZERWAŃ,
8255 PORT A W TRYBIE DRUGIM.

1. Opis systemu mikroprocesorowego Z-80, 8214,8255:
System ten jest zbudowany w oparciu o popularny mikroprocesor 8-mio bitowy Z-80,

układ portów we-wy firmy INTEL 8255, kontroler przerwań firmy INTEL 8214.

Kontroler przerwań umożliwia wystawianie w cyklu akceptacji przerwania 8-miu

młodszych bitów adresu wektora przerwań zgodnie z wymogiem trybu 2-go obsługi

przerwań w mikroprocesorze Z80.

Układ 8255 (jego aplikacja) umożliwia analizę sposobu działania portu A w modzie 2,

w tym czasie port B służy jako port adresowania pamięci RAM zapisywanej i odczytywanej

przez port A układu 8255 (urządzenie we-wy). W ten sposób tylko jedna wybrana przez ustawienie portu B komórka pamięci RAM jest używana do przechowywania danej zapisanej i odczytywanej przez port B.


2. System przerwań mikroprocesora Z-80.
Procesor Z-80 może pracować w trzech trybach przerwań:

a. zerowym - (rozkaz IM0), w tym trybie w cyklu akceptacji przerwania INTA (IORQ=

M1=„0”) urządzenie żądające obsługi przerwania wystawia na magistralę danych kod rozkazu restartu 0-7 RSTn n=0,8,10,...,38HEX,

b. pierwszym- (rozkaz IM1), w tym trybie adres obsługi przerwania zaczyna się zawsze

od wartości 0038Hex,

c. drugim - (rozkaz IM2) w tym trybie urządzenie żądające obsługi przerwania wystawia na magistralę danych 8-em młodszych bitów adresu wektora obsługi przerwania (bit 0 jest zawsze=„0”),

Starsze 8-em bitów adresu wektora obsługi przerwania powinno byc zapisane w rejestrze przerwań I.
3. Układ 8255.
Tryby pracy układu 8255:
tryb 0 - port pracuje jako wejściowy lub wyjściowy bez potwierdzania,

tryb 1 - port A lub B pracuje jako wejściowy lub wyjściowy z potwierdzaniem,

tryb 2 - port A pracuje w trybie dwukierunkowym z potwierdzaniem.
adresacja układu 8255:
adres lokacji w pamięci lokacja jako I/O

port A 80FCh FCh

port B 80FDh FDh

portC 80FEh FEh

rej. ster. 80FFh FFh

Format słowa sterującego układu 8255:


bit

7

6

5

4

3

2

1

0

nazwa

1”

MOD1

PA

MOD0

PA

KIER. PA

KIER.

PC4-7

MOD

PB

KIER.

PB

KIER.

PC0-3

MOD1 PA MOD0 PA

0 0 TRYB 0 PORTU A

0 1 TRYB 1 PORTU A

1 0 TRYB 2 PORTU A

1 1 TRYB 2 PORTU A

--------------------------------------------------------------

KIER. PA


0 WYJŚCIE

1 WEJŚCIE

----------------------------------------

KIER. PC4-7

0 WYJŚCIE

1 WEJŚCIE

----------------------------------------

MOD PB


0 TRYB 0 PORTU B

1 TRYB 1 PORTU B

----------------------------------------

KIER. PB

0 WYJŚCIE

1 WEJŚCIE

----------------------------------------

KIER. PC0-3

0 WYJŚCIE

1 WEJŚCIE



----------------------------------------
Format słowa sterującego ustawiającego w sposób indywidualny bity portu C.


bit

7

6

5

4

3

2

1

0

nazwa

0”

X”

X”

X”

B2

B1

B0

SET/RESET

X” - dowolnie „0” lub „1”.


bit/numer bitu portu C

B2

B1

B0

0

0

0

0

1

0

0

1

2

0

1

0

3

0

1

1

4

1

0

0

5

1

0

1

6

1

1

0

7

1

1

1


bit SET/RESET „1” - ustawienie bitu,

„0” - skasowanie bitu.
Rola bitów portu C jako masek przerwań:
PC2 - INTE B - maska przerwań od portu B dla obu kierunków we-wy.

PC4 - INTE A - maska przerwań dla portu A pracującego jako wejście w trybie 1 i 2.

PC 6 - INTE A’ - maska przerwań dla portu A pracującego jako wyjście w trybie 1 i 2.
Bity portu C pracujące w modzie z potwierdzeniem:
PC0 - ACK (PC0=„H” stan aktywny na ACK),

PC2 - STB (PC2=„H” stan aktywny na STB),

PC1- Output Enable (pozwolenie na odczyt) pamięci RAM (PC1 = „H” pamięć odczytywana).
Aby układ pracował poprawnie porty A i B powinny pracować w następujących modach:
- port B - mod 0 - wyjściowy (adresacja pamięci RAM pracującej jako urządzenie I/O),

- port A - mod 2 - dwukierunkowy (zapis i odczyt RAM),

- port C - wolne bity jako wyjścia (w żadnym przypadku dla poru C nie ustawiać modu 0, grozi to uszkodzeniem układu 8255).
4. Wykorzystanie układu 8255 dla potrzeb demonstracji zasad pracy portu A w modzie 2:
a. port A jako wyjście:
- zapis słowa sterującego - port B mod 0 wyjście,

- port A mod 2,

- wpis adresu komórki pamięci RAM do przechowywania danej na port B,

- odblokowanie przerwań od portu A,

- wpisać dana do zapamiętania na port A, OBF - stan aktywny,

- ustawić bit portu C PC0 w stan aktywny „H” co spowoduje uaktywnienie wejścia ACK i równocześnie zapis pamięci RAM,

-wycofać sygnał ACK czyli PC0 w stan nieaktywny „L”,

b. port A jako wejście:

- słowo sterujące jak powyżej,

- wpis adresu jak w pkt. a,

- odblokowanie przerwań od portu A,

- wpisać „1” do PC1 aby otworzyć bufor wyjściowy,

- wpisać „H” do bitu PC2 co powoduje uaktywnienie wejścia STB,

- oczytać daną spod adresu portu A

- wycofać aktywne sygnały z PC1 i PC2.


5. Kontroler przerwań 8214:
Kontroler ten jest kontrolerem priorytetowym, gdzie przerwanie o numerze 7 ma najwyższy priorytet a przerwanie o numerze 0 najniższy, układ umożliwia maskowanie przerwań przy pomocy linii B0-B2 i SGS podwieszonych do linii danych D0-D7 (D0-B0, D1-B1, D2-B2, D3-SGS), zapisywanych pod adresy:

adres lokacji w pamięci adres urządzenia I/O

8033h 33h


Adres wektora obsługi przerwania, część młodsza:


bit

7

6

5

4

3

2

1

0




D7

D6

D5

D4

A2

A1

A0

0”

D7-4  zapisywane w trakcie zapisu maski przerwań,

D3-1  numer przerwania zgłaszanego na wejściach R0-7 układu 8214,

D0 - stale „0”, aby uzyskać adres parzysty.


Aby przerwanie było przyjmowane należy zapisać do 8214 maskę przerwań, każdorazowo przed przyjęciem przerwania (czyli również przed końcem procedury obsługi przerwania bieżącego).
6. Przygotowanie procesora Z-80 do przyjmowania przerwań maskowalnych:
Po sygnale RESET procesor ustawia TRYB 0 przyjmowania przerwań (tryb INTEL- owski), należy wybrać tryb 2 (Z-etowski - rozkaz IM2),

Ustawić wskaźnik stosu SP na wartość większą niż adres pamięci programu zajmowanej przez program użytkownika + ilość bajtów składanych na stos (rozkaz LD SP,#16bit),

Zapisać rejestr I (wartością taką aby adres tablicy wektorów obsługi przerwania pokrywał się z istniejącą pamięcią programu i danych procesora Z-80),

Odmaskować przerwania rozkazem EI.


7. Zadanie do wykonania:
A. Zapisać daną do pamięci RAM symulującej urządzenie I/O przy pracy portu A w trybie 2,

B. Jak wyżej ale z wykorzystaniem przerwań i układu 8214.


UWAGA: Każdy program należy przetestować korzystając z pracy krokowej.
Wpisywanie programu w kodzie HEX:

Układ powinien być w stanie pracy krokowej,


Krokowanie przyciskiem „STEP: powinno odbywać się co CYKL MASZYNOWY,
Przejęcie magistrali w celu wpisania programu następuje przez zażądanie oddania , magistrali przez procesor przyciskiem „BUSREQ”,
Po zgłoszeniu żądania oddania magistrali trzeba wykonać jeden krok (przycisk „STEP”), aby procesor dokończył cykl magistrali,
Wtedy powinien pojawić się sygnał BUSACK informujący o oddaniu magistrali przez procesor,
Przycisk „BUSEN” pozwala na przejęcie magistrali przez klawiaturę,
Przełącznik „ADDR/DATA” w pozycji ADDR pozwala na wpisanie adresu początkowego przy pomocy klawiatury alfanumerycznej,
Przełącznik ten ustawiony w pozycji DATA umożliwia wpis danych klawiszem „WRITE”,
Program należy wpisywać od adresu 0000H,
Przed krokowaniem programu przyciskiem „STEP” nacisnąć przycisk zerujący „RESET”,
Należy zaobserwować cykle maszynowe:
- odczytu kodu rozkazu

- odczytu danych bezpośrednich

- zapisu i odczytu danych do i z pamięci

- cyklu akceptacji przerwania INTA



- zapisu i odczytu stosu.


©absta.pl 2016
wyślij wiadomość

    Strona główna