Politechnika LubelskaWydział ElektrycznyLaboratorium techniki mikroprocesorowejĆwiczenie 7: System przerwań mikrokontrolera 8051.
Paweł Czerwiec
Tomasz Wójtowicz
Rafał Sidor
1. Przyjmowanie i obsługa przerwań.Aby system przyjmował i obsługiwał przerwania decyduje odpowiednie ustawienie rejestru IE (interrupt enable)
IE7
IE6
IE5
IE4
IE3
IE2
IE1
IE0
EA
-
ES
ET1
EX1
ET0
EX0
EA - ogólne zezwolenie na przerwanieES - zezwolenie na przerwanie z transmisji szeregowejET1 - zezwolenie na przerwanie z timera 1EX1 - zezwolenie na przerwanie z wejścia INT1ET0 - zezwolenie na przerwanie z timera 0EX0 - zezwolenie na przerwanie z wejścia INT0Ustawienie odpowiedniej flagi na 1 zezwala na przyjęcie przerwania. Aby jakiekolwiek przerwanie mogło być odebrane, musi być włączone ogólne zezwolenie na przerwanie.Aby system przejmował przerwania tylko od timera 1 należy ustawić flagę ET1 a wyzerować flagi ES, EX1, ET0, EX0.
2. Kolejność przyjmowania przerwań od timerów.Testowany program reaguje tylko na przerwania od timerów. Timery uruchamiane są jednocześnie i od ustawienia stanów początkowych zliczają impulsy zegara wewnętrznego. W momencie przepełnienia się liczników następuje wysłanie przerwania. Czas upływający od startu timera do przerwania jest tym krótszy im większą wartość początkową ustawimy w timerze. Kolejność odbierania przerwań pokazana jest w poniższej tabelce.
Lp.
stan pocz. T0
stan pocz. T1
kolejność
1
0000
T0;T1
2
0001
T1;T0
3
Powyższa kolejność jest podyktowana priorytetem ważności przerwań. Kontroler 8051 w przypadku przyjęcia dwóch przerwań jednocześnie pierwsze obsługuje przerwanie, które ma wyższy priorytet. Dla timerów wyższy priorytet ma przerwanie od timera T0.
3. Kolejność przyjmowania przerwań od timerów i z linii INT1.Do linii INT1 jest dołączony przetwornik a/c, którego czas przetwarzania wynosi ok. 150 ms; po takim czasie przetwornik wysyła przerwanie na linię INT1. Dobierając odpowiednie wartości początkowe timerów możemy powodować, że przerwanie każdego z timerów mogą się pojawiać przed i po przerwaniu z linii INT1. Kolejność przyjmowania przerwań przez system przy różnych kombinacjach kolejności wysyłania przerwań przedstawiony jest w poniższej tabelce.
FFFF
T0;T1;Y0
FF80
FF40
T0;Y0;T1
4
FF10
Y0;T0;T1
5
ZABLOKOWANY
T1;Y0
Przy jednoczesnym przyjęciu przerwań z T0;T1;INT1 system najpierw obsłuży przerwanie z T0, potem z INT1, a na końcu z T1.
4. Programowe ustawianie priorytetów przerwań.W systemie 8051 można ustawiać priorytety zmieniając stany bitów rejestru IP. Każde przerwanie ma w rejestrze IP swój bit priorytetu. Ustawienie odpowiednich bitów w rejestrze IP ustala dla każdego przerwania poziom priorytetu. Poziom 1 posiada wyższy priorytet niż poziom 0. Obsługa innego przerwania może być przerwana tylko przez przerwanie o wyższym priorytecie. Przerwanie o priorytecie niższym lub równym od obsługiwanego musi zaczekać na koniec obsługi. Poniżej jest przedstawiona kolejność obsługi przerwań od timerów T0 i T1 w zależności od ustawionych priorytetów.
Timer 0
Timer 1
Kolejność
Stan pocz.
Pr.
0
...
tomasz.kubiak.sap