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. ć ę ć ę ę ń ń