MCS51 - wykład 5 Wykład 5 2/28 Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu MCS51 - przerwania zewnętrzne 3/28 • dwa: INT0 i INT1; • aktywne poziomem.

Download Report

Transcript MCS51 - wykład 5 Wykład 5 2/28 Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu MCS51 - przerwania zewnętrzne 3/28 • dwa: INT0 i INT1; • aktywne poziomem.

Slide 1

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 2

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 3

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 4

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 5

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 6

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 7

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 8

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 9

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 10

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 11

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 12

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 13

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 14

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 15

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 16

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 17

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 18

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 19

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 20

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 21

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 22

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 23

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 24

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 25

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 26

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 27

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON


Slide 28

MCS51 - wykład 5

Wykład 5

2/28

Przerwania MCS51
Praca krokowa

Praca z obniżonym poborem prądu

MCS51 - przerwania zewnętrzne

3/28

• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;

• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON

TF1 8F TR1 8E TF0 8D TR0 8C

IE1 8B

IT1 8A

IE0 89

IT0

88

88h

IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0

MCS51 - przerwania zewnętrzne

4/28

0

INTx

1

IEx

ITx

EXx

Wejścia INTx są testowane w każdym cyklu maszynowym

MCS51 - przerwania zewnętrzne

5/28

Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

4c.m.

cykl maszynowy N+k
3/

4c.m.

INTx
wykrycie niskiego
poziomu

IEx

wykrycie wysokiego
poziomu

Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.

MCS51 - przerwania zewnętrzne

6/28

Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/

3/

4c.m.

cykl maszynowy N+1
3/

4c.m.

pierwszy cykl
rozkazowy
proc. obsługi
INTx

4c.m.

INTx
wykrycie zbocza
opadającego

IEx

tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM

tINTL

Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.

MCS51 - system przerwań

7/28

Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;

MCS51 - system przerwań

8/28

Rejestry sterujące:
Rejestr odblokowania przerwań

IE

EA AF

-

AE

ET2 AD

ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h

EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)

ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)

EX0 - włącza przerwanie zewnętrzne INT0 (IE0)

MCS51 - system przerwań

9/28

Rejestr priorytetów
IP

-

BF

-

BE

PT2 BD

PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h

Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0

MCS51 - system przerwań

10/28

Struktura systemu przerwań
IE0

1

EX0

PX0

TF0

1

ET0
PT0

IE1

0
1

EX1
PX1

TF1

0
1

ET1
RI
TI

0

PT1

0
1

ES
PS

TF2

0
1

EXF2

ET2
PT2
EA

0

najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0

najniższy
priorytet

MCS51 - system przerwań
Wektorowość systemu przerwań
INT0

03h

timer 0

0Bh

INT1

13h

timer 1

1Bh

SIO (RI+TI)

23h

timer2 (TF2+EXF2)

2Bh

11/28

MCS51 - system przerwań

12/28

Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.

2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;

to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).

MCS51 - system przerwań

13/28

Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1

• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.

Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.

MCS51 - system przerwań

14/28

Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT > 3TCM

koniec
zwykłego
cyklu rozk

górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI

4 c.m.
rozkazu
MUL lub DIV

2 c.m.
rozkazu
LCALL

1. c.m.
procedury
obsługi

TINTLAT< 9TCM

MCS51 - system przerwań

15/28

Procedura obsługi przerwania
Zalecana struktura:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)

odtworzenie stanu rejestrów ze stosu
RETI

MCS51 - system przerwań

16/28

System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan

T

obsługa
timera 0

obsługa
INT0

obsługa
INT1

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

17/28

System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0

obsługa
INT0

T

obsługa
SIO

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

MCS51 - system przerwań

18/28

System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:

zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów

usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI

MCS51 - system przerwań

19/28

System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T

timera 0

T

obsługa
SIO

obsługa
timera 0

TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne

zmiany wymuszone
programowo

chwile wykonania
procedury odblokuj

MCS51 - system przerwań

20/28

System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).

System jest podobny do systemu wielopoziomowego bez priorytetów.

UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań

MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;

• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)

21/28

MCS51 - praca krokowa

22/28

Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)

Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania

Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI

P3.2,$
P3.2,$

oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0

debugowany progr. E POPK 111111100R

POPK 111100R POPK 11111111110000R

/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

MCS51 - tryby oszczędzania energii

23/28

Występują w układach CMOS
Standardowy rejestr sterujący:

PCON SMOD

-

-

-

GF1

GF0

PD

IDL

IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne

87h

MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;

24/28

MCS51 - tryby oszczędzania energii

25/28

Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

26/28

Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;

• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły  dane katalogowe);

• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe

MCS51 - tryby oszczędzania energii

27/28

Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.

MCS51 - tryby oszczędzania energii

28/28

Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.

Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV

A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A

;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON