Układ przerwań uC`51

Transkrypt

Układ przerwań uC`51
Zachodniopomorski
Uniwersytet
Technologiczny
WYDZIAŁ ELEKTRYCZNY
Zakład Cybernetyki i Elektroniki
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
Ń
SYSTEM PRZERWA
MCS’51
Opracował:
mgr in . Andrzej Biedka
Ŝ
Uwolnienie procesora od ci głego sprawdzania stanu bitu flagi przepełnienia timera/licznika
(TF0 lub TF1) jest mo liwe przy wykorzystaniu przerwania. Uruchomienie systemu przerwa wymaga
jego zaprogramowania – inicjalizacji. Ze wzgl du na lokalizacj wektorów przerwa w pocz tkowym
obszarze pami ci ROM i fabryczne przypisanie ich adresów struktura programu wykorzystuj cego
przerwania powinna mie nast puj c posta :
ą
Ŝ
ń
ę
ę
ń
ą
ę
ą
ć
ę
ą
ą
ć
1 ; LISTING 3-1
2 ; Struktura programu z wykorzystaniem przerwa
3
4 WEKTOR_T0
EQU 0BH
5 WEKTOR_T1
EQU 01BH
6
7
ORG 0
8
9
LJMP START
10 ; ********************************
11
ORG WEKTOR_T0
12
LJMP OBSLUGA_T0
13
14
ORG WEKTOR_T1
15
LJMP OBSLUGA_T1
16 ;********************************
17 START:
18 ; Program główny
19
Inicjalizacja timerów i przerwa
20 PETLA:
21
instrukcja 1
22
instrukcja 2
23
. . .
24
instr n
25
LJMP PETLA
26
27 ;********************************
28 OBSLUGA_T0:
29 ; Program obsługi przerwania timera T0
30
xxx
31
xxx
32
RETI
33
34 ;********************************
35 OBSLUGA_T1:
36 ; Program obsługi przerwania timera T1
37
yyy
38
yyy
39
RETI
40
41
END
ń
ń
Pierwsz instrukcj w programie jest rozkaz skoku do etykiety START, omijaj cy obszar
wektorów przerwa . Obszar wektorów przerwa zorganizowany jest w postaci tablicy skoków
po rednich do wła ciwych procedur obsługi tych przerwa . Konieczno stosowania skoków
po rednich wynika z tylko o miobajtowego odst pu mi dzy poszczególnymi wektorami, co
najcz ciej nie pozwala na „zmieszczenie” kodu programu obsługi przerwania.
ą
ą
ą
ń
ś
ń
ś
ś
ń
ś
ę
ś
ę
ę
ś
ć
Nast pnie znajduje si kod programu głównego tworz cy p tl . Wobec zastosowania skoków
długich (LJMP adres) kolejno
umieszczenia programów obsługi przerwa i programu
głównego jest dowolna.
ę
ę
ą
ś
ę
ę
ć
ń
Je li w danym programie wykorzystane jest tylko jedno ródło przerwa struktur programu
mo na upro ci do postaci:
ś
ź
Ŝ
ś
ń
ę
ć
1 ; LISTING 3-2
2 ; Struktura programu z wykorzystaniem jednego przerwania
3
4 WEKTOR_T0
EQU 0BH
5
6
ORG 0
7
8
LJMP START
9 ; *********************************
10
ORG WEKTOR_T0
11 ; Program obslugi przerwania timera T0
12
xxx
13
xxx
14
RETI
15
16 ;********************************
17 START:
18 ; Program glowny
19
Inicjalizacja timera 0 i jego przerwania
20
21 PETLA:
22
instr 1
23
instr 2
24
. . .
25
instr n
26
LJMP PETLA
27
28
END
W powy szym przykładzie struktury nie s potrzebne skoki po rednie, poniewa mo e wyst pi
co najwy ej tylko jedno przerwanie. Zatem mo na wykorzysta pami programu obszaru
innych wektorów na umieszczenie kodu obsługi jednego przerwania – w tym wypadku od
przepełnienia timera 0.
Ŝ
ą
Ŝ
ś
Ŝ
Ŝ
ć
ę
Ŝ
ą
ć
ć
Przykładowy program generowania przebiegu prostok tnego o cz stotliwo ci 10 Hz,
obserwowanego na diodzie LED linii P2.0 przedstawia listing 3-3.
ą
ę
ś
1: ; LISTING 3-3
2: ; Program generatora przebiegu prostok tnego 10Hz
3: ; z wykorzystaniem przerwa
4:
5: WEKTOR_T0
EQU 0BH
6: PODZIELNIK
EQU 19456
; 65536 - (50msek/1,08507usek)
7:
; Kwarc = 11,0592MHz
8:
9:
ORG 0
10:
11:
LJMP START
12:
13:
ORG WEKTOR_T0
14: ; Program obsługi przerwania timera T0
15:
16:
MOV TL0, LOW PODZIELNIK ; odtworzenie zadanego czasu
17:
MOV TH0, HIGH PODZIELNIK
18:
CPL P2.0
; neguj stan diody LED
19:
RETI
; powrót z przerwania
20:
21: ;********************************
22: START:
23: ; Program główny
24:
MOV P2,#1
; zerowanie linii P2.7 - P2.0
25:
26:; Inicjalizacja TIMERA 0
27:
28:
MOV TMOD,#00000001B
; ustawienie trybu 1
29:
MOV TH0,HIGH PODZIELNIK ; Ładowanie starszego bajtu
30:
MOV TL0,LOW PODZIELNIK
; Ładowanie mlodszego bajtu
31:
32:
SETB TR0
; Start timera T0
33:
34: ; Inicjalizacja PRZERWANIA
35:
36:
SETB ET0
; Zezwolenie na przerwanie od timera 0
37:
SETB EA
; Globalne zezwolenie na przerwanie
38:
39:
SJMP $
; "P tla główna" programu
40:
41:
END
ą
ń
ę
W programie obsługi przerwania, który zostaje wykonany po przepełnieniu timera (linie 13 – 19) nie ma
instrukcji kasowania flagi TF0, poniewa zadanie to wykonywane jest automatycznie przez jednostk
steruj c mikrokontrolera w chwili przyj cia przerwania.
Jest to zachowanie odmienne od wyst puj cego przy obsłudze timera przez sprawdzanie stanu bitu flagi
przepełnienia czyli przez tzw. polling.
Ŝ
ą
ą
ę
ę
ę
ą
W nast pnym przykładzie programu w p tli głównej (linie 39-46) znajduje si procedura generowania
przebiegu prostok tnego w linii portu P2.7. Zastosowane do wytworzenia zwłoki czasowej dwa rejestry
pracuj ce z maksymaln wpisywana warto ci 255 umo liwiaj wzrokow obserwacj efektu migania
diody P2.7. W programie pracuj niezale nie dwa procesy:
1. sterowane przez p tl programu głównego miganie diody P2.7
2. sterowane przez przerwanie timera 0 miganie diody P2.0
ę
ę
ę
ą
ą
ą
ś
ą
ę
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
ą
Ŝ
ą
ą
ę
Ŝ
ę
; LISTING 3-4
; Program generatora przebiegu prostok tnego 10Hz
; z wykorzystaniem przerwa
ą
ń
WEKTOR_T0 EQU
PODZIELNIK
0BH
EQU
19456
; 65536 - (50msek/1,08507usek)
; Kwarc = 11,0592MHz
ORG 0
LJMP START
ORG WEKTOR_T0
; Program obsługi przerwania timera T0
MOV TL0, LOW PODZIELNIK ; odtworzenie zadanego czasu
MOV TH0, HIGH PODZIELNIK
CPL P2.0
; neguj stan diody LED
RETI
; powrót z przerwania
;********************************
START:
; Program główny
MOV P2,#1
; zerowanie linii P2.7 - P2.0
; INICJALIZACJA TIMERA 0
MOV
MOV
MOV
TMOD,#00000001B
; ustawienie trybu 1
TH0, HIGH PODZIELNIK ; Ładowanie starszego bajtu
TL0, LOW PODZIELNIK ; Ładowanie młodszego bajtu
SETB TR0
; Start timera T0
; INICJALIZACJA PRZERWANIA
SETB ET0
SETB EA
PETLA:
MOV
PETLA1:
MOV
DJNZ
DJNZ
CPL
SJMP
END
; Zezwolenie na przerwanie od timera 0
; Globalne zezwolenie na przerwanie
; "P tla główna", pulsowanie diody P2.7
ę
R7,#255
R6,#255
R6,$
R7,PETLA1
P2.7
PETLA
ZADANIA:
5. Napisa
program generatora przebiegu prostok tnego o parametrach
przedstawionych na poni szym rysunku, z wykorzystaniem przerwania.
Obserwacji przebiegu dokona przy pomocy wybranej diody LED portu P2.
ć
ą
Ŝ
ć
1sek.
50 msek.
Rys. 2-3
6. Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-3 z wykorzystaniem timera pracuj cego w trybie
0 z obsług przerwa .
ć
ą
ą
ą
ń
7. Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-3 z wykorzystaniem 2 timerów pracuj cych w
trybie 1 z obsług przerwa .
ć
ą
ą
ą
ń
8. Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-3 z wykorzystaniem 2 timerów, jednego
pracuj cego w trybie 0, drugiego pracuj cego w trybie 1 z obsług przerwa .
ć
ą
ą
ą
ą
9. Wyznaczy czas niezb dny do przyj cia i zako czenia obsługi przerwania,
uwzgl dni ten czas w stałych ładowania rejestrów timerów.
ć
ę
ć
ę
ę
ń
ń