Wydział Elektroniki i Telekomunikacji
MIKROKONTROLER 8051
Klawiatura przeglądana sekwencyjnie
Timery mikrokontrolera
Poznań 2009
Politechnika Poznańska,Wydział Elektroniki i Telekomunikacji
Klawiatura przeglądana sekwencyjnie, Timery mikrokontrolera
___________________________________________________________________________________________________
I. Klawiatura przeglądana sekwencyjnie.
Porty mikrokontrolera 8051 mogą być portami zarówno wyjściowymi jak i
wejściowymi. W rzeczywistości są to tzw. porty pseudo-dwukierunkowe. JeŜeli pełnią
one rolę portów wyjściowych, to po prostu naleŜy do nich wpisywać odpowiednie dane.
W ten sposób poszczególne linie są ustawiane w stan 0 lub 1. JeŜeli jednak wybrane
linie mają spełniać funkcję linii wejściowych, to naleŜy ustawić je w stan 1.
Jak z tego widać, moŜna indywidualnie decydować o tym, które linie portu są liniami
wejściowymi. Port mikrokontrolera został tak zbudowany, aby linia ustawiona w stan 1
mogła być z zewnątrz ustawiona na 0. PoniewaŜ po sygnale RESET wszystkie porty
mikrokontrolera są ustawione w stan 1, mogą od razu pełnić funkcję wejść.
W systemie DSM-51 część linii portu P3 jest wykorzystywanych jako linie wejściowe.
Między innymi linia 5 (P3.5) jest wykorzystana do odczytu stanu klawiatury
wyświetlacza 7-segmentowego.
Klawiatura ta jest zbudowana z sześciu klawiszy oznaczonych odpowiednio jako [↵],
[Esc], [←], [→], [↑], [↓]. Gdyby kaŜdy z tych klawiszy podłączyć indywidualnie do
mikrokontrolera, to zajęłoby to aŜ 6 linii wejściowych. Jak juŜ wspomniano, w systemie
DSM-51 jedynie linia P3.5 jest przeznaczona na ten cel. Tak duŜa oszczędność jest
moŜliwa dzięki powiązaniu klawiatury z wyświetlaczem 7-segmentowym przeglądanym
programowo.
W systemach mikroprocesorowych, w których uŜywa się wyświetlacza 7-
segmentowego, ten sposób podłączania klawiatury jest bardzo popularny. O tym, który
klawisz moŜna aktualnie odczytać przez linię P3.5, decyduje bufor wyjściowy
podłączony do szyny mikrokontrolera. Jest to ten sam bufor, który decyduje o wyborze
wskaźnika, który ma aktualnie świecić, czyli bufor wyboru wskaźnika. Wynika z tego,
Ŝe jeŜeli aktualnie wyświetlane są dane na pierwszym wskaźniku, to jednocześnie
moŜna odczytać stan klawisza 1 (w systemie DSM-51 jest to klawisz [↵]). Sposób
przyporządkowania wszystkich klawiszy odpowiednim bitom wpisanym do bufora
wyboru wskaźnika przedstawia poniŜsza tabela.
Bit wyboru wskaźnika Odczytywany klawisz
0
[↵]
1
[Esc]
2
[→]
3
[↑]
4
[↓]
5
[←]
6
P1.6
- Włączanie wyświetlacza 7-segmentowego.
0FF30H - bufor wyboru wskaźnika.
1
Politechnika Poznańska,Wydział Elektroniki i Telekomunikacji
Klawiatura przeglądana sekwencyjnie, Timery mikrokontrolera
___________________________________________________________________________________________________
II. Timery mikrokontrolera.
Mikrokontroler 8051 posiada dwa timery 16-bitowe. Mogą one pracować zarówno jako
timery (liczą impulsy z rezonatora kwarcowego podzielone przez 12), jak i jako liczniki
(liczą impulsy podłączone do linii wejściowej mikrokontrolera). Zliczanie odbywa się
na liczbach 16-bitowych, znaczy to, Ŝe maksymalna wartość wynosi 65536.
Przepełnienie w liczniku, tzn. przejście ze stanu FFFFH do 0000H jest sygnalizowane
odpowiednią flagą. W tym momencie moŜe być równieŜ zgłaszane przerwanie do
mikrokontrolera. Stan początkowy licznika moŜe być dowolnie ustawiany tak, aby
zakończenie zliczania (ustawienie flagi bądź przerwanie) oznaczało odliczenie
zadanego czasu.
Timer moŜe liczyć impulsy zewnętrzne podłączone do linii procesora: Timer 0 z linii
P3.4 zwanej teŜ T0, Timer 1 z linii P3.5 zwanej teŜ T1.
W systemie DSM-51 do linii T1 podłączona jest klawiatura wyświetlacza
7-segmentowego. UŜywając uaktywnionych klawiszy z tej klawiatury moŜna podawać
impulsy do linii T1. Liczba naciśnięć klawiszy moŜe być policzona na Timerze 1.
Wszystkie rejestry związane z timerami są połoŜone w obszarze rejestrów specjalnych.
NaleŜą do nich:
TL0 - młodsza część Timera 0 (8 bitów)
TH0 - starsza część Timera 0 (8 bitów)
TL1 - młodsza część Timera 1 (8 bitów)
TH1 - starsza część Timera 1 (8 bitów)
TMOD
- ustawia tryb pracy timerów 0 i 1
TCON - 4 bity z tego rejestru sterują pracą timerów.
Cztery młodsze bity rejestru TMOD ustawiają tryb pracy Timera 0, natomiast 4 starsze
w sposób analogiczny ustawiają Timer 1.
Timer 1
Timer 0
GATE C/T
M1
M0 GATE C/T
M1
M0
Bit C/T decyduje o pracy jako timer lub licznik. Stan 0 powoduje zliczanie impulsów
wewnętrznego zegara mikrokontrolera (rezonator kwarcowy/12), natomiast stan 1 -
impulsów zewnętrznych z wejścia Tx.
Bit GATE decyduje o sposobie kontrolowania pracy timera. Przy 0 start/stop timera
odbywa się przez ustawienie bitu TRx (z rejestru TCON). Przy 1 dodatkowo o pracy
timera decyduje stan linii INTx.
Dwa bity M1 i M0 ustawiają odpowiedni tryb pracy timera - 0...3.
W rejestrze TCON znajdują się po dwa bity sterujące dla kaŜdego timera.
TRx 1 - start timera,
0 - zatrzymanie timera.
TFx
Flaga przepełnienia - ustawiona automatycznie na 1 w momencie przekroczenia
zakresu timera.
2
Politechnika Poznańska,Wydział Elektroniki i Telekomunikacji
Klawiatura przeglądana sekwencyjnie, Timery mikrokontrolera
___________________________________________________________________________________________________
Timery w mikrokontrolerze 8051 mogą pracować w czterech róŜnych trybach.
W trybie 0 timer pracuje jako rejestr 13-bitowy, tzn. TL1 traktowany jest jako rejestr
5-bitowy. Rejestr ten jest w rzeczywistości nadal rejestrem 8-bitowym i cały jest
zwiększany, ale przeniesienie z rejestru TL1 do rejestru TH1 jest generowane przy
przepełnieniu młodszych 5 bitów rejestru TL1. Tak skonfigurowany timer moŜe liczyć
do wartości 8192.
W trybie 1 timer pracuje jako pełny rejestr 16-bitowy. W tym trybie ustawienie flagi
TF1 następuje przy doliczeniu do wartości 65536. Ustawiając odpowiednio wysoką
wartość początkową moŜna to zaobserwować.
W trybie 2 timer pracuje jako rejestr 8-bitowy. Wykorzystany jest do tego TL1. W
momencie przekroczenia jego zakresu (256) następuje ustawienie flagi TF1 i
jednoczesne załadowanie rejestru TL1 zawartością rejestru TH1. Wpisując do rejestru
TH1 odpowiednią wartość, na przykład 256-10, moŜna uzyskać ustawienie flagi TF1 co
10 impulsów wejściowych.
W trybie 3 Timer 1 jest zatrzymywany, natomiast Timer 0 pracuje jako dwa niezaleŜne
liczniki 8-bitowe. Licznik TL0 sterowany jest przez te same bity, tak jak cały Timer 0 w
innych trybach. Natomiast licznik TH0 moŜe pracować tylko jako timer i jest sterowany
bitem TR1 oraz ustawia flagę TF1. Timer 1 moŜe w tym momencie pracować w innym,
dowolnym trybie, ale nie będzie moŜna go zatrzymać i nie ustawi on flagi TF1.
III. Przebieg ćwiczenia.
Napisać program „licznik zdarzeń” demonstrujący wszystkie tryby pracy timera w
mikrokontrolerze 8051.
Praca programu będzie polegała na zliczaniu liczby wciśnięć klawisza.
NaleŜy:
• wybrać i zaprogramować odpowiedni timer,
• uaktywnić jeden klawisz z klawiatury wyświetlacza 7-segmentowego,
• po kaŜdorazowym wciśnięciu tego klawisza zawartość licznika zdarzeń ma zwiększać
się o 1 i ma być wypisywana na wyświetlaczu LCD.
Program powinien działać dla wszystkich trybów pracy timera.
3