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 ReportTranscript 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