Płytka bazowa mikrokontolera 80C552, część 8
Artykuł zredagowany przez Pana Mirosława Kowalskiego
Data dodania opublikowania artykułu na tej stronie: 2011-10-12 19:57:04

W dokumentacji technicznej producent procesora podaje przykład efektownego i ciekawego programu obsługi interfejsu I2C procesora.Zajmuje on jedną, wybraną, pamięci programu i zaczyna się od samego jej początku.Obsługa przerwania rozpoczyna się skokiem pod adres 12cint.Najpierw odkładana jest na stos bieżąca zawartość rejestru statusowego procesora PSW, który w trakcie obsługi przerwania będzie zmieniany.Potem na stos odkładany jest kod statusu przerwania odczytany z rejestru S1STA i numer strony pamięci na której znajduje się program obsługujący przerwanie zapisany w rejestrze hadd.Krótki programik kończy się rozkazem RET.Zgodnie z zasadami działania procesora traktuje on dwie ostatnie dodane odłożone na stos jako adres powrotny który ma skończyć.
I rzeczywiście, znajdzie się pod tym adresem dalszy ciąg programu obsługi przerwania odpowiedni dla zgłaszanego statusu.Łatwo to sprawdzić.Jeżeli pojawia się przerwanie magistrali I2C ze statusem o numerze 018h (oznacza on, że po wysłaniu adresu urządzenia podporządkowanego odebrano z tego urządzenia potwierdzenie), to program skończy pod adres 0418h. i znajdzie tam dalszy ciąg obsługi tego zdarzenia.To właśnie jest przyczyną, że obsługujące przerwanie magistrali zajmują jedną stronę pamięci i zaczynają się na jej początku.Najmniejszy kod statusu wynosi bowiem 00h.Na zakończenie obsługi przerwania odtwarzany jest pierwotny PSW i wykorzystywany rozkaz RTI - powrót z przerwania.