LABORATORIUM PODSTAW TECHNIKI MIKROPROCESOROWEJ |
|||
GAWRON MARCIN DZIKOWSKA DOROTA |
Ćw. nr. 11 |
ED 5.1 |
|
Data wyk. Ćw. 1999-01-118 |
Temat : Systemy przerwań mikrokontrolera 8051.
|
Zadanie nr.1
Obsługa przerwania Timera0, Timera1, Timera0 i INT1.
;************************************************
;ĆWICZENIE 7 - SYSTEM PRZERWAŃ 8051
;ZADANIE 1 - ŹRÓDŁA PRZERWAŃ W 8051
;************************************************
;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G EQU 0 ;GATE
T0_C EQU 0 ;COUNTER/-TIMER
T0_M EQU 1 ;MODE (0..3)
TIM0 EQU T0_M+T0_C*4+T0_G*8
;TIMER 1
T1_G EQU 0 ;GATE
T1_C EQU 0 ;COUNTER/-TIMER
T1_M EQU 1 ;MODE (0..3)
TIM1 EQU T1_M+T1_C*4+T1_G*8
TMOD_SET EQU TIM0+TIM1*16
TH0_SET EQU 00H ;stan początkowy Timera 0. Starszy bajt.
TL0_SET EQU 00H ;Młodszy bajt.
TH1_SET EQU 00H ;stan początkowy Timera 1. Starszy bajt.
TL1_SET EQU 00H ;Młodszy bajt.
;**************************************
LJMP START
;********* Przerwanie Timer 0 *********
ORG 0BH
LCALL JEST_T0
RETI
;********* Przerwanie INT1 (AC) *********
ORG 13H
LCALL JEST_I1
RETI;******** Przerwanie Timer 1 *********
ORG 1BH
LCALL JEST_T1
RETI
;******************************************************************
; Program główny
;
;******************************************************************
ORG 100H
START:
SETB EA
SETB ET0
SETB EX1
LCALL INICJALIZACJA ;inicjalizacja źródeł przerwań
LOOP:
SJMP LOOP ;koniec programu głównego
Przez rozkazy SETB EA, SETB ET0, SETB EX1 zostaje ustawiona wartość odpowiednich flag w stan 1, co powoduje zezwolenie na przerwanie. Rozkaz SETB EA ustawia zezwolenie ogólne na przerwanie, natomiast rozkazy SETB ET0, SETB EX1 powoduje uaktywnienie zezwolenia na przerwanie z Timera0 i wejścia INT1. Na wyświetlaczu LCD pojawia się napis I1T0. Wpisanie przed rozkaz SETB EX1 znaku średnika powoduje, że linia ta jest traktowana jako komentarz. Rozkaz nie będzie więc wykonany. Uaktywnione zostanie tylko zezwolenie na przerwanie ogólne oraz od Timera0, a na wyświetlaczu LCD pojawi się napis T0. Wstawienie na miejsce rozkazu SETB ET0 rozkazu SETB ET1 uaktywnienie zezwolenia na przerwanie z Timera1. Na wyświetlaczu LCD pojawia się napis T1.
Zadanie nr.2
Ustawienia przerwań od timerów.
Wartości początkowe timerów ustawia się przez przypisanie poleceniem EQU określonych wartości poleceniom TH0_SET, TL0_SET, TH1_SET, TL1_SET. W zależności od ustawień początkowych inna jest kolejność wykonania przerwania. Wpisanie następujących wartości początkowych powoduje wyświetlenie odpowiedniej kolejności komunikatu o obsłudze przerwania:
Lp |
Stan pocz. To |
Stan pocz. T1 |
Kolejność |
1 |
0000 |
0000 |
T0 T1 |
2 |
0000 |
0001 |
T1 T0 |
3 |
0001 |
0000 |
T1 T0 |
Zadanie nr.3
Przerwania z timerów 0 i 1 oraz linii INT1.
Lp |
Stan pocz. To |
Stan pocz. T1 |
Kolejność |
1 |
FFFF |
FFFF |
T0 T1 Y0 |
2 |
FF80 |
FF80 |
T0 T1 Y0 |
3 |
FF40 |
FF40 |
T0 Y0 T1 |
4 |
FF10 |
FF10 |
Y0 T0 T1 |
5 |
zablokowany |
FF40 |
Y0 T1 |
Obsługa przerwania od Timera0 sygnalizowana jest znakami T0, obsługa przerwania od Timera1 sygnalizowana jest znakami T1, obsługa przerwania z linii INT1 (przetwornik A/C) sygnalizowana jest znakami Y0.
Zadanie nr.4
Ustawienia wartości początkowych timerów i bitów priorytetów.
Ustawienia wartości początkowych timerów dokonuje się jak poprzednio. Ustawienia bitów priorytetów dokonuje się przez zerowanie lub ustawienie w stan 1 odpowiednie flagi z rejestru IP przez rozkazy: SETB ET1, CLR PT1, SETB PT1, SETB ET0, CLR PT0, SETB PT0. Kolejność obsługi przerwania określona jest wysokością priorytetu i obsługa następuje od najwyższego priorytetu.
W zależności od ustawień uzyskuje się kolejności obsługi przerwań:
Lp |
Timer 0 |
Timer 1 |
Kolejność |
||
|
Stan pocz. |
Pr. |
Stan pocz. |
Pr. |
|
1 |
0000 |
0 |
0000 |
0 |
T0 T1 |
2 |
0000 |
0 |
0000 |
1 |
T1 T0 |
3 |
0000 |
0 |
0001 |
0 |
T1 T0 |
4 |
0000 |
1 |
0001 |
0 |
T0 T1 |
5 |
0000 |
1 |
0001 |
1 |
T1 T0 |