Mikroprocesor Z80 przerwania Z80 - przerwania 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet. 1/21 Z80 - przerwania 2/21 pobieranie rozkazu T koniec rozkazu ? N pobranie.

Download Report

Transcript Mikroprocesor Z80 przerwania Z80 - przerwania 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet. 1/21 Z80 - przerwania 2/21 pobieranie rozkazu T koniec rozkazu ? N pobranie.

Slide 1

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 2

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 3

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 4

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 5

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 6

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 7

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 8

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 9

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 10

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 11

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 12

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 13

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 14

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 15

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 16

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 17

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 18

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 19

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 20

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 21

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI


Slide 22

Mikroprocesor Z80
przerwania

Z80 - przerwania

2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.

1/21

Z80 - przerwania

2/21

pobieranie
rozkazu

T

koniec rozkazu ?
N

pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N

N

T

koniec rozkazu ?
T
T

NMI=0?

N

NMIFF:=1
N

INT=0?
T

N

tryb DMA
BUSACK:=0

N

T

BUSRQ=1?

INTFF=1?
N

T

BUSACK:=1
BRFF:=0

T

IFF1=1?
INTFF:=1

N

NMIFF=1?

T

BUSRQ=0?
N

T

IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0

IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0

Z80 - przerwania niemaskowalne

3/21

Cechy przerwań niemaskowalnych Z80:
• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału
przerywającego musi być dostatecznie długi
(warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).
• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu
sygnału na wejściu /NMI do poziomu wysokiego;
• są aktywne cały czas;
• obsługa polega na uruchomieniu procedury zaczynającej się
od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;
• procedura obsługi musi kończyć się rozkazem RETN;

Z80 - przerwania niemaskowalne

sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h

4/21

sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2

Z80 - przerwania niemaskowalne

5/21

Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK

TL-2

cykl rozkazowy-1
T1

TL-1

M1
T1

T2

T3

zapis PC na stos ...
T4

NMI
A0..A15
M1
MREQ

RD
RFSH

PC

ADRREF

Z80 - przerwania niemaskowalne

6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK

M1
1

2

M2
3

4

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

NMI
PC

A0..A15

ADRREF

SP-1

SP-2

PC=66h ADRREF

M1
MREQ
RD

WR
RFSH
M[PC]*
PCH

D0..D7
*zignorowany

M[66h]

bajt kodu

PCL

1

Z80 - przerwania maskowalne

Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi
(warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym
cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem
jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;

7/21

Z80 - przerwania maskowalne - tryb 0

8/21

Tryb 0
Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.
Mikroprocesor przyjmując przerwanie oczekuje na szynie danych
1-bajtowego kodu rozkazu RST k
albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.
W tym drugim przypadku, w kolejnych cyklach maszynowych należy
podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury
obsługi przerwania.

Z80 - przerwania maskowalne - tryb 0

9/21

Działania P w trybie 0
sek w en cja d ziałań  P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b

sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1

Z80 - przerwania maskowalne - tryb 0

10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK

M1*
1

2

W

M2
W

3

1

2

1-szy rozkaz obsługi

M3
3

1

2

3

1

2

3

4

INT
A0..A15

PC

SP-1

SP-2

PCH

PCL

PC=k

ADRREF

M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k

M[PC]

Z80 - przerwania maskowalne - tryb 0

11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

D

/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D

/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k

Z80 - przerwania maskowalne - tryb 1

Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.
• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.

12/21

Z80 - przerwania maskowalne - tryb 2

Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.

13/21

Z80 - przerwania maskowalne - tryb 2

14/21

Zasada tworzenia adresu startowego procedury obsługi przerwania

rejestr I
urządzenie
przerywające

IVL

IV
(IV0=0)

tablica wektorów
przerwań

0000h
APO1 L

H
L
APO2 H
L
APO3 H

0FFFFh

PC

Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U

m odu ł pery f. Z 80

zał. IF F 1= 1

jest przy czy na
IE I= 1?

15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U

N

T

/IN T := 0 | IE O := 0

EI
R E T I:

m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez  P
rozkazu
R E T I (E D h 4D h)

*

cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P

IV L  D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )

P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1

IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )

Z80 - przerwania maskowalne - tryb 2

16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK

TL

odczyt APOP...

M1*
T1

T2

Tw1

Tw2

T3

INT
A0..A15

PC

M1
IORQ
RD,WR,RFSH,MREQ
D0..D7

IVL

Z80 - przerwania maskowalne - tryb 2

17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK

L

M1*
1

2

W W

M2
3

1

2

M3
3

1

2

M4
3

1

2

1-szy
rozkaz
obsługi

M5
3

1

2

3

1

INT
A0..A15

PC

IV

IV+1

SP-1

SP-2

PCH

PCL

APOP

M1
IORQ
MREQ
RD
WR

RFSH
D0..D7

IVL
APOPL

APOPH

M[PC]

Z80 - przerwania maskowalne - tryb 2

18/21

Przykład łańcucha urządzeń przerywających:

Z80CPU

D0..D7
IORQ
M1
f
Vcc

IEI

IEO

Z80DMA
INT

IEI

IEO

Z80CTC

IEI

IEO

Z80PIO

IEI

IEO

Z80SIO
Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Z80 - przerwania maskowalne - tryb 2

19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:

IEI

IEO

Z80CTC

IEI

IEO

Z80CTC

Z80 - przerwania maskowalne

20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.
Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)
we wnętrzu procedury obsługi przerwania, ponieważ w momencie
przyjmowania przerwania maskowalnego do obsługi, wewnętrzny
przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero
rozkaz EI ustawia go ponownie na "1".
Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero
po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują
wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie
dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi
przerwania.

Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury

21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania

P3
P1

T

1

2 3

P2

P3

T

T

P1

1

P2

T

2 3

chwile wykonania rozkazu EI