LABORATORIUM TIMERY w mikrokontrolerach MCS`51

Transkrypt

LABORATORIUM TIMERY w mikrokontrolerach MCS`51
Zachodniopomorski
Uniwersytet
Technologiczny
WYDZIAŁ ELEKTRYCZNY
Zakład Cybernetyki i Elektroniki
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
TIMERY
w mikrokontrolerach MCS’51
Opracował:
mgr in . Andrzej Biedka
Ŝ
Timer jest jednym z podstawowych elementów wyposa enia mikrokontrolera. Schemat
podstawowej struktury timera przedstawia rysunek 2-1.
Ŝ
fclk
(fclk)/n
preskaler
/n
Zapis/Odczyt2
(sygnał CU)
S2
S1
Licznik binarny
n-bitowy
We
ś
ę
Zapis/Odczyt1
(sygnał CU)
start / stop
licznik / czasomierz
Wej cie impulsów
zewn trznych
przepełnienie
Rejestr steruj cy
ą
Magistrala danych
Rys. 2-1. Schemat blokowy timera w mikrokontrolerze
Timer składa si z programowanego licznika binarnego oraz współpracuj cego z nim rejestru
steruj cego. Zarówno licznik jak i rejestr steruj cy s przył czone do wewn trznej magistrali
danych, dzi ki czemu jednostka steruj ca mikrokontrolera (CU) mo e w dowolnym momencie
modyfikowa lub odczyta ich zawarto .
Licznik binarny najcz ciej zlicza w gór – dodaje impulsy podawane na wej cie. Impulsy
wej ciowe s bramkowane (zał czane) ł cznikiem S2 sterowanym sygnałem start/stop,
pochodz cym z rejestru steruj cego.
ródłem impulsów zliczanych mo e by :
- wewn trzny układ dzielnika cz stotliwo ci sygnału taktuj cego prac jednostki
centralnej - fclk, tzw. preskalera. W takim przypadku, wobec wzorcowej długo ci czasu
impulsu zliczanego pochodz cego najcz ciej z generatora stabilizowanego rezonatorem
kwarcowym, mówimy o funkcji czasomierza lub z j zyka angielskiego timera. Funkcja
odpowiada górnemu poło eniu przeł cznika S1. Preskaler mo e by dzielnikiem
programowanym, wówczas b dzie przył czony do magistrali danych.
- wyprowadzenie mikrokontrolera (ang. pin), na który mo na przył czy sygnał
pochodz cy z zewn trz. Wówczas urz dzenie pełni funkcj licznika (ang. counter).
Funkcja odpowiada dolnemu poło eniu przeł cznika S1.
ę
ą
ą
ą
ą
ą
ę
Ŝ
ę
ą
ć
ć
ś
ę
ś
ę
ą
ą
ą
Ź
ć
ś
ś
ą
ą
Ŝ
ć
ę
ę
ś
ą
ę
ś
ą
ę
ś
ę
Ŝ
Ŝ
ą
ć
ę
ą
Ŝ
ą
ą
ą
ą
ć
ę
Ŝ
ą
Sygnałem wyj ciowym mo e by stan licznika lub – cz ciej – jego przepełnienie sygnalizowane
zmian stanu jednego z bitów rejestru steruj cego. Dodatkowo przepełnienie licznika binarnego
mo e wywoła stan przerwania.
Nale y zaznaczy , e z uwagi na stosowanie w układach mikrokontrolerów kilku zespołów
timerów (mog cych pracowa niezale nie lub w niektórych konfiguracjach wspólnie), rejestr
steruj cy jest zbudowany z kilku rejestrów 8-bitowych.
Ŝ
ś
ć
ę
ą
ą
Ŝ
ć
Ŝ
Ŝ
ć
Ŝ
ą
ć
ą
2
ś
Istot pracy timera/licznika jest jego autonomiczno , czyli praca niezale na od programu
głównego. Niezale no
dotyczy zliczania impulsów, gdy oczywi cie sterowanie prac
timera/licznika odbywa si programowo.
Ŝ
ą
ś
ć
Ŝ
Ŝ
ś
ć
ś
ą
ę
Nowoczesne mikrokontrolery zawieraj moduły czasomierzy/liczników o bardzo
rozbudowanych funkcjach, np.: generatora PWM – cz sto wielokanałowego, generatora taktuj cego
o programowanej cz stotliwo ci, licznika zdarze zewn trznych.
ą
ę
ę
ś
ą
ę
ń
W mikrokontrolerze rodziny 8051 preskaler ma stały współczynnik podziału równy 12.
Ponadto w stosunku do podanego wy ej schematu blokowego wprowadzono dodatkowe funkcje
logiczne w obwodzie sygnału sterowania ł cznikiem S2. Uproszczony schemat ideowy timera 8051
pracuj cego w trybie 1 przedstawiono na rysunku 2-2.
Ŝ
ą
ą
fclk
układ
przerwa
TF0
12
ń
Lo -> Hi
C/T0 = 0
C/T0 = 1
TL0
TH0
8 bit
8 bit
T0pin
bit C/T0 - rejestr TMOD
bit TF0 - rejestr TCON
INT0pin
bit TR0
- rejestr TCON
bit GATE0 - rejestr TMOD
Rys. 2-2 Schemat ideowy timera 8051 pracuj cego w trybie 1
ą
Bramka AND steruj ca zał czaniem impulsów zliczanych zwiera ł cznik dla stanu wysokiego na
wyj ciu.
ą
ą
ą
ś
ZADANIA:
1. Na podstawie literatury zapozna si z funkcjami bitów w rejestrach TMOD
i TCON.
ć
ę
2. Przeanalizowa schemat przedstawiony na rysunku 2-2 i okre li warto ci bitów
TR0 i GATE0 niezb dne dla ka dego trybu pracy czasomierza/licznika.
ć
ś
ć
ś
Ŝ
ę
3. Na podstawie literatury zapozna si ze schematami ideowymi bloku
czasomierza/licznika w ka dym dost pnym trybie pracy.
ć
Ŝ
ę
3
ę
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-3. Algorytm programu generatora przebiegu prostok tnego dla linii P2.0
ą
Listing programu napisanego na podstawie algorytmu przedstawiono poni ej.
Ŝ
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:
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, (timer pracuje w trybie 1)
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 przepełnia
; 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. Jest 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.
Jedynka na pozycji D4 w stałej b d cej drugim operandem rozkazu odpowiada pozycji bitu TR0. Bit ten
zostanie ustawiony, natomiast stan pozostałych bitów rejestru TCON pozostanie niezmieniony.
Rozkaz bajtowy mo e by jednak uzasadniony przy konieczno ci równoczesnego uruchomienia obu
timerów:
ę
Ŝ
ą
ć
ś
ORL TCON,#01010000B.
Jedynki w stałej b d cej drugim operandem rozkazu odpowiadaj pozycjom bitów TR0 i TR1.
ę
ą
ą
Dla ułatwienia programowania 16-bitowego rejestru 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.
Ŝ
ę
ą
5
ć
ń
ą
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,$
TF0
P2.0
; czekaj na zmian flagi na '1'
; zeruj flag przepełnia
; 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 najwygodniejszym sposobem konwersji liczby 16-bitowej na dwie liczby 8-bitowe jest
wykorzystanie dyrektyw asemblera LOW i HIGH, opisanych w instrukcji „ASEMBLER MCS’51.
Podstawowe informacje”.
Przykładowy program z wykorzystaniem tych dyrektyw przedstawiony jest na listingu 1-3.
Ŝ
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
ZADANIA:
4.
Obliczy maksymalny czas, jaki mo e odmierzy timer w trybie 0.
5.
Obliczy maksymalny czas, jaki mo e odmierzy timer w trybie 2.
6.
Obliczy maksymalny czas jaki mo e odmierzy timer w trybie 1 przy
wykorzystaniu rezonatora kwarcowego o cz stotliwo ci 2,0 MHz .
ć
Ŝ
ć
ć
Ŝ
ć
ć
Ŝ
ć
ę
6
ś
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
; timer 0 -> tryb 1
; timer 1 -> nieu ywany, tryb 0
Ŝ
MOV
MOV
SETB
PETLA:
JNB
CLR
CPL
TL0, #LOW CZAS
TH0, #HIGH CZAS
; młodszy bajt ilo ci impulsów
; starszy bajt ilo ci impulsów
TR0
; uruchomienie licznika
TF0,$
TF0
P2.0
; czekaj na zmian flagi na '1'
; zeruj flag przepełnia
; neguj bit linii P2.0
ś
ś
ę
ę
; ponowne programowanie ilo ci impulsów
MOV
TL0, #LOW CZAS
MOV
TH0, #HIGH CZAS
ś
SJMP
PETLA
END
Podane w instrukcji przykłady programów ró ni si jedynie sposobem definiowania stałych
ładowanych do rejestrów licznika binarnego w układzie czasomierza.
Ŝ
ą
7
ę
ZADANIA:
7. Napisa
program generatora przebiegu prostok tnego o parametrach
przedstawionych na poni szym rysunku. Obserwacji przebiegu dokona przy
pomocy wybranej diody LED portu P2.
ć
ą
Ŝ
ć
1sek.
60 msek.
Rys. 2-4
8.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-4 z wykorzystaniem timera pracuj cego w
trybie 0.
ć
ą
ą
9.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-4 z wykorzystaniem 2 timerów pracuj cych
w trybie 1.
ć
ą
ą
10.
Napisa program generatora przebiegu prostok tnego o parametrach
przedstawionych na rysunku 2-4 z wykorzystaniem 2 timerów, jednego
pracuj cego w trybie 0, drugiego pracuj cego w trybie 1.
ć
ą
ą
ą
8

Podobne dokumenty