WYDZIAŁ ELEKTRYCZNY POLITECHNIKI LUBELSKIEJ
LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
Imię i Nazwisko LACHOWSKI MICHAŁ |
Grupa ED 5.3 |
||||
Data wyk. ćwicz. 15.11.96 |
Numer ćwiczenia 4 |
Temat ćwiczenia: Timery mikrokontrolera 8051. System przerwań. |
Ocena
|
1. Cel ćwiczenia.
Celem ćwiczenia było zapoznanie się systemem timerów i przerwań mikrokontrolera, a także zapoznanie z zawartością rejestrów sterujących timerami , oraz wpływem zawartości bitów tych rejestrów na tryb pracy timerów.
2. Wykonanie ćwiczenia
Zadanie 1.a
Ustawienia timerów:
Tryb pracy timera 1 - 4 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 0010 praca szybka
stan początkowy T2 = 0000
Przy danych ustawieniach timer zlicza impulsy z klawiatury sekwencyjnej. Rejestr TCON zmienił po naciśnięciu klawisza klawiatury ze stanu 0000 na stan 0100 .Stan wyświetlacza zmienił się w tym momencie o 4 w górę czyli na 0014. Po dalszym naciskaniu klawiszy zauważamy , że wyższy bajt licznika zwiększa się o 1 po zwiększeniu się młodszego bajtu o wartość 20H .Początkowe wartości wskazywane przez wyświetlacz : 0010 ; 0014 ; 0018 ; 001C ; 0120 ; 0124 ; 0128 ; 012C ... itd.
Zadanie 1.b
Ustawienia timerów:
Tryb pracy timera 1 - 4 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FEFF praca szybka
stan początkowy T2 = 0000
Stan rejestru TCON = 0000 po wciśnięciu klawisza zmienia się na 0100.Na wyświetlaczu obserwujemy kolejno : FFF3 ; FFF7 ; FFFB ; FFFF ; 0020 ; 0024 ; 0028.. ITD.
W tym punkcie obserwujemy przepełnienie licznika w momencie zmiany stanu z FFFF na 0020 zapala się dioda i stan Rej. TCON zmienia się na 1100.
Zadanie 1.c
Ustawienia timerów:
Tryb pracy timera 1 - 4 Tr1 = 0
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FEFF praca szybka
stan początkowy T2 = 0000
Przy powyższych ustawieniach układ nie reaguje na nic - żaden timer nie startuje.
Zadanie 1.d
Ustawienia timerów:
Tryb pracy timera 1 - 0 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 0000 praca wolna
stan początkowy T2 = 0000
Licznik liczy co 4. Zwiększenie TH1 następuje co każde 20H odliczone na TL1. Timer nie reaguje na klawiaturę.
Zadanie 1.e
Ustawienia timerów:
Tryb pracy timera 1 - 0 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FA00 praca szybka
stan początkowy T2 = 0000
Przepełnienie T1 występuje po osiągnięciu wartości większej od 0000, tzn. gdy wpisana jest wartość 0004 , wtedy też TCOM zmienia się z 0100 na 1100.
Praktycznie można to wytłumaczyć tym , że w programie przez nas używanym wprowadzono opóźnienia czasowe , aby możliwe było odczytywanie danych z wyświetlacza. Tak więc faktycznie TCOM przyjmuje swoją nową wartość jednocześnie z nastąpieniem przepełnienia.
Zadanie 1.f
Ustawienia timerów:
Tryb pracy timera 1 - 0 Tr1 = 0
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FA00 praca szybka
stan początkowy T2 = 0000
Licznik nie zlicza impulsów. ( Wyłączony bo Tr1 = 0 )
Zadanie 2.a
Ustawienia timerów:
Tryb pracy timera 1 - 1 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 0000 praca wolna
stan początkowy T2 = 0000
Stan na wyświetlaczu zmienia się co 4 . TH1 zwiększa się po osiągnięciu przez TL1 wartości FF.
TCOM zmienia się po naciśnięciu klawisza z 0000 na 0001.
Zadanie 2.b
Ustawienia timerów:
Tryb pracy timera 1 - 1 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FE00 praca wolna
stan początkowy T2 = 0000
Obserwujemy sytuację podobną jak w punkcie 2.a tylko po można zaobserwować przepełnienie licznika przez zapalenie diody i ustalenie w TCOM wartości 0011.
Zadanie 2.c
Ustawienia timerów:
Tryb pracy timera 1 - 1 Tr1 = 0
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FE00 praca wolna
stan początkowy T2 = 0000
Licznik nie zlicza.
Zadanie 2.d
Ustawienia timerów:
Tryb pracy timera 1 - 5 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 00DA praca szybka
stan początkowy T2 = 0000
Tryb pracy timera1 = 5 powoduje zliczanie impulsów wprowadzanych z klawiatury , wartość zmienia się co 1. Starszy bit TH1 zmienia swoją wartość po osiągnięciu przez TL1 wartości FF.
Zadanie 2.e
Ustawienia timerów:
Tryb pracy timera 1 - 5 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FFF0 praca szybka
stan początkowy T2 = 0000
Timer zlicza impulsy wprowadzane z klawiatury , każde naciśnięcie zwiększa wartość o 1.
Przepełnienie występuje po wartości FFFF , przy stanie 0000 zapala się dioda .
Zadanie 2.f
Ustawienia timerów:
Tryb pracy timera 1 - 5 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FFF0 praca szybka
stan początkowy T2 = 0000
Nic się nie zmienia.
Zadanie 3.a
Ustawienia timerów:
Tryb pracy timera 1 - 2 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 5511 praca wolna
stan początkowy T2 = 0000
TL1 zmienia się co 4 , TH1 nie zmienia się .Przy stanie 5556 zapala się dioda , przepełnienie sygnalizowane jest przy wartości 555B.
Zadanie 3.b
Ustawienia timerów:
Tryb pracy timera 1 - 4 Tr1 = 0
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = FE00 praca wolna
stan początkowy T2 = 0000
Timer T1 nie odlicza.
Zadanie 3.c
Ustawienia timerów:
Tryb pracy timera 1 - 6 Tr1 = 1
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 55FA praca szybka
stan początkowy T2 = 0000
wartość licznika |
TCON |
55FF |
0100 |
5555 |
0100 |
5556 |
1100 |
Zliczanie naciskanych klawiszy , licznik zmienia się co jeden.TH1 nie zmienia się. TL1 przed przepełnieniem 55, po przepełnieniu 56.
Zadanie 3.d
Ustawienia timerów:
Tryb pracy timera 1 - 6 Tr1 = 0
Tryb pracy timera 0 - 0 Tr0 = 0
stan początkowy T1 = 55FA praca szybka
stan początkowy T2 = 0000
Brak reakcji.
Zadanie 4.a , 4.b - brak reakcji timerów.
Zadanie 5,6,7 są podobne odpowiednio do 1,2,3 z tą różnicą że timer T1 nie reaguje na naciskanie klawiszy sekwencyjnych , tzn. punkty 5.a ... 7.d nie powodują uruchomienia timera T0.
Zadanie 8
Ustawienia timerów:
Tryb pracy timera 1 - 0 Tr1 = 1
Tryb pracy timera 0 - 3 Tr0 = 0
stan początkowy T1 = FFE0 praca wolna
stan początkowy T2 = 0000
Wartość bitu TF1 nie sygnalizuje przepełnienia timera T1. Bit TF1 sygnalizuje przepełnienie po zmianie z FC na 00. Licznik 0 w tym trybie zachowuje się tak jakgdyby oba jego bajty były oddziełnymi licznikami : zlicza o 0404 tzn. oba bajty zwiększa o 4.Wartość maksymalną licznik 0 osiąga przy wartości FCFC , dla T1 trudno zauważyć maksymalną wartość. Po przepełnieniu zapalane są obie diody.Dla zmiany trybu T1 na 4 , sygnalizacja przepełnienia odbywa się za pomocą diod ale nie jednocześnie. Najpierw dioda sygnalizująca przep. T1 , a następnie druga sygnalizująca przep. T0.