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