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 Ŝ podstawowej struktury timera przedstawia rysunek 2-1. enia mikrokontrolera. Schemat f clk preskaler /n (f clk )/n Zapis/Odczyt2 (sygnał CU) Wejś cie impulsów zewnę trznych Zapis/Odczyt1 (sygnał CU) S1 S2 licznik / czasomierz start / stop Rejestr sterują cy We Licznik binarny n-bitowy przepełnienie 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 - f clk, 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. f clk 12 TF0 Lo -> Hi układ przerwań T0pin C/T0 = 0 C/T0 = 1 TL0 TH0 8 bit 8 bit INT0pin bit C/T0 - rejestr TMOD bit TF0 - rejestr TCON 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: ;LISTING 2-1 2: 3: ; Program generatora przebiegu prostoką tnego 10Hz (okres = 100msek.) 4: ; Sygnalizacja stanu na linii P2.0 5: ; Iloś impulsów do zliczenia: N = Tp/Tcykl, (timer pracuje w trybie 1) 6: ; gdzie: Tp - czas dany 7: ; Tcykl - okres impulsów wzorcowych = 1/(fclk/12) 8: ; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 9: ; Do licznika naleŝ y załadować 65536-46080 = 19456 = 4C00h 10: 11: ORG 0 12: 13: CZAS_HIGH EQU 4CH ; starszy bajt iloś ci impulsów 14: CZAS_LOW EQU 0 ; młodszy bajt iloś ci impulsów 15: 16: MOV P2,#0 ; zeruj wszystkie linie portu P2 17: 18: ; Programowanie trybu pracy timera 0 19: MOV TMOD,#00000001B ; timer 0 -> tryb 1 20: ; timer 1 -> nieuŝ ywany, tryb 0 21: ; programowanie iloś ci impulsów 22: MOV TH0,#CZAS_HIGH 23: MOV TL0,#CZAS_LOW 24: 25: SETB TR0 ; uruchomienie licznika 26: PETLA: 27: JNB TF0,$ ; czekaj na zmianę flagi na '1' 28: CLR TF0 ; zeruj flagę przepełnia 29: CPL P2.0 ; neguj bit linii P2.0 30: 31: ; ponowne programowanie iloś ci impulsów 32: MOV TH0,#CZAS_HIGH 33: MOV TL0,#CZAS_LOW 34: 35: SJMP PETLA 36: 37: 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: ; LISTING 2-2 2: 3: ; Program generatora przebiegu prostoką tnego 10 Hz (okres = 100msek.) 4: ; Sygnalizacja stanu na linii P2.0 5: ; Iloś impulsów do zliczenia: N = Tp/Tcykl 6: ;gdzie: Tp - czas dany 7: ; Tcykl - okres impulsów wzorcowych 1/(fclk/12) 8: ; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 9: ; Do licznika naleŝ y załadować 65536-46080 = 19456 10: 11: ORG 0 12: 13: CZAS EQU 19456 14: MOV P2,#0 ; zeruj wszystkie linie portu P2 15: ; Programowanie trybu pracy timera 0 16: 17: MOV TMOD,#00000001B ; timer 0 -> tryb 1 18: ; timer 1 -> nieuŝ ywany, tryb 0 19: MOV DPTR,#CZAS 20: MOV TH0,DPH ; starszy bajt iloś ci impulsów 21: MOV TL0,DPL ; młodszy bajt iloś ci impulsów 22: 23: SETB TR0 ; uruchomienie licznika 24: PETLA: 25: JNB TF0,$ ; czekaj na zmianę flagi na '1' 26: CLR TF0 ; zeruj flagę przepełnia 27: CPL P2.0 ; neguj bit linii P2.0 28: 29: ; ponowne programowanie iloś ci impulsów 30: MOV TH0,DPH 31: MOV TL0,DPL 32: 33: SJMP PETLA 34: 35: 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): t max = 2 16 * 1/(f clk /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: ; LISTING 2-3 2: 3: ; Program generatora przebiegu prostoką tnego 10 Hz (okres = 100msek.) 4: ; Sygnalizacja stanu na linii P2.0 5: ; Iloś impulsów do zliczenia: N = Tp/Tcykl 6: ;gdzie: Tp - czas dany 7: ; Tcykl - okres impulsów wzorcowych 1/(fclk/12) 8: ; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 9: ; Do licznika naleŝ y załadować 65536-46080 = 19456 10: 11: ORG 0 12: 13: CZAS EQU 19456 14: MOV P2,#0 ; zeruj wszystkie linie portu P2 15: ; Programowanie trybu pracy timera 0 16: 17: MOV TMOD,#00000001B ; timer 0 -> tryb 1 18: ; timer 1 -> nieuŝ ywany, tryb 0 19: 20: MOV TL0, #LOW CZAS ; młodszy bajt iloś ci impulsów 21: MOV TH0, #HIGH CZAS ; starszy bajt iloś ci impulsów 22: 23: SETB TR0 ; uruchomienie licznika 24: PETLA: 25: JNB TF0,$ ; czekaj na zmianę flagi na '1' 26: CLR TF0 ; zeruj flagę przepełnia 27: CPL P2.0 ; neguj bit linii P2.0 28: 29: ; ponowne programowanie iloś ci impulsów 30: MOV TL0, #LOW CZAS 31: MOV TH0, #HIGH CZAS 32: 33: SJMP PETLA 34: 35: 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. 60 msek. 1sek. 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