Politechnika Poznańska
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
___________________________________________________________________________________________________
1
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.
Politechnika Poznańska,Wydział Elektroniki i Telekomunikacji
Klawiatura przeglądana sekwencyjnie, Timery mikrokontrolera
___________________________________________________________________________________________________
2
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.
Politechnika Poznańska,Wydział Elektroniki i Telekomunikacji
Klawiatura przeglądana sekwencyjnie, Timery mikrokontrolera
___________________________________________________________________________________________________
3
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.