Mikrokontrolery cz5.pdf

(325 KB) Pobierz
1265726 UNPDF
Też to potrafisz
W kolejnym odcinku opisującym
procesor 8051 przedstawię kilka
praktycznych wiadomości na temat
pracy mikrokontrolera, jej szybkości
w zależności od częstotliwości tak−
tującej zegara. Następnie pokrótce
zapoznamy się z niemniej ważnym
blokiem funkcjonalnym, czyli: ukła−
dem czasowo – licznikowym. Tak
jak w poprzednich odcinkach nie bę−
dę wgłębiał się w teorię dotyczącą
tych zagadnień, przekazując jedynie
wiadomości potrzebne do osłucha−
nia a raczej oswojenia się z proceso−
rem. Szczegółowy opis wszystkich
rejestrów sterujących praca 8051
opiszę w jednym z kolejnych odcin−
ków, który będzie niejako podstawo−
wą „ściągawką” w stawianiu pierw−
szych kroków w programowaniu.
Mikrokontrolery?
To takie proste...
Część 5
Mikrokontroler 8051 – to takie proste!
Zegar systemowy
O zegarze wspominałem na początku
naszego cyklu, kiedy to poznawaliśmy
wyprowadzenia mikrokontrolera. Czy pa−
miętasz funkcje jaka pełnią wyprowadze−
nia 18 i 19 procesora (w obudowie DIL−
40)? Jeśli nie to radzę przeczytać stoso−
wny akapit w EdW 5/97 str. 41.
Powiedziałem, że do poprawnej pracy,
a w zasadzie w ogóle do pracy, czyli do
„poruszenia” całego procesora potrzeb−
ny jest zewnętrzny obwód oscylatora.
W praktyce taki obwód realizuje się dołą−
czając zewnętrzny rezonator kwarcowy
o częstotliwości z zakresu od mniej wię−
cej 1MHz do 16MHz. W handlu spotyka
się także wersje 8051 mogące pracować
w szerszym zakresie: od pojedynczych
„Hz” (wersje całkowicie statyczne
CMOS) do nawet: 33...40MHz. W każ−
dym przypadku producent konkretnego
modelu procesora umieszcza na jego
obudowie oprócz nazwy układu także
symbol liczbowy określający maksymal−
ną częstotliwość zewnętrznego sygnału
taktującego (która w praktyce jest także
równa dołączanemu rezonatorowi kwar−
cowemu). Nie będziemy jednak się za−
jmować tutaj sposobami oznaczania po−
szczególnych wersji 8051, nie to jest
w tej chwili najważniejsze, ważne jest to
że im większa częstotliwość graniczna
procesora, tym oczywiście układ będzie
mógł pracować szybciej.
Nie oznacza to, że w każdym przypadku
„uganiać się” będziemy za możliwie naj−
szybsza wersją układu, nie zawsze przecież
taka będzie potrzebna. Wiedzieć wszakże
trzeba że tak jak w przypadku wszystkich
układów wykonanych w technologii MOS
(CMOS, HMOS) wraz ze wzrostem częs−
totliwości pracy układu wzrasta wydzielana
w nim moc, czyli wzrasta pobierany przez
procesor prąd ze źródła zasilania.
Praktyczny wniosek nasuwa się sam – je−
żeli masz zamiar zastosować procesor
w układzie przenośnym zasilanym np. z nie−
wielkiej baterii, z pewnością nie użyjesz pro−
cesora 8051 w wersji 20MHz! Poborem mo−
cy oraz zagadnieniami z tym związanymi zaj−
miemy się w dalszej części naszego cyklu.
Przejdźmy jednak do informacji prak−
tycznych.
Musisz wiedzieć, że częstotliwość (na−
zwijmy ją jako Fxtal) uzyskiwana z rezona−
tora kwarcowego (dołączonego do pinów
18 i 19) jest we wnętrzu procesora kilka−
krotnie dzielona. I tak w praktyce spo−
tkasz się w literaturze i katalogach na te−
mat 8051 i podobnych z pojęciami jak:
a) dwufazowy sygnał taktujący procesor
(Fs) – sygnał powstały z podzielenia
przez 2 częstotliwości oscylatora (np.
przy kwarcu = 12 MHz, Fs = 6MHz).
Sygnał ten używany jest bezpośrednio
do taktowania układów wewnętrznych
procesora i nie jest dostępny na żadnym
z zewnętrznych jego wyprowadzeń.
b) sześć cykli sygnału Fs składa się na tzw.
cykl maszynowy procesora, czyli okres
wykonywania elementarnej czynności
(jakiej ?... za chwilę) przez nasza kostkę.
Z prostych obliczeń wyniknie Ci że, cykl
maszynowy zajmuje: Fs x 6 = 2 x Fxtal
x 6 = 12 cykli oscylatora, czyli dla np.
Fxtal=12MHz będzie to 1MHz.
Cykl maszynowy jest bardzo ważnym
pojęciem, z jego częstotliwością (Fxtal/12)
zachodzą podstawowe czynności proce−
sora takie jak:
– pobieranie kodu rozkazów (czy to z we−
wnętrznej pamięci programu, czy z ze−
wnętrznej)
– wykonywanie instrukcji programu
– pobieranie danych z zewnętrznej pa−
mięci (jak i z wewnętrznej)
– zwiększanie wartości wbudowanych
liczników: T0, T1 także T2 dla 8052
– próbkowanie wejść zewnętrznych
przerwań: INT0 i INT1
– wystawianie sygnału ALE – pin 30 (opi−
sywanego wcześniej) niezbędnego do
zapisu młodszej części adresu multiplek−
sowanej szyny adresowej – portu P0,
przypomnij sobie wcześniejszy odcinek.
Z częstotliwością tą taktowany jest
także wbudowany port szeregowy
w specjalnym trybie ustawionym przez
użytkownika programowo.
Warto wiedzieć że cykl maszynowy
dzieli się także na fazy (po 6 na każdy cykl),
jednak ich opis i znaczenie w praktyce przy
E LEKTRONIKA DLA WSZYSTKICH 9/97
39
1265726.025.png
Też to potrafisz
konstruowaniu większości urządzeń jest
niepotrzebne, dlatego nie będziemy się
tym w bieżącym odcinku zajmować.
Rysunek 1 ilustruje zależności czaso−
we pomiędzy omówionymi podstawowy−
mi pojęciami spotykanymi podczas oma−
wiania zegara i cyklu maszynowego.
Warto o tym pamiętać.
wany oraz z zależności od potrzeb jest
generowane odpowiednie przerwanie);
– licznik można w dowolnym momencie
uruchomić (zezwolić na zliczanie) lub
zatrzymać wydając w programie odpo−
wiednią komendę;
– do licznika można w każdej chwili wpisać
dowolna wartość (16−bitowa liczbę), co
spowoduje że licznik będzie zliczał impul−
sy od tej wartości aż do przepełnienia;
wpisu takiego najlepiej jest dokonywać
w czasie gdy licznik jest zatrzymany;
– dodatkowo licznika można „bram−
kować” czyli uzależnić jego pracę lub
zatrzymanie w zależności od stanu pa−
nującego na wejściach: INT0 dla liczni−
ka T0 oraz INT1 dla licznika T1;
– oprócz tego licznik T1 (jak i T2 w 8052)
może „taktować” wbudowany port
szeregowy w specjalnym trybie który
opiszemy przy okazji omawiania tego
bloku procesora.
W przypadku używania liczników do zli−
czania impulsów zewnętrznych należy
wiedzieć, że maksymalna częstotliwość
(Fmax) zliczanych impulsów jest ściśle za−
leżna od częstotliwości oscylatora kwar−
cowego Fxtal i określona jest zależnością:
Przy projektowaniu układów dla bez−
pieczeństwa warto jednak granicę tę nieco
obniżać (np. do 480 kHz przy Fxtal=12MHz).
Podane możliwości wykorzystania licz−
ników jako np. wejść mierzących częstot−
liwość nie są zbyt imponujące. Jednak
jak się sam przekonasz w przyszłości ta−
kie wykorzystanie liczników procesora
np. do bezpośredniego mierzenia częs−
totliwości wejściowej jest niepraktyczne.
Dlaczego, w odpowiedzi podaję przykład.
Wyobraź sobie że chcesz zmierzyć
częstotliwość rzędu kilku (kilkunastu MHz)
a więc znacznie przekraczającą możliwoś−
ci liczników procesora. Do mierzenia każ−
dej częstotliwości w zwykłych miernikach
wykorzystuje się dwa sygnały: mierzony
i oczywiście bramkujący. Ten drugi pocho−
dzi zazwyczaj z wbudowanego w przyrząd
generatora wzorcowego i powstaje przez
wielokrotne podzielenie częstotliwości ge−
nerowanej najczęściej za pomocą rezona−
tora lub generatora kwarcowego.
Nasuwa Ci się pewnie w tej chwili
myśl: ...” No dobrze wykorzystam gene−
rator procesora a właściwie jeden z jego
liczników do odmierzania czasu bramko−
wania a drugim licznikiem mierzę impulsy
wejściowe i będę miał szukaną częstotli−
wość, tylko że kilka „MHz” to stanowczo
zbyt wiele na mój procesor ...”
A gdyby tak odwrócić role i zliczać impul−
sy wewnętrzne o częstotliwości przecież
znanej i równej Fxtal / 12, a sygnał wejścio−
wy wielokrotnie podzielić i wykorzystać do
bramkowania licznika. Wtedy w zasadzie
otrzymamy nie częstotliwość ale okres
przebiegu wejściowego, ale od czego ma−
my mikroprocesor, który potrafi wykonywać
obliczenia arytmetyczno – logiczne. Potrafi
on także dokonać odwrócenia wyniku okre−
su w efekcie czego otrzymamy liczbowa
wartość mierzonej częstotliwości. Tak więc
w prosty sposób można dokonać pomiaru
dowolnej częstotliwości wejściowej a przy
okazji wyświetlić ciekawskiemu użytkowni−
kowi także okres badanego przebiegu.
Rysunek 2 ilustruje zasadę pomiaru częstot−
liwości, którą najczęściej wykorzystuje się
w układach z mikroprocesorem. Wbrew po−
zorom metoda ta daje świetne wyniki oraz
pozwala uzyskać dużą dokładność pomiaru
przy krótkich czasach bramkowania.
Należy tylko częstotliwość wejściową
podzielić przez taką wartość która da wy−
nik zbliżony do wymaganego okresu
bramkowania. Dodatkowy sprzętowy pro−
gramowany dzielnik najprościej jest wyko−
nać chociażby za pomocą kaskadowo po−
łączonych 4−bitowych liczników binarnych
7493 lub podwójny 74393 wraz z multi−
plekserem np. 74151 (sprawdzić w katalo−
gu). Wejścia multipleksera decydujące
o stopniu podziału sterowane będą oczy−
wiście z wolnych końcówek dowolnego
portu mikroprocesora 8051 (np. z P1).
Układy czasowo−licznikowe
Pod pojęciem tym kryją się wielokrot−
nie wspominane dwa 16−bitowe liczniki
T0 i T1 oraz dodatkowy licznik T2 który
występuje w procesorze 8052.
Najogólniej mówiąc każdy z tych liczni−
ków a właściwie układów czasowo−liczni−
kowych jest tak uniwersalnym blokiem że
z wykorzystaniem jego można dokonać
następujące dwie podstawowe operacje:
a) za pomocą T0 (T1 lub T2) można zliczać
impulsy z zewnętrznego wejścia liczni−
kowego; pin 14 dla T0 i pin 15 dla T1
(tryb licznika)
oraz
b) można zliczać wewnętrzne impulsy po−
chodzące z układu taktującego proce−
sor, w każdym przypadku będzie to
sygnał o częstotliwości = Fxtal / 12.
Czyli jeżeli „dopieliśmy” do mikrokont−
rolera kwarc o częstotliwości 6 MHz to
częstotliwość sygnału taktującego licz−
nik T0 lub T1 (T2) będzie równa
6 MHz/12 = 500 kHz. W tym trybie
zwanym czasomierzem, liczniki wyko−
rzystuje się do odmierzania pewnych
określonych programowo przez użyt−
kownika odcinków czasu (opóźnień)
i generowania przerwań po przepełnie−
niu któregoś z liczników.
W dalszej części artykułu przedstawię
przykład takiego zastosowania.
W przypadku wykorzystania układu
licznikowego w obu przypadkach należy
wiedzieć że:
– maksymalna liczba zliczonych impulsów
jest określona pojemnością 16−bitowe−
go licznika, czyli 2 do potęgi 16 = 65536
(licznik zlicza od 0 do 65535 po czym po
nadejściu kolejnego impulsu jest zero−
F Fxtal
Czyli w przypadku zastosowania kwarcu
o częstotliwości 12 MHz maksymalna częs−
totliwość impulsów na wejściu licznika mo−
że wynieść 500kHz dodatkowo przy założe−
niu że przebieg ma wypełnienie 1:2. Ograni−
czeni wynika z faktu, że liczniki T0 i T1 (tak−
że T2) fizycznie nie wyglądają jak np. 7493,
lecz zliczają na zasadzie „próbkowania” we−
jścia impulsów w celu stwierdzenia czy jest
logiczne „0” a następnie „1”. Operacja ta
odbywa się na synchronicznie z cyklem ma−
szynowym o którym mówiliśmy wcześniej.
W każdym cyklu maszynowym procesor
próbkuje wspomniane wejścia liczników, to−
też stwierdzenie, że na jednym z wejść syg−
nał zmienił wartość z „0” na „1” lub od−
wrotnie zajmuje 2 cykle maszynowe – stąd
bierze się Fmax.
Rys. 1. Zegar, faza, a cykl maszynowy procesora 8051
40
E LEKTRONIKA DLA WSZYSTKICH 9/97
max = 24
1265726.026.png 1265726.027.png
Też to potrafisz
Rys. 2. Zasada pomiaru częstotliwości z wykorzystaniem mikroprocesora
Uzyskany na wyjściu multipleksera
przebieg doprowadzony zostanie do we−
jścia bramkującego licznik INT0 – dla licz−
nika T0 lub INT1 kiedy zlicza licznik T1.
W tym przykładzie oczywiście licznik bę−
dzie zliczał impulsy wewnętrzne, tak
więc poszukiwana częstotliwość można
będzie obliczyć z proporcji
Dla przykładu załóżmy że zewnętrzny
programowany dzielnik dzieli częstotli−
wość mierzoną przez 64 tak, że na wyj−
ściu multipleksera otrzymujemy przebieg
którego okres, a więc czas od jednego
np. ujemnego zbocza do drugiego ujem−
nego zbocza, wynosi tyle, że wewnętrzny
licznik procesora bramkowany tymi zbo−
czami zliczy w czasie jednego okresu
54532 impulsy (których częstotliwość
przy zastosowaniu kwarcu 12MHz wyno−
si 1MHz). Skomplikowane? Przeczytaj to
zdanie jeszcze raz i postaraj się zrozu−
mieć. No i jak z tego policzyć częstotli−
wość? Z naszego wzoru! Tak więc:
mo pozornie trudniejszego sposobu mie−
rzenia tej wielkości.
Po tym małym przykładzie wracajmy
do tematu naszego odcinka.
Fizycznie 16−bitowe liczniki T0, T1 i T2
są zbudowane z dwóch 8−bitowych
„połówek”, do których programista ma
dostęp na poziomie programu. W czasie
zliczania impulsów przeniesie z młodsze−
go bajtu licznika nazywanego jako TL po−
woduje automatyczną inkrementację baj−
tu starszego TH, przy jednoczesnym wy−
zerowaniu bajtu TL. Taka sytuacja przed−
stawia jeden z kilku trybów w którym
dwie połówki stanowią całość – 16−bito−
wy licznik. W mnemonice (nazewnictwie)
8051 wspomniane dwie połówki liczni−
ków maja swoje oznaczenia, i tak: dla
licznika T0 są to TH0 i TL0 (starsza i młod−
sza część), dla licznika T1 – TH1 i TL1. Po−
dobnie jest w przypadku licznika T2
w procesorze T2, gdzie mamy: TH2 i TL2.
W praktyce użytkownik ma możliwość
zaprogramowania liczników w kilku in−
nych trybach pracy, nie mniej użytecz−
nych. W sumie jest ich 4, nazywane po−
tocznej : trybem 0, 1, 2 i 3. Poniżej opi−
szemy je po krótce. Ze względu na to że
liczniki T0 i T1 są bliźniaczo podobne bę−
dziemy odwoływać się przy opisie tylko
do licznika T0. Ze względu na rozbudowa−
ne funkcje licznik T2 zostanie opisany
w dalszej części artykułu osobno.
Fx
Fwew
Lx
Lwew
gdzie:
Fx – częstotliwość szukana
Fwew – częstotliwość imp. wewnę−
trznych = Fxtal / 12
Lx – liczba zliczonych impulsów
z zewnątrz
Lwew – liczba impulsów zliczonych
przez licznik wewnętrzny
Fx
64
1000000
54532
1173
Hz
Sprawdźmy na „chłopski rozum” czy
aby wynik jest w porządku:
– licznik procesora w przeciągu jednego
okresu podzielonego przebiegu wej−
ściowego zliczył 54532 impulsy każdy
po 1us (mikrosekundzie) przy zegarze
12MHz
– tak więc okres podzielonego przebiegu
z wejścia wynosi: 54532 µs (mikrose−
kundy), czyli 54,532 ms (milisekundy).
– odwracamy tę wartość i uzyskujemy
liczbę: 18,3378
– pamiętając o dzielniku wstępnym mno−
żymy otrzymaną liczbę przez niego czy−
li przez 64
– otrzymujemy wynik:
W przypadku kiedy sygnał mierzony
wykorzystujemy jak w naszym przykła−
dzie do bramkowania to Lx = 1toteż po
przekształceniu otrzymamy:
Fx
1
Lwew Fwew
ale Lx = 1to
Fwew
Lwew
Fx
Wynik należy jeszcze pomnożyć przez
wartość dzielnika sprzętowego, czyli
wzór przyjmie postać:
Fx Dz Fwew
Lwew
= ∗
[ ]
Tryb 0
W tym trybie licznik pracuje w konfigu−
racji 13−bitowej. Starszy bajt TH0 zawiera
8 bardziej znaczących bitów licznika (bity
7...0 TH0), natomiast 5 pozostałych bitów
to najstarsze bity z TL0 (bity 7...3). Trzy
najmłodsze bity bajtu TL0 są nieistotne
i ignorowane przez procesor. Rysunek 3
Fx
183378 64 1173
∗ =
Hz
gdzie Dz to dzielnik
pamiętając że
tak więc się zgadza.
Uff, jeżeli masz dość obliczeń, odpocz−
nij chwilę, w każdym razie musisz pamię−
tać że z wykorzystaniem procesora moż−
liwości obliczeniowe oraz atrakcyjność
przyrządu pomiarowego wzrasta, pomi−
Fwew
Fxtel
= 12
gdzie Fxtal – częstotliwość oscylatora.
E LEKTRONIKA DLA WSZYSTKICH 9/97
41
dzie ik
( ln)
Hz
.
1265726.028.png 1265726.001.png 1265726.002.png 1265726.003.png 1265726.004.png 1265726.005.png
Też to potrafisz
przedstawia konfigurację licznika T0 (T1)
w tym trybie.
Do licznika (do bajtów TH0 i TL0) moż−
na wpisać dowolna wartość pamiętając,
że 3 najmłodsze bity słowa TL0 będą ig−
norowane. Licznik po uruchomieniu bę−
dzie zliczał od wartości wpisanej na po−
czątku (może to także być wartość „0”)
do wartości maksymalnej czyli 2 13−1 =8191
po czym się wyzeruje, dodatkowo zgła−
szając jeżeli potrzeba przerwanie infor−
mujące program o tym fakcie. Jeżeli nie−
których z Was denerwuje te „przer−
wanie” to nie będę trzymał w niepew−
ności i wyjaśnię na czym polega istota
zgłoszenia przerwania w momencie prze−
pełnienia licznika.
Wyobraź sobie że chcesz odmierzać
równomierne odstępy czasu o długości
np. 2,45 ms (milisekund). Co robisz? Ma−
jąc do dyspozycji procesor z kwarcem np.
12 MHz wpisujesz do licznika T0 wartość
początkową równą:
wartość_maksymalna_licznika_T0
+ 1– 2450
Dlaczego 2450?
Bo jest to 2450 x 1µs = 2,45 ms
A skąd 1µs?
Bo przecież jest to częstotliwość zliczania
wewnętrznych impulsów = Fxtal / 12).
Tak więc po odjęciu otrzymasz liczbę:
8191 + 1 – 2450 = 5742, którą zanim wpi−
szesz do licznika T0 musisz pomnożyć
dodatkowo przez 8 (1000 binarnie) bo pa−
miętaj przecież że trzy najmłodsze bity
2..0 TL0 są ignorowane.
Teraz po wpisaniu uruchamiasz licznik,
który liczy w górę od wartości wpisanej:
5742 aż do przepełnienia – 8191 czyli 2450
impulsów, zajmie mu to więc dokładnie
2450 us – czyli 2,45 ms, po czym zgłoszo−
ne zostanie przerwanie, w którym Ty –
przyszły programisto określisz co akurat
ma się wydarzyć po upłynięciu 2,45 ms.
Tryb 1
Tryb ten jest bardzo podobny do trybu 0,
z tym że do zliczania wykorzystywane są
wszystkie 16−bitów licznika. Stąd nasuwa
się wniosek że maksymalną pojemność
licznika w tym trybie wynosi 65535, po
czym następuje przepełnienie czyli wyze−
rowanie z ustawieniem znacznika zgłosze−
nia przerwania (jeżeli jest taka potrzeba).
Tryb ten najczęściej wykorzystuje się
do generowania przerwań mających na
celu odmierzanie czasu np. przy zegarze
czasu rzeczywistego. Przykład zastoso−
wania może być taki jak poprzednio
zwiększa się tylko zakres mierzonych od−
stępów czasu.
a właściwie do określenia szybkości
transmisji danych przez ten port. Wtedy
jednak licznik nie może spełniać innych
funkcji, np. generować przerwań przy
przepełnieniu.
Tryb 3
Tryb ten dotyczy obu liczników T0 i T1
procesora na raz. Otóż w trybie tym licz−
nik T1 jest zatrzymany i nie pracuje. Dwa
bajty licznika T0: TH0 i TL0 pracują jako
dwa niezależne 8−bitowe liczniki, przy
czym istnieją pewne ograniczenia co do
ich funkcji, a mianowicie:
– TL0 może liczyć impulsy z wejścia T0
lub pracować jako czasomierz zliczając
impulsy wewnętrzne (Fxtal / 12)
– TH0 może pracować tylko jako czaso−
mierz, czyli zliczać impulsy wewnętrzne
Tryb ten został zaimplementowany
przez twórców 8051 po to, aby w wypad−
kach kiedy licznik T1 używany jest do
określania szybkości transmisji poprzez
port szeregowy, a programiście niezbęd−
ne są dwa dodatkowe liczniki, których ro−
le spełniają wtedy wspomniane TL0
i TH0.
W obecnych czasach, jeżeli zachodzi
taka potrzeba, czasem lepiej jest zastoso−
wać procesor w wersji 80C52 z wbudo−
wanym trzecim licznikiem T2. Niemniej
jednak warto wiedzieć o tym nietypo−
wym trybie liczników T0 i T1.
Tryb 2
Nieco ciekawszy jest tryb 2, w którym
pracuje tylko młodsza połówka 16−bito−
wego licznika a więc TL0 (TL1 dla licznika
T1). Ośmiobitowy licznik TL0 zlicza w gó−
rę aż do wartości maksymalnej czyli 255,
po czym ... tu uwaga! Automatycznie zo−
staje przepisana do niego wartość po−
czątkowa ze starszej połówki TH0. Tak
więc raz wpisując do TH0 jakąś wartość,
nie musimy się martwić aby zrobić to
programowo powtórnie przy przepełnie−
niu pracującego licznika – TL0.
Tryb ten ma wiele zastosowań, szcze−
gólnie przydaje się tam gdzie potrzebne
jest generowanie przerwań w równych
odstępach czasu, np. przy generacji syg−
nału prostokątnego o zadanej częstotli−
wości i wypełnieniu. O tym jak to się reali−
zuje dowiesz się Czytelniku podczas nauki
programowania 8051. Na razie proponuję
Ci się nad tym zastanowić samemu. Po−
mocny będzie rysunek 4 na którym poka−
zana jest struktura licznika w trybie 2.
Warto także wiedzieć, że tryb ten
w liczniku T1 wykorzystuje się do takto−
wania portu szeregowego procesora,
Licznik T2 w kostce 80C52
W mikrokontrolerze 80C52 występuje
dodatkowy licznik nazywany T2. Podob−
nie jak licznik T0 i T1 jest on 16−bitowy.
Posiada jednak kilka dodatkowych funkcji
które rozszerzają jego możliwości. Zacz−
nijmy jednak po kolei.
Podobnie jak w licznikach opisanych
wcześniej licznik T2 składa się z dwóch
bajtów TH2 (starszy) i TL2 (młodszy). Po−
Rys. 3. Struktura liczników T0 i T1 w trybie 0 (a także w trybie 1)
42
E LEKTRONIKA DLA WSZYSTKICH 9/97
1265726.006.png 1265726.007.png 1265726.008.png 1265726.009.png 1265726.010.png 1265726.011.png
Też to potrafisz
Rys. 4. Struktura liczników T0 i T1 w trybie 2
dobnie jak T0 i T1 licznik T2 może pełnić
rolę czasomierza, czyli zliczać impulsy
wewnętrzne pochodzące z zegara proce−
sora, może także zliczać impulsy zewnęt−
rzne dzięki alternatywnej funkcji jednego
z pinów portu P1 a mianowicie P1.0 –
nóżka 1procesora 8052.
Licznik ten posiada także możliwość
automatycznego załadowania wartości
początkowej określonej przez użytkowni−
ka a zapisanej w dwóch oddzielnych re−
jestrach 8−bitowych (które w sumie dają
16−bitową wartość początkową) zwanych
RLDH i RLDL (patrz odcinek w EdW nr
6/97 tabela rejestrów specjalnych SFR).
Funkcja ta działa podobnie jak w liczni−
ku T0 (T1) ustawionym w trybie 2. Za−
uważmy jednak że w przypadku T2 pra−
cuje całe 16−bitów licznika i całe 16−bitów
z RLDH.RLDL może być automatycznie
załadowane, kiedy licznik zostanie prze−
pełniony.
Z licznikiem T2 w kostce 80C52 związa−
ny jest dodatkowy także alternatywnie wy−
korzystywany pin portu P1 (zwany T2EX)
a mianowicie P1.1 – nóżka 2. Otóż jeżeli za−
chodzi potrzeba, programista może wyko−
rzystać tę końcówkę do zewnętrznego
bramkowania licznika T2, co bardzo często
przydaje się podobnie jak przy bramkowa−
niu liczników T0 i T1 sygnałami INT0 i INT1.
I tak w przypadku gdy T2 pracuje jako
licznik liczący zewnętrzne impulsy, opada−
jące zbocze na końcówce T2EX spowodu−
je automatyczne natychmiastowe załado−
wanie licznika T2 – TH2 i TL2 wartością
zdefiniowaną w rejestrach RLDH.RLDL.
Do czego to wykorzystać? Jest wiele
praktycznych zastosowań ot chociażby
funkcja autoładowania pod wpływem ze−
wnętrznego sygnału może być przydatna
do synchronizowania pracy wewnętrzne−
go licznika z zewnętrznym sygnałem ze−
garowym o niższej częstotliwości.
Jeżeli zaś licznik T2 pracuje w roli cza−
somierza, to wejście T2EX można wyko−
rzystać do automatycznego przepisania
aktualnej wartości rejestrów TH2.TL2 do
rejestrów RLDH.RLDL. Można powie−
dzieć że działanie w tym trybie (czaso−
mierza) jest jakby odwrotne do sposobu
w trybie licznika. Wartość zostaje przepi−
sana do rejestrów RLDH.RLDL a nie od−
wrotnie jak to miało miejsce w przypadku
pracy T2 w trybie licznika impulsów ze−
wnętrznych.
W praktyce takie działanie umożliwia
np. na bardzo dokładny pomiar przebie−
gów wolnozmiennych bez konieczności
stosowania dodatkowych układów scalo−
nych. Odpowiedź na pytanie „A jak to się
robi...?” otrzymasz drogi Czytelniku przy
okazji kursu programowania 8051.
Na koniec istotna dodatkowa informa−
cja dotycząca licznika T2. Podobnie jak
licznik T1, T2 może w zależności od po−
Rys. 5. Struktura liczników T0 i T1 w trybie 3
E LEKTRONIKA DLA WSZYSTKICH 9/97
43
1265726.012.png 1265726.013.png 1265726.014.png 1265726.015.png 1265726.016.png 1265726.017.png 1265726.018.png 1265726.019.png 1265726.020.png 1265726.021.png 1265726.022.png 1265726.023.png 1265726.024.png
Zgłoś jeśli naruszono regulamin