Prerušovací systém uP 8051 Harvardská architektúra Druhy prerušení a ich priorita • • • • • Externé prerušenie INT0 ( P3.2 ) Prerušenie pretečením čítača T0 ( vstup čítača T0

Download Report

Transcript Prerušovací systém uP 8051 Harvardská architektúra Druhy prerušení a ich priorita • • • • • Externé prerušenie INT0 ( P3.2 ) Prerušenie pretečením čítača T0 ( vstup čítača T0

Prerušovací systém
uP 8051
Harvardská architektúra
Druhy prerušení a ich priorita
•
•
•
•
•
Externé prerušenie INT0 ( P3.2 )
Prerušenie pretečením čítača T0 ( vstup čítača T0 P3.4 )
Externé prerušenie INT1 ( P3.3 )
Prerušenie pretečením čítača T1 ( vstup čítača T1 P3.5 )
Prerušenie od sériového kanálu
• Prerušenia sú zoradené podľa priority od najvyššej po najnižšiu. Je
však možné poradie priority aj zmeniť podľa potreby
• Prerušenie je vlastne reakcia procesora na danú udalosť (napr.
zmena logického stavu na vstupe INT0, INT1, prijatie sériovej
informácie, pretečenie časovača TF0, TF1, ...).
• Návrat z podprogramu obsluhy prerušenia sa vykonáva inštrukciou
RETI, ktorá je poslednou inštrukciou podprogramu.
Priebeh
inštrukčného cyklu
•
Procesor vykonáva inštrukcie
hlavného programu postupne
jednu za druhou
•
Na konci každého inštrukčného
cyklu testuje, či sa vyskytla žiadosť
o prerušenie
•
Ak procesor zaregistruje takúto
udalosť, opúšťa hlavný program a
odskakuje na tzv. vektorovú adresu
príslušného typu prerušenia
•
Vektorová adresa je miesto v
pamäti programu, kde sa
nachádza buď samotný
podprogram obsluhy prerušenia
alebo častejšie je tam skoková
inštrukcia na príslušný podprogram
Vektorové adresy prerušení
Typ prerušenia
Názov prerušenia
Vektorová adresa
prerušenia
IE0
Externé prerušenie 0
0003H
TF0
Prerušenie od
časovača/čítača 0
000BH
IE1
Externé prerušenie 1
0013H
TF1
Prerušenie od
časovača/čítača 1
Prerušenie od
sériového portu
001BH
RI & TI
0023H
Oblasť vektorov
Adresa
0000H
0030H
iROM
0000H
JMP (skok na hlavný program)
0001H
30
( nižší bajt adresy )
0002H
00
( vyšší bajt adresy )
0003H
JMP ( skok na podprogram EXT 0 )
0004H
67
( nižší bajt adresy )
0005H
00
( vyšší bajt adresy )
Začiatok programu
------
Vektorové adresy prerušení
000AH
Koniec časti vyhradenej pre obsluhu EXT 0
Hlavný program :
000BH
JMP ( skok na podprogram TF 0 )
000CH
00
( nižší bajt adresy )
000DH
01
( vyšší bajt adresy )
8
8
------
0067H
EXT 0 :
RETI
0100H
TF 0 :
RETI
0130H
EXT 1 :
0012H
Koniec časti vyhradenej pre obsluhu TF 0
0013H
JMP ( skok na podprogram EXT 1 )
0014H
30
( nižší bajt adresy )
0015H
01
( vyšší bajt adresy )
-----001AH
Koniec časti vyhradenej pre obsluhu EXT 1
001BH
JMP ( skok na podprogram TF1 )
001CH
60
( nižší bajt adresy )
001DH
01
( vyšší bajt adresy )
RETI
0160H
0180H
TF1 :
RETI
-----
RI & TI
0022H
Koniec časti vyhradenej pre obsluhu TF1
0023H
JMP ( skok na podprogram RI &TI )
0024H
80
( nižší bajt adresy )
0025H
01
( vyšší bajt adresy )
RETI
END
8
----002BH
Koniec časti vyhradenej pre obsluhu RI & TI
8
8
Špeciálne registre
pracujúce s prerušením
adresa
88h
98h
A8h
B8h
•
•
•
•
TCON – riadenie čítačov a príznaky stavu žiadostí o prerušenie
SCON – riadenie sériového kanálu
IE – register povolenia prerušení
IP – register nastavenia priority prerušení
Povolenie prerušení
Register prerušení IE ( Interrupt enable ) ( adresa A8h )
EA
•
•
•
•
•
•
–
–
ES
EA – enable all
ES - enable serial
ET1 – enable Timer1
EX1 – enable external1
ET0 – enable Timer0
EX0 - enable external0
• LOG 1 – povolené
ET1
EX1
ET0
EX0
centrálne povolenie prerušení
povolenie sériového kanálu
povolenie časovača T1
povolenie externého prerušenia 1
povolenie časovača T0
povolenie externého prerušenia 0
LOG 0 - zakázané
Riadenie časovačov a príznaky prerušení
Externé prerušenia
Register TCON ( adresa 88h )
TF1
•
•
•
•
•
•
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF0 – Timer0 Flag
príznak pretečenia časovača T0
TF1 – Timer1 Flag
príznak pretečenia časovača T1
IE0 - Interrupt External 0 príznak externého prerušenia EX0
IE1 – Interrupt External 1 príznak externého prerušenia EX1
IT0 – typ externého prerušenia EX0 ( 1 – dobežná hrana )
IT1 - typ externého prerušenia EX1 ( 0 – úroveň LOG0 )
• TR0, TR1 – štartovací bit pre čítače ( 1 – štart, 0 – stop )
Riadenie priority prerušení
Register priority prerušení IP ( Interrupt Priority ) (adresa B8h)
–
•
•
•
•
•
–
–
PS
PT1
PX1
PT0
PX0
PS – Priority Serial
priorita prerušenia sériového kanálu
PT1 – Priority Timer1
priorita prerušenia časovača T1
PX1 – Priority External1 priorita externého prerušenia 1
PT0 - Priority Timer0
priorita prerušenia časovača T0
PX0 - Priority External0 priorita externého prerušenia 0
• Prerušenia môžu mať vyššiu alebo nižšiu prioritu
• Nastavením príslušného príznaku (1) sa danej žiadosti o
prerušenie priradí vyššia priorita
Prerušovací systém 8051
Riadenie priority prerušení
PX0
PT0
PX1
PT1
PS