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

___________________________________________________________________________________________________

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