W procesorze 8051 znaleźć możemy bardzo przyjemny system przerwań. Potrafi on rozróżnić sześć źródeł przerwania, zagnieżdżać je oraz ustawiać priorytety.
| Kolejność obsługi | Źródło | Znacznik | Adres obsługi |
|---|---|---|---|
| 0 | External 0 | IE0 | 0003h |
| 1 | Timer 0 | TF0 | 00Bh |
| 2 | External 1 | IE1 | 0013h |
| 4 | Timer 1 | TF1 | 001Bh |
| 5 | Serial | RI/TI | 0023h |
Możliwe jest włączanie bądź wyłaczanie obsługi poszczególnych przerwań poprzez modyfikację bajtu pod adresem A8h (IE SFR).
PC zostaje wrzucona na stos,External ustawiane są odpowiednie flagi,
Po zakończeniu obsługi przerwania należy wykonać polecenie RETI. Zauważ, że to nie RET - RETI oprócz powrotu m.in. odblokowuje zablokowane przerwania.
Każdemu przerwaniu możemy ustawić priorytet. Wybór mamy szeroki: Wysoki i Niski
Do czego służą priorytety? Podczas wywoływania przerwania blokowane są wszystkie inne przerwania o priorytecie takim samym lub niższym. Czyli, jeśli wyskoczy nam przerwanie o niskim priorytecie, to może je przerwać przerwanie o wysokim priorytecie, ale te o niskim będzie musiało poczekać. Jednak przerwania o wysokim priorytecie nie da się przerwać.
Zauważmy też kolejność obsługi. Co się stanie, jeśli w tym samym czasie pojawią się dwa przerwania? Oczywiście, najpierw wykona się te o wyższym priorytecie. Ale co, jeśli pojawią się dwa przerwania o takim samym priorytecie? Oczywiście, najpierw wykona się to, które ma niższą kolejność.