Konfiguracja systemu przerwań – rejestr specjalny IE (część 2 z 3)
No więc my, programiści:

Źródło: http://demotywatory.pl/912484/Najlepsi-programisci-Google
Nie no... ja wyglądam normalnie! Ale do rzeczy.
Rejestr specjalny IE odpowiada za działanie poszczególnych przerwań. Każde przerwanie można w nim osobno włączyć lub wyłączyć.
Rejestr IE składa się z 8 bitów. Aby "uczulić" mikrokontroler na wybrane przez nas przerwanie, należy ustawić odpowiadający mu bit na wartość 1.
IE.0 - przerwanie zewnętrzne INT0
IE.1 - przerwanie z timera T0
IE.2 - przerwanie zewnętrzne INT1
IE.3 - przerwanie z timera T1
IE.4 - przerwanie z portu szeregowego
IE.5 - przerwanie z timera T2 (AT89C52)
IE.6 -
IE.7 - włącz/wyłącz system przerwań
Domyślnie system przerwań jest wyłączony. Aby mikrokontroler reagował na wybrane przez ciebie przerwanie, musisz ustawić odpowiadający mu bit oraz ustawić IE.7 na 1. Możesz to zrobić za pomocą jednej instrukcji:
MOV IE, 81h
Lub osobno:
SETB IE.0
SETB IE.7
W sumie wiele tutaj tłumaczyć nie trzeba. Jeśli masz jakieś pytanie, możesz je zadać w komentarzach poniżej.
W następnej części: Procedury obsługi przerwań. Więc lepiej zapisz się na newsletter lub na RSS :)
Co to są przerwania (część 1 z 3)
To jest pierwszy z serii trzech tekstów na temat przerwań. Moim zamiarem jest objąć w tej serii podstawowe informacje o przerwaniach (część 1), konfigurację systemu przerwań (część 2) i procedury obsługi przerwań (część 3). W pierwszej części gościnnie wystąpią Demotywatory.
W dziedzinie mikroprocesorów przerwania są to sygnały kontrolujące wykonywanie programu przez procesor. Wystąpienie przerwania powoduje, że procesor przestaje wykonywać swoje obecne czynności i przeskakuje do procedury obsługi przerwania. Gdy uC zakończy obsługę przerwania, wraca do miejsca, w którym przerwał wykonywanie programu.
program ----> przerwanie -----|
^------------------------------
Można to sobie wyobrazić na przykładzie sytuacji z życia wziętej. Zaprosiłeś znajomych i oglądacie film na kompie.
Hmmm....

O wiele lepiej
Oglądacie film, a w kuchni szykuje się żarełko. No, powiedzmy niech będą frytki w piekarniku. Co, nie mogą być? Oczywiście, że mogą, bo pasują do tego przykładu. Nie chcesz, żeby się przypaliły, więc nastawiasz sobie budzik w komórce na odpowiednią godzinę i problem z głowy.
Komóra dzwoni, ty wciskasz pauzę. I to jest właśnie przerwanie, no bo w końcu coś przerwało wam oglądanie filmu. Robisz chwilę przerwy, żeby zająć się frytkami i jak skończysz, wracasz do znajomych z pełnymi talerzami - to się zowie obsługą przerwania. Teraz wciskasz play i już możecie kontynuować oglądanie filmu, a dodatkowo jest smaczna przekąska - innymi słowy powrót z przerwania w dobrym stylu.
Proste, nie?
3 typy przerwań w uC51
Przerwania zewnętrzne. Jeśli pamiętasz oznaczenia nóżek AT89C51 i kompatybilnych układów, to przypomnij sobie dwie nóżki portu P3, oznaczone INT0# i INT1#. Te dwie nóżki mogą służyć do wysyłania sygnałów o przerwaniu zewnętrznym. # (negacja) oznacza, że podanie 0 na nóżkę wywoła przerwanie. Tego rodzaju przerwanie możesz zatem wygenerować sam, w dowolnym momencie.
Przerwania z timera. Timer działa na zasadzie zliczania impulsów generowanych przez mikrokontroler w każdym cyklu. Zliczanie odbywa się na rejestrze 8- lub 16-bitowym i gdy rejestr osiągnie wartość maksymalną, wywołane zostaje przerwanie (po czym timer zaczyna liczenie od początku).
Przerwania z portu szeregowego. Port szeregowy generuje przerwanie gdy odbierze lub wyśle 8 bitów (czyli pełny bajt). Przerwanie to oznacza, że coś trzeba zrobić w sprawie portu szeregowego: albo wysłać kolejny bajt, albo zrobić coś z bajtem przed chwilą odebranym.
W następnej części (już jest) konfiguracji systemu przerwań. Aby otrzymać informację o pojawieniu się nowego artykułu, sugeruję zapisanie się na newsletter lub kanał RSS.

