Układ czasowo-licznikowy i układ przerwań

Transkrypt

Układ czasowo-licznikowy i układ przerwań
Zachodniopomorski
Uniwersytet
Technologiczny
WYDZIAŁ ELEKTRYCZNY
Zakład Cybernetyki i Elektroniki
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
TIMERY
w mikrokontrolerach MCS’51
Opracował:
mgr in . Andrzej Biedka
Ŝ
Timer/licznik mikrokontrolera umo liwia zliczanie impulsów zegarowych (fclk/12) lub zewn trznych w
liczniku pracuj cym autonomicznie, niezale nie od programu głównego. Programista musi jedynie
zaprogramowa funkcj (tryb pracy) oraz uruchomi b d zatrzyma proces zliczania. Licznik
sygnalizuje przepełnienie zmian flagi i mo e dodatkowo wywoła stan przerwania.
Ŝ
ę
Ŝ
ą
ź
ć
ę
ć
ą
ć
Ŝ
ą
ć
Przykładowy program wykorzystuj cy timer b dzie generatorem impulsów prostok tnych z obserwacj
przebiegu na sygnalizatorze z diod LED linii portu P2.0. Dla umo liwienia obserwacji wzrokowej
cz stotliwo przebiegu musi by ni sza ni 25Hz – przyjmiemy równ 10 Hz. Wykorzystany zostanie
timer 0 w trybie 1.
ą
ę
ą
Ŝ
ą
Ŝ
ę
ś
ć
Ŝ
ć
ą
Algorytm programu przedstawia poni szy rysunek:
Ŝ
START
Zeruj linie portu P2
Inicjalizacja timera T0
Start timera T0
Czy TF0 = 1 ?
N
T
Zeruj flag TF0
ę
Neguj stan P2.0
Ładuj licznik T0
Rys. 2-1
Rys. 2-1. Algorytm programu generatora przebiegu prostok tnego dla linii P2.0
ą
Listing programu napisanego na podstawie algorytmu przedstawiono poni ej.
Ŝ
2
ą
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:
;LISTING 2-1
;
;
;
;
;
;
;
Program generatora przebiegu prostok tnego 10Hz (okres = 100msek.)
Sygnalizacja stanu na linii P2.0
Ilo
impulsów do zliczenia: N = Tp/Tcykl
gdzie:
Tp - czas
dany
Tcykl - okres impulsów wzorcowych = 1/(fclk/12)
Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080
Do licznika nale y załadowa 65536 - 46080 = 19456 = 4C00h
ą
ś
ć
Ŝ
ą
Ŝ
ć
ORG 0
; starszy bajt ilo ci impulsów
; młodszy bajt ilo ci impulsów
CZAS_HIGH EQU 4CH
CZAS_LOW
EQU 0
MOV
ś
ś
P2,#0
; zeruj wszystkie linie portu P2
; Programowanie trybu pracy timera 0
MOV
TMOD,#00000001B
; timer 0 -> tryb 1
; timer 1 -> nieu ywany, tryb 0
; programowanie ilo ci impulsów
MOV
TH0,#CZAS_HIGH
MOV
TL0,#CZAS_LOW
Ŝ
ś
SETB
PETLA:
JNB
CLR
CPL
TR0
; uruchomienie licznika
TF0,$
TF0
P2.0
; czekaj na zmian flagi na '1'
; zeruj flag
; neguj bit linii P2.0
ę
ę
; ponowne programowanie ilo ci impulsów
MOV
TH0,#CZAS_HIGH
MOV
TL0,#CZAS_LOW
ś
SJMP
PETLA
END
W programie u yto bitowego trybu adresowania do ustawienia bitu TR0 – linia 22 listingu 2-1.
Stosowanie bajtowego rozkazu ustawiania bitu TR0, jakkolwiek mo liwe, jest mniej czytelne i mniej
wygodne. Dzieje si tak, poniewa w rejestrze TCON znajduj si bity odpowiedzialne za inne funkcje
timerów, zatem nale y pami ta by nie zmieni ich stanu. Wła ciwym rozkazem bajtowym
modyfikuj cym stan rejestru b dzie:
Ŝ
Ŝ
ę
Ŝ
Ŝ
ę
ą
ą
ć
ę
ć
ś
ę
ORL
TCON,#00010000B.
Rozkaz taki mo e by jednak uzasadniony przy konieczno ci równoczesnego uruchomienia obu timerów:
Ŝ
ć
ś
ORL
TCON,#01010000B.
Dla ułatwienia programowania timera mo na wykorzysta istniej cy w mikrokontrolerze szesnastobitowy
rejestr DPTR – unika si wtedy przekształce liczby 16-bitowej na dwie 8-bitowe. W listingu 2-2 linie
19-21 zawieraj przykładowe zastosowanie rejestru DPTR do zaprogramowania timera.
Ŝ
ę
ć
ń
ą
3
ą
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:
; LISTING 2-2
; Program generatora przebiegu prostok tnego 10 Hz (okres = 100msek.)
; Sygnalizacja stanu na linii P2.0
; Ilo
impulsów do zliczenia: N = Tp/Tcykl
;gdzie: Tp - czas
dany
;
Tcykl - okres impulsów wzorcowych 1/(fclk/12)
; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080
; Do licznika nale y załadowa 65536 - 46080 = 19456
ą
ś
ć
Ŝ
Ŝ
ą
ć
ORG 0
CZAS EQU
19456
MOV
P2,#0
; zeruj wszystkie linie portu P2
; Programowanie trybu pracy timera 0
MOV
TMOD,#00000001B
MOV
MOV
MOV
DPTR,#CZAS
TH0,DPH
TL0,DPL
; timer 0 -> tryb 1
; timer 1 -> nieu ywany, tryb 0
Ŝ
SETB
PETLA:
JNB
CLR
CPL
; starszy bajt ilo ci impulsów
; młodszy bajt ilo ci impulsów
ś
ś
TR0 ; uruchomienie licznika
TF0,$ ; czekaj na zmian flagi na '1'
TF0
; zeruj flag
P2.0 ; neguj bit linii P2.0
ę
ę
; ponowne programowanie ilo ci impulsów
MOV
TH0,DPH
MOV
TL0,DPL
ś
SJMP
PETLA
END
Nale y zaznaczy , e w przypadku wykorzystania rejestru DPTR do innych, wła ciwych jego
przeznaczeniu celów, konieczne b dzie przechowywanie warto ci podzielników w innych komórkach
pami ci.
Ŝ
ć
Ŝ
ś
ę
ś
ę
Jednak e problem konwersji liczby 16-bitowej na dwie liczby 8-bitowej najlepiej i najłatwiej rozwi za
korzystaj c z dyrektyw asemblera: LOW i HIGH. Opis tych dyrektyw znajduje si w instrukcji
„Asembler MCS-51. Podstawowe informacje”.
Ŝ
ą
ą
ę
Przykładowy program, b d cy modyfikacj poprzedniego zamieszczony jest w listingu 2-3.
ę
ą
ą
4
ć
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:
; LISTING 2-3
; Program generatora przebiegu prostok tnego 10 Hz (okres = 100msek.)
; Sygnalizacja stanu na linii P2.0
; Ilo
impulsów do zliczenia: N = Tp/Tcykl
;gdzie: Tp - czas
dany
;
Tcykl - okres impulsów wzorcowych 1/(fclk/12)
; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080
; Do licznika nale y załadowa 65536 - 46080 = 19456
ą
ś
ć
Ŝ
Ŝ
ą
ć
ORG 0
CZAS EQU
19456
MOV
P2,#0
; zeruj wszystkie linie portu P2
; Programowanie trybu pracy timera 0
MOV
TMOD,#00000001B
MOV
MOV
TH0,HIGH CZAS
TL0,LOW CZAS
SETB
TR0 ; uruchomienie licznika
PETLA:
JNB
CLR
CPL
;
;
;
;
timer 0
timer 1
starszy
młodszy
-> tryb 1
-> nieu ywany, tryb 0
bajt ilo ci impulsów
bajt ilo ci impulsów
Ŝ
ś
ś
TF0,$ ; czekaj na zmian flagi na '1'
TF0
; zeruj flag
P2.0 ; neguj bit linii P2.0
ę
ę
; ponowne programowanie ilo ci impulsów
MOV
TL0,LOW CZAS
MOV
TH0,HIGH CZAS
ś
SJMP
PETLA
END
Maksymalny czas jaki mo e zliczy timer pracuj cy w trybie 1 wynosi (dla rezonatora kwarcowego
11,0592 MHz):
Ŝ
ć
ą
tmax = 216 * 1/(fclk/12) = 65536 * 1,08507 s = 71,11 ms
5
ZADANIE:
1. Napisa
program generatora przebiegu prostok tnego o parametrach
przedstawionych na poni szym rysunku. Obserwacji przebiegu dokona przy
pomocy wybranej diody LED portu P2.
ć
ą
Ŝ
ć
1sek.
100 msek.
Rys. 2-2
ZADANIA:
2.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-2 z wykorzystaniem timera pracuj cego w
trybie 0.
ć
ą
ą
3.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-2 z wykorzystaniem 2 timerów pracuj cych w
trybie 1.
ć
ą
ą
4.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-2 z wykorzystaniem 2 timerów, jednego
pracuj cego w trybie 0, drugiego pracuj cego w trybie 1.
ć
ą
ą
ą
6

Podobne dokumenty