Přerušovací podsystém
Přerušení je reakce programu na vnější událost. Běžící program je v daném místě přerušen a začne se vykonávat tzv. obsluha přerušení. Po ukončení obsluhy přerušení pokračuje program ve své činnosti v místě, kde byl přerušen.
uP 8051 má 5 zdrojů přerušení
2x externí přerušení
- vývody INT0 a INT1 - příznaky IE0 a IE1 (reg. TCON)
2x čítač/časovač
- příznaky TF0 a TF1 (reg.TCON)
Sériový kanál - příznaky RI a TI (reg. SCON)
Řadič přerušení:
Obsluhy jednotlivých přerušení začínají na těchto adresách:
Adresa 003h 00Bh 013h 01Bh 023h |
Přerušení Externí přerušení 0 (INT0) Přerušení od čítače/časovače 0 (C/T0) Externí přerušení 1 (INT1) Přerušení od čítače/časovače 1 (C/T1) Přerušení od sériového kanálu |
Abychom mohli přerušení používat, musíme je povolit:
Registr IE (Povolení=1 / Zakázání=0)
Bit IE.7 IE.4 IE.3 IE.2 IE.1 IE.0 |
název EA ES ET1 EX1 ET0 EX0 |
funkce -povolení / zakázání všech přerušení -povolení / zakázání přerušení od sériového kanálu -povolení / zakázání přerušení od čítače / časovače 1 -povolení / zakázání externího přerušení 1 -povolení / zakázání přerušení od čítače / časovače 0 -povolení / zakázání externího přerušení 0 |
U přerušení lze nastavit 2 úrovně priority:
- obsluhu přerušení s nízkou prioritou lze přerušit přerušením s vysokou prioritou
- obsluhu přerušení s vysokou prioritou nelze přerušit
- jsou-li aktivována dvě přerušení zároveň, tak se nejdříve provede obsluha přerušení
s vysokou prioritou. V případě, že obě přerušení mají stejnou prioritu, rozhoduje
hardwarová priorita ( ext. prerusení 0 má nejvyšší a sériový kanál nejnižší prioritu ).
Prioritu lze nastavit pomocí registru IP:
Registr IP (vysoká priorita = 1 / nízká priorita = 0)
Bit IP.4 IP.3 IP.2 IP.1 IP.0 |
název PS PT1 PX1 PT0 PX0 |
funkce priorita přerušení od sériového kanálu priorita přerušení od č / č 1 priorita externího přerušení 1 priorita přerušení od č / č 0 priorita externího přerušení 0 |