i
i
80
System przerwań
Podczas cyklu przyjęcia przerwania są wykonywane następujące operacje:
ł
- ustawienie wewnętrznego przerzutnika poziomu przerwania (są dwa j takie przerzutniki odpowiadające wyższemu i niższemu poziomowi j priorytetu, ich stan jest sprawdzany jako trzeci wymieniony wyżej j warunek),
- wyzerowanie znacznika zgłoszenia przyjętego przerwania (nie są
zerowane znaczniki TI, RI oraz TF2 i EXF2), j
- zapisanie na stosie zawartości licznika rozkazów PC (nie jest zapisy- ] wana zawartość słowa stanu PS W),
- wpisanie do licznika rozkazów adresu początku programu obsługi j przerwania:
0003H - dla przerwania zewnętrznego INTO,
000BH - dla przerwania z licznika-czasomierza TO,
0013H - dla przerwania zewnętrznego INT1, j
001BH - dla przerwania z licznika-czasomierza Tl, 1
0023H - dla przerwania z portu szeregowego, j
002BH - dla przerwania z licznika-czasomierza T2. j
Cykl przyjęcia przerwania jest wykonywany w ciągu dwóch cykli maszynowych. Po jego zakończeniu procesor rozpoczyna realizację kolejnych cykli rozkazowych i wykonuje się program obsługi przerwania.
Program obsługi przerwania musi być zakończony rozkazem powrotu z przerwania - RETL Do chwili wykonania tego rozkazu nie j zostaje przyjęte zgłoszenie żadnego przerwania z poziomu równego lub j niższego niż poziom obsługiwanego przerwania. Wykonanie rozkazu j RETI powoduje wyzerowanie przerzutnika poziomu, ustawionego przy ' przyjęciu przerwania, oraz zdjęcie ze stosu adresu powrotu (dwa bajty) \ i wpisanie go do licznika rozkazów. i
Przerwania zewnętrzne
Przerwania zewnętrzne są zgłaszane opadającym zboczem lub niskim poziomem sygnału na wejściach INTO i INT1, przy czym sposób zgłaszania określa się programowo. Z prze-
System przerwał
81
rwaniami zewnętrznymi wiążą się bity 0-4 słowa sterującego TCON (SFR - adres 88H, adresowany bitowo - rys. 2.11). Ich znaczenie jest następujące:
TCON.O (ITO) - ustawienie sposobu zgłoszenia przerwania INTO,
TCON.l (IE0) - znacznik zgłoszenia przerwania INTO, _
TCON.2 (IT1) - ustawienie sposobu zgłoszenia przerwania INT1, TCON.3 (1E1) - znacznik zgłoszenia przerwania INT1,
przy czym
ITi = 0 - zgłoszenie poziomem niskim sygnału,
ITi = 1 — zgłoszenie opadającym zboczem sygnału.
Jeśli ITi — 0, to sygnał na wejściu INTi jest próbkowany w stanie S5P2 każdego cyklu maszynowego i jego negacja jest wpisywana do znacznika zgłoszenia IEi. Jeżeli więc zostanie wykryte INTi = 0, to do znacznika IEi wpisze się jedynka, co oznacza zgłoszenie przerwania. Nowo wprowadzona do IEi wartość będzie aktywna podczas sprawdzania przez procesor zgłoszeń przerwań dopiero w następnym cyklu maszynowym. Stan aktywny na wejściu przerywającym (INTi = 0) musi być utrzymany co najmniej do chwili przyjęcia przerwania i musi zniknąć przed zakończeniem programu jego obsługi, tzn. przed wykonaniem rozkazu RETI (w przeciwnym razie przerwanie zostanie przyjęte ponownie). Zazwyczaj w takim przypadku stosuje się w programie obsługi wysłanie sygnału potwierdzenia, kasującego zewnętrzną przyczynę przerwania (patrz też punkt 3.3).
Przy ITi — 1 sygnał na wejściu INTi jest próbkowany jak w poprzednim przypadku, a wpisanie jedynki do znacznika IEi (zgłoszenie przerwania) następuje po wykryciu zmiany 1 na 0 tego sygnału, czyli stanu wysokiego w jednym cyklu maszynowym i stanu niskiego w cyklu następnym. Konieczne jest, aby każdy ze stanów sygnału przerywającego trwał co najmniej 12 taktów zegarowych. Znacznik IEi jest zerowany automatycznie w czasie przyjęcia przerwania.
Inicjowanie systemu
Inicjowanie (zerowanie - ang. reset) mikrokomputera następuje na skutek pojawienia się stanu wysokiego