30_05.pdf

(292 KB) Pobierz
1128253 UNPDF
Też to potrafisz
W kolejnym odcinku naszego cyklu
zapoznamy się z pracą dodatkowe−
go układu czasowo licznikowego,
który występuje w mikrokontrole−
rach 8052/C. W drugiej części arty−
kułu przedstawię specjalne tryby
pracy procesorów, dzięki którym
możliwe jest konstruowanie energo−
oszczędnych autonomicznych ukła−
dów bateryjnych. I choć na tym eta−
pie nauki panowania nad mikrokont−
rolerem 8051 i jemu podobnymi, za
wcześnie na podawanie przykłado−
wych rozwiązań konstrukcyjnych, to
tę część teorii warto poznać, zanim
zabierzemy się do budowania
„inteligentnych urządzeń elektro−
nicznych”... a raczej mikroelektro−
nicznych.
Mikrokontrolery?
To takie proste...
Część 14
Licznik T2 oraz specjalne tryby pracy
Poprzedni odcinek szkoły mikroprocesorowej poświęciłem omówie−
niu strony praktycznej układów czasowo−licznikowych T0 i T1 procesora
8051/52. Podałem też praktyczne wskazówki na powiązanie pracy liczni−
ków z układem przerwań procesora. Dzięki takiemu połączeniu udało
nam się wspólnie stworzyć i przeanalizować przykładowy programik od−
mierzający czas. To podstawa do zrozumienia prawidłowego programo−
wania mikrokontrolerów, bowiem prawie 100% programów pisanych na
procesory wykorzystuje procedury (podprogramy) obsługi przerwań do
kontroli pewnych funkcji samego procesora jak i układów peryferyjnych.
Umiejętne zaprogramowanie układu licznikowego oraz układu prze−
rwań gwarantuje sukces w działaniu programu a dodanie funkcji zabez−
pieczających – tzw. „programowych haczyków” (których omówieniem
zajmę się przy okazji następnego odcinka klasy mikroprocesorowej)
gwarantuje poprawną pracę mikrokontrolera nawet w sytuacjach z gó−
ry nieprzewidzianych, jak np. przypadkowe przeładowanie liczników,
czy automatyczne rozpoznawanie prędkości transmisji szeregowej
z urządzenia zewnętrznego. Wróćmy jednak do tematu i zajmijmy się
układem czasowo−licznikowym (potocznie nazywanym licznikiem) T2.
TIMER T2 w 8052/C
Jak powiedziałem wcześniej, układ ten nie występuje w procesorach
8051/C51, jest natomiast integralną częścią struktury procesorów 8052/C.
Z pewnych względów przy niektórych aplikacjach dwa układy czasowo−licz−
nikowe (T0 i T1) to za mało, wtedy warto sięgnąć właśnie po kostkę ‘52.
Licznik T2 podobnie jak poprzednie T0 i T1 jest 16−bitowy, a zliczanie
odbywa się przy pomocy dwóch 8−bitowych rejestrów z grupy SFR
o adresach:
0CDh:: TH2 – starsze 8 bitów licznika T2
0CCh:: TL2 – młodsze 8 bitów licznika T2
Z układem czasowo−licznikowym T2 związane są dwa dodatkowe 8−
bitowe rejestry, (tworzące 16−bitowy rejestr RLD) a mianowicie:
0CBh:: RLDH – starsze 8 bitów rejestru RLD
0CAh:: RLDL – młodsze 8 bitów rejestru RLD
Rejestry dodatkowe licznika T2:
Rejestr RLD (RLDH.RLDL) pełni dwojaką rolę w zależności od trybu
pracy licznika T2. Po pierwsze może być rejestrem wartości początko−
wej licznika T2 (TH2.TL2). Wtedy to w trybie pracy, który za chwilę
omówię, po przepełnieniu licznika, wartość początkowa tego licznika
zostaje automatycznie (bez programowego przeładowywania) przepisa−
na z RLDH do TH2 oraz z RLDL do TL2.
W innym przypadku rejestr RLD może pełnić rolę rejestru zatrzasko−
wego, w którym zapamiętywana jest zawartość licznika T2 (TH2.TL2)
w pewnych szczególnych momentach, o tym także za chwilę.
Podobnie jak omawiane w poprzednim odcinku układy T0 i T1, licznik
T2 może pełnić dwie różne funkcje:
– może pracować jako czasomierz , czyli zliczać impulsy wewnętrzne
o częstotliwości równej częstotliwości oscylatora Fxtal podzielonej
przez 12 (zastosowanie takiego trybu pracy już poznaliście na przykła−
dzie z lekcji nr 8)
– może także zliczać impulsy zewnętrzne z specjalnego wejścia T2,
którym jest pin 1 procesora (alternatywna funkcja bitu 0 portu P1).
Zwiększenie zawartości licznika T2 następuje w tym przypadku
w momencie wykrycia zbocza opadającego na wejściu T2 (P1.0).
Z licznikiem T2 związane jest także dodatkowe wejście T2EX – koń−
cówka procesora P1.1 (pin 2). Końcówka ta może pełnić rolę syg−
nału strobującego zatrzaśnięcie zawartość licznika T2 (TH2.TL2)
w rejestrach RLD (RLDH.RLDL), w innym przypadku umożliwia
zdalne załadowanie wartości początkowej z rejestrów RLD do rejes−
trów licznika T2.
We wszystkich trybach pracy licznika T2 zasada jego pracy jest podob−
na jak dla układów T0 i T1. A więc obowiązują zasady dotyczące np. wy−
krywania stanów niskich i wysokich (na przemian) w przypadku zliczania
impulsów zewnętrznych, ich częstotliwości maksymalnej, w zależności
Rejestry operacyjne licznika T2:
Tak jak poprzednio rejestry te można odczytywać jak i modyfiko−
wać, przeładowując (zmieniając) ich zawartość np. za pomocą instrukcji:
mov TH2, #wartH
mov TL2, #wartL
38
E LEKTRONIKA DLA WSZYSTKICH 6/98
1128253.003.png 1128253.004.png
Też to potrafisz
od częstotliwości oscylatora procesora. Wszystkie omówiłem w poprzed−
niej części klasy mikroprocesorowej, warto więc je sobie przypomnieć.
Warto także wspomnieć o możliwości pracy licznika T2 w trybie tak−
towania portu szeregowego . Wtedy licznik T1 może być użyty do in−
nych celów, natomiast T2 ze względu na swoją 16−bitową „naturę” po−
zwala na generowanie bardzo niskich częstotliwości taktowania portu,
a dlaczego, o szczegółach powiem za chwilę.
Główny rejestrem sterującym trybami oraz pracą licznika T2 jest re−
jestr T2CON (SFR adres 0C8h). Z pewnością pamiętasz drogi Czytelni−
ku, że w przypadku liczników T0 i T1 był to rejestr TMOD (oraz częścio−
wo TCON), natomiast w przypadku układu czasowo−licznikowego T2
wszystkimi funkcjami licznika T2 steruje tylko jeden rejestr T2CON.
wewnętrznego układu licznikowego T2 z zewnętrznym sygnałem ze−
garowym (dołączonym do wejścia T2EX).
3) W każdym trybie pracy ustawienie znacznika TF2 może być sygnałem
zgłoszenia przerwania. W tym przypadku ustawiane znaczniki w słowie
T2CON nie są automatycznie zerowane po przyjęciu przerwania, toteż
należy o tym pamiętać w procedurze obsługi przerwania. Z drugiej
strony niezerowanie znaczników umożliwia programiście ich analizę
w procedurze obsługi przerwania, a dopiero po tym ich wyzerowanie.
4) Jak wspomniałem wcześniej, licznik T2 może taktować port szerego−
wy. W tym celu należy ustawić bity TCLK i RCLK. Taktowany w ten
sposób port szeregowy będzie mógł pracować w trybie 1 (znaki 8−bito−
we, prędkość określana programowo) oraz w trybie 3 (znaki 9−bitowe,
prędkość określana programowo). Fizycznie w trybie taktowania portu
licznika T2 pracuje zliczając impulsy z automatycznym ładowaniem
wartości początkowej z rejestrów RLD (RLDH.RLDL). Zliczane mogą
być impulsy wewnętrzne (czasomierz) o częstotliwości Fxtal/2, lub im−
pulsy zewnętrzne z wejścia T2 (P1.0). Po podzieleniu impulsów taktu−
jących (Fxtal/2 lub zewnętrznych z wejścia T2) dodatkowo przez 16
traktują one odbiornik (RCLK=1) lub nadajnik (TCLK=1) portu szerego−
wego. W tym trybie pracy licznika, jego przepełnienie nie ustawia
znacznika jego przepełnienia TF2. Dzięki temu w przypadku gdy usta−
wimy bit EXEN2 (w słowie T2CON), to pod wpływem opadającego
zbocza sygnału na wejściu T2EX (końcówka P1.1 procesora) ustawio−
ny zostaje znacznik EXF2, co może być sygnałem zgłoszenia przerwa−
nia. Jak widać możliwe jest zatem wykorzystanie wejścia T2EX jako
dodatkowego (obok INT0 i INT1) wejścia przerywającego procesora.
W przypadku taktowania portu szeregowego (T2 taktowany sygnałem
wewnętrznym Fxtal / 2) prędkość transmisji (n) można określić wzorem:
Fxtal
n = ———————————
(65536 – RLD) x 2 x 16
Rejestr jest adresowany bitowo (w odróżnieniu od TMOD w przypad−
ku T0 i T1), co znacznie ułatwia operacje modyfikacji poszczególnych je−
go bitów. Oto ich znaczenie:
TF2 ((biit T2CON..7,, adres:: CFh)) – bit ustawiany w momencie przepełnie−
nia licznika T2, jest znacznikiem zgłoszenia przerwania przez T2
EXF2 (biit T2CON..6,, adres CEh)) – bit ustawiany w momencie wykrycia
opadającego zbocza na wejściu T2EX (pin 2 procesora), aktywny gdy bit
EXEN2 = 1, jest sygnałem zgłoszenia przerwania
RCLK ((biit T2CON..5,, adres CDh)) – ustawienie tego bitu powoduje przy−
łączenie licznika T2 jako taktującego (przepełnieniem) odbiornika portu
szeregowego procesora
TCLK (biit T2CON..4,, adres CCh)) – ustawienie tego bitu powoduje przy−
łączenie licznika T2 jako taktującego (przepełnieniem) nadajnika portu
szeregowego procesora
stąd łatwo po przekształceniu wzoru wyznaczyć wartość początkową
rejestrów RLD przy zadanej prędkości transmisji:
EXEN2 ((biit T2CON..3,, adres CBh)) – bit uaktywniający wejście T2EX (pin
2 procesora), ustawienie – uaktywnienie, wyzerowanie – dezaktywacja
Fxtal Fxtal
RLD = 65536 – —————−− = 65536 – ———−−
2 x 16 x n
32 x n
TR2 (biit T2CON..2,, adres CAh)) – bit sterujący zliczaniem licznika T2,
ustawienie (TR2=1) powoduje pracę licznika, wyzerowanie (TR2=0) za−
trzymanie zliczania
gdzie RLD to oczywiście wartość początkowa wpisana do rejestrów
RLDH.RLDL. Poniżej podaję przykładowe prędkości transmisji dla rezo−
natora kwarcowego 11,0592 MHz.
C//T2 ((biit T2CON..1,, adres C9h)) – bit określający funkcję pracy T2, i tak :
– ustawienie (C/T2=1) przełącza T2 w tryb zliczania impulsów zewnę−
trznych
– wyzerowanie (C/T2=0) włącza funkcję czasomierza (zliczanie impul−
sów wewnętrznych Fxtal/12)
Fxtall (MHz)) RLD
n ((bodów))
11,0592
FFFFh
345600
11,0592
FFFDh
115200
11,0592
FFFCh
86400
11,0592
FFFAh
57600
CP//RL2 (biit T2CON..0,, adres C8h)) – bit określający tryb pracy licznika,
i tak:
– ustawienie (CP/RL2=1) powoduje aktywację trybu z zatrzaskiwaniem
zawartości licznika (rejestrów T2 – TH2.TL2 w rejestrach RLD –
RLDH.RLDL)
– wyzerowanie (CP/RL2=0) powoduje prace z automatycznym wpisy−
waniem wartości początkowej (z rejestrów RLD do rejestrów T2)
11,0592
FFF7h
38400
11,0592
FFF4h
28800
11,0592
FFEEh
19200
11,0592
FFDCh
9600
11,0592
FFB8h
4800
11,0592
FF70h
2400
11,0592
FEE0h
1200
11,0592
FDC0h
600
————————————−−−−−−
W zależności od kombinacji niektórych bitów z rejestru T2CON moż−
liwe są różne stany pracy układu czasowo−licznikowego T2, oto kilka
wskazówek:
1) W przypadku gdy ustawimy bit CP/RL2, licznik T2 będzie zliczał mo−
dulo 2 16 , po każdym przepełnieniu będzie ustawiany znacznik zgło−
szenia przerwania TF2.
Jeżeli ustawimy dodatkowo bit EXEN2, co spowoduje aktywację
wejścia T2EX procesora (P1.1), to możemy zatrzasnąć podając na
to wejście opadające zbocze, zawartość licznika T2 w rejestrach
RLD (RLDH.RLDL).
2) Jeżeli bit CP/RL2 jest wyzerowany, licznik T2 będzie pracował w try−
bie z automatycznym wpisywaniem wartości początkowej z rejest−
rów RLD w momencie przepełnienia. W tym miejscu nasuwa się po−
dobieństwo pracy liczników T0 lub T1 w trybie 1, z tym, że przełado−
wanie licznika następuje w przypadku T2 automatycznie, co zwalnia
nas od programowego wpisywania wartości początkowej do rejest−
rów TH2 i TL2. W momencie przepełnienia ustawiany jest znacznik
TF2, co może być także sygnałem zgłoszenia przerwania. Dodatkowo
przeładowanie zawartości rejestrów roboczych licznika (TH2.TL2)
może nastąpić pod wpływem zewnętrznego zbocza opadającego,
podanego na wejście T2EX, trzeba tylko dodatkowo ustawić bit
EXEN2 (EXEN2=1). Takie wymuszenie powoduje także ustawienie
znacznika EXF2. Dzięki temu możliwe jest zsynchronizowanie pracy
11,0592
FB80h
300
11,0592
F700h
150
11,0592
EE00h
75
Jak widać, zakres możliwych do uzyskania prędkości transmisji jest
o wiele szerszy, niż w przypadku taktowania portu licznikiem T1. Naj−
mniejsza szybkość w przypadku rezonatora kwarcowego jak w tabeli
czyli 11,0592 MHz przy użyciu licznika T2, to 5 bitów na sekundę,
a więc prawdziwy żółw! Sprawdźmy:
n min =11059200/(32×(65536–0))=11059200/(32×65536)=5 (bitów/sek.)
Wtedy oczywiście wartością początkowa będzie zero (RLDH.RLDL=0).
W tabeli pogrubioną czcionką zaznaczono typowe, spotykane w kompute−
rach PC wartości transmisji szeregowej, realizowanej poprzez port RS232c.
A oto przykład programowania rejestru sterującego T2CON oraz ro−
boczych i dodatkowych w celu uzyskania kilku trybów i funkcji pracy
licznika T2.
Założymy, że nasz licznik T2 będzie pracował jako czasomierz z auto−
matycznym ładowaniem wartości początkowej z RLD po przepełnieniu.
Założymy, że przepełnienie ma następować dokładnie co 1ms, a do
procesora dołączony jest rezonator kwarcowy o częstotliwości 6 MHz.
Obliczenia:
– przy fxtal= 6 MHz licznik pracując jako czasomierz będzie inkremen−
towany co 2µs
E LEKTRONIKA DLA WSZYSTKICH 6/98
39
1128253.005.png
Też to potrafisz
– w czasie 1 ms (milisekundy) zawiera się 1000 µs (mikrosekund), czy−
li 500 okresów zegara procesora
– wobec tego wartość początkowa licznika można obliczyć jako:
wart.początkowa = wartość maksymalna – 500 = 65536 – 500 = 65036
= FE0Ch (heksadecymalnie)
można więc zapisać komendy inicjujące licznik T2:
mov T2CON, #0
;czasomierz z automat.
;ładowaniem wart. początkowej z RLD
Z grubsza rzecz ujmując tryby te różnią się od siebie stopniem pobo−
ru mocy przez procesor, oraz funkcji, jakie pozostają aktywne w tych
trybach pracy w odróżnieniu od normalnego trybu pracy procesora.
Przejdźmy zatem do omówienia rejestru PCON, bo o nim jest mowa. Po−
niżej przedstawione jest znaczenie poszczególnych bitów tego rejestru.
Warto przy tym zauważyć, że rejestr nie może być adresowany bitowo, to−
też nie da się sterować jego poszczególnymi bitami poprzez instrukcje typu:
SETB bit
lub
CLR bit
mov RLDH, #0FEh
mov RLDL, #0Ch
;załadowanie wartości FE0Ch
;(początkowej)
mov TH2, RLDH
mov TL2, RLDL
;aby prawidłowo zainicjować
;pierwsze przepełnienie
setb TR2
;start licznika T2
Rejestr PCON jest umieszczony pod adresem 87h w obszarze SFR
procesora. Zawiera 5istotnych dla użytkownika bitów.
SMOD ((biit ..7)) – bit podwojenia szybkości transmisji poprzez port sze−
regowy w trybach 1,2 lub 3 pracy. Ustawienie tego bitu (SMOD=1) po−
woduje dwukrotne zwiększenie częstotliwości taktowania portu szere−
gowego poprzez licznik T1, kiedy ten pracuje w trybie taktowania tego
portu. W odcinku, w którym omawiałem port szeregowy, w zamiesz−
czonej tam tabeli podałem przykłady wartości początkowych dla stan−
dardowych prędkości transmisji asynchronicznej. Wszystkie odnosiły
się właśnie do podwojonego trybu prędkości transmisji, kiedy bit ten
jest ustawiony. Jeżeli nie chcemy pracować w trybie podwojonej pręd−
kości, bit ten powinien być wyzerowany (PCON=0).
Ustawienie bitu SMOD w rejestrze PCON można wykonać za pomo−
cą instrukcji, np.:
ORL PCON, #80h
wyzerowanie zaś za pomocą instrukcji:
ANL PCON, #7Fh
.......
.......
;dalsze instrukcje
Analizując linie poleceń warto szczególną uwagę zwrócić na pierwszą
komendę, która ustawia bity w słowie T2CON. Zauważmy, że wszyst−
kie bity tego słowa zostały ustawione na zero, co zgadza się z opisem
rejestru T2CON, który omówiłem przed chwilą.
Jeżeli ktoś teraz zechce dopisać procedurę obsługi przerwania, może
to zrobić analogicznie jak w przypadku opisanej wcześnie procedury ob−
sługi przerwania od przepełnienia licznika T0 (T1), pamiętając jednak
o adresie wektora przerwania, który w tym przypadku wynosi:
002Bh
a w przypadku naszego komputerka edukacyjnego (AVT−2250) procedu−
ra powinna zaczynać się od adresu
802Bh
zgodnie z zasadami pisania takich podprogramów, które omówiłem
w poprzednim numerze EdW.
Program na nasz komputerek mógłby więc zaczynać się następująco:
org 8000h
ljmp START
org 802Bh
intT2: .........
.........
.........
pop DPL
pop DPH
pop Acc
reti
;*******************************************************
START:
– ((biity:: 6......4)) – nie wykorzystane
GF1 (biit .3)) – bit programowy do dowolnego wykorzystania przez pro−
gramistę
GF0 (biit .2)) – bit programowy do dowolnego wykorzystania przez pro−
gramistę
PD ((biit ..1)) – bit włączający tryb obniżonego poboru mocy – „uśpienia”.
Ustawienie tego bitu powoduje wprowadzenie procesora w tryb uśpie−
nia, kiedy to pobór prądu spada o około 500 razy, a napięcie zasilające
Vcc może być obniżone do 2,0V. Wykonanie instrukcji ustawiającej ten
bit jest ostatnim poleceniem wykonanym przez procesor w programie.
IIDL (biit .0)) – bit włączający tryb „jałowy” procesora.
Poniżej nieco dokładniej omówię oba tryby pracy.
Tryb jałowy
Instrukcja, która ustawia bit PCON.0 powoduje wprowadzenie proce−
sora w ten tryb. Jest ona ostatnią wykonywaną przez procesor instruk−
cją. Wewnętrzny sygnał zegarowy zostaje odłączony od jednostki cent−
ralnej (CPU), ale układ przerwań, port szeregowy i licznikowy pracują
dalej, jeżeli wcześniej były odpowiednio skonfigurowane i ustawione.
Stan całego procesora, a więc stan:
– rejestrów specjalnych SFR,
– pamięci wewnętrznej RAM użytkownika
– pinów portów P0...P3
pozostaje bez zmian i jest taki sam jak był tuż przed wejściem proceso−
ra w tryb jałowy.
Końcówki ALE i /PSEN procesora ustawiają się w stan wysoki.
Istnieją dwa sposoby na wyjście z tego stanu:
1) Nadejście dowolnego przerwania – oczywiście jeżeli było ono wcześ−
niej uaktywnione w rejestrze IE. Pojawienie się przerwania zeruje au−
tomatycznie (bez udziału programu użytkownika) flagę PCON.0 –
i procesor powraca do normalnej pracy, z tym, że następną instruk−
cją po wyjściu ze stanu jałowego pod wpływem przerwania będzie
pierwsza znajdująca się w procedurze obsługi danego przerwania, aż
do instrukcji RETI, kiedy to procesor automatycznie powraca do in−
strukcji następnej po tej, która wprowadziła procesor w stan jałowy,
czyli tej, która ustawiła bit IDL w rejestrze PCON.
2) Drugim sposobem na wyjście z tego stanu jest zerowanie procesora.
Ze względu na fakt, że podczas trybu „jałowego” procesora pracuje
nadal zegar systemowy, do prawidłowego zresetowania potrzebny
jest impuls zerujący o długości co najmniej 24 okresów oscylatora.
Tryb uśpienia – obniżonego poboru mocy
W tym trybie, obecnie stosowanym przez producentów tylko w kostkach
typu CMOS, czyli np. 80C51 lub 80C, cały mikrokontroler pobiera znacznie
mniej energii, oraz dodatkowo napięcie zasilające układ może zostać zmniej−
szone od standardowych 5V do 2,0V. Instrukcja ustawiająca bit PD (PCON.1)
jest ostatnią wykonywaną przez procesor. W trybie tym oscylator procesor
mov T2CON, #0
;czasomierz z automat.
;ładowaniem wart.
początkowej z RLD
mov RLDH, #0FEh
mov RLDL, #0Ch
;załadowanie wartości FE0Ch
;(początkowej)
mov TH2, RLDH
mov TL2, RLDL
;aby prawidłowo zainicjować
;pierwsze przepełnienie
setb TR2
;start licznika T2
.......
.......
;dalsze instrukcje
.......
END
Nie należy jednak zapominać że w licznik T2 wyposażony jest proce−
sor 8052/C, toteż jeżeli masz w komputerku AVT−2250 procesor
8051/C51, to musisz go po prostu wymienić na właściwa kostkę.
W sklepie nie powinna ona kosztować więcej jak 5zł.
Specjalne tryby pracy
W tej części artykułu omówię tryby pracy procesora, dzięki którym
możliwe jest realizowanie ciekawych rozwiązań układowych, np. urzą−
dzeń zasilanych z baterii – czyli takich, w których kwestia poboru ener−
gii jest elementem krytycznym.
W obszarze rejestrów SFR procesora (przypominam – jest to we−
wnętrzna pamięć danych RAM adresowana bezpośrednio, o adresach
80h...FFh) znajduje się jeszcze jeden ciekawy rejestr specjalnego prze−
znaczenia. Jego funkcją jest kontrola specjalnych trybów pracy proce−
sora, a mianowicie:
– trybu tzw. „jałowego”,
– trybu tzw. „uśpienia”.
40
E LEKTRONIKA DLA WSZYSTKICH 6/98
1128253.006.png
Też to potrafisz
zostaje wyłączony (po prostu staje). Zostają odłączone wszystkie układy fun−
kcjonalne procesora, takie jak układy licznikowe, port szeregowy, układ prze−
rwań. Pozostaje jedynie niezmieniona zawartość wewnętrznej pamięci
RAM, w tym pamięci użytkownika oraz rejestrów specjalnych SFR. Piny por−
tów pozostają zgodne ze stanami odpowiadających im bitów w rejestrach
P0...P3 w obszarze SFR. Końcówki ALE i PSEN znajdują się w stanie niskim.
W tym trybie pracy procesora, a raczej nie trybie pracy, co uśpienia, proce−
sor pobiera około 500 razy mniej prądu niż w stanie normalnej pracy. Dla
przykładu podam, że dla kostki 80C51 (czyli w wersji CMOS) :
– w trybie pracy normalnej pobór prądu wynosi ok. 20mA
(przy fxtal=12MHz)
– w trybie „jałowym” pobór prądu spada do około 3,0 mA
(przy fxtal=12MHz)
– w trybie uśpienia pobór prądu przez układ wynosi ok. 50µA (mikro−
amper!), przy obniżeniu zasilania do 2,0V.
Jedyną metodą na opuszczenie trybu uśpienia i powrót do normalnej
pracy jest wyzerowanie mikroprocesora poprzez podanie impulsu rese−
tującego na wejście RST (pin 9) o czasie trwania ok. 10ms.
Reset procesora
Popularne zresetowanie odbywa się poprzez podanie impulsu dodat−
niego na wejście RST kostki (pin 9) zgodnie z zasadami, które omówi−
łem przed chwilą. Najprostsze i bardziej rozbudowane układy resetowa−
nia mikrokontrolerów serii MCS−51 podałem w jednym z pierwszych
odcinków klasy mikroprocesorowej.
W wyniku zresetowania rejestru układy specjalne procesora (SFR) zo−
stają automatycznie zainicjowane wartościami, jak podaję w tabeli poniżej:
DPTR
0000h wskaźnik danych
P0...P3
FFh
porty
IP
xxx00000b rejestr priorytetu przerwań
IE
0xx00000b rejestr masek przerwań
TMOD
00h
rej. liczników T0 i T1
TCON
00h
rej. ster. liczników i przerwań
TH0 00h
TL0 00h
TH1 00h
TL1 00h
SCON 00h rejestr portu szeregowego
SBUF zmienny bufor portu szeregowego
PCON (MOS) 0xxxxxxx dla układów NMOS (8051/2)
PCON (CMOS) 0xxx0000b dla ukł. CMOS (80C51/52)
Uwaga: litera „x” oznacza, że dany bit przyjmuje wartość przypadko−
wą lub nie jest implementowany w danym rejestrze. Wartość po
„RESECIE” przedstawiono w formacie szesnastkowym lub binarnym (z
„b” na końcu) celem ułatwienia analizy i porównania z opisem rejest−
rów SFR na wkładce z numeru Edw 11/97.
Programując mikrokontrolery 8051/52, trzeba pamiętać o tym fakcie,
toteż szczególnie w przypadku wykorzystania specjalnych trybów pracy
należy mieć na względzie fakt, że rejestry specjalne zostają utracone po
resecie procesora, a więc konieczne jest ich odtworzenie, oczywiście
tylko w razie takiej konieczności.
Jeżeli ktoś interesuje się szczegółami, dotyczącymi architektury we−
wnętrznej mikrokontrolera 80C51 lub podobnych, które nie za często są
wykorzystywane w projektach, przynajmniej przez początkujących pro−
gramistów, może sięgnąć do literatury [1] i [2]. Obie pozycje wymagają
jednak znajomości podstaw terminologii technicznej jęz. angielskiego.
Chętnych zapraszam do lektury, pozostałym proponuję poczekać na ko−
lejny odcinek naszego cyklu.
Rejjestr
Wartość
Uwagii
po „RESET”
PC
0000h licznik rozkazów
ACC
00h
akumulator
Słławomiir Surowiińskii
B
00h
rejestr B
Literatura:
[1] 80C51−based 8−bit Microcontrollers, Data Handbook, Philips 1995
[2] Microcontroller Data Book, Atmel 1995,6,7
PSW
00h
słowo stanu programu
SP
07h
wskaźnik stosu
Lekcja 9
Na początku lekcji zajmijmy się rozwiązaniem zadań z poprzedniego
numeru EdW i odcinka klasy mikroprocesorowej.
Dzięki badaniu bitu nr 6 w zmiennej „licz128”, który przecież zmienia
swój stan co 0,5 sekundy (linia 109), możliwe jest naprzemienne gasze−
nie kresek (linie 110,111) oraz ich zapalanie – linie (113) i (114).
Dalej od etykiety „czas:” rozpoczyna się wypisanie czasu, czyli wy−
świetlane są godziny – linie (116...118), minuty – linie (119...121) oraz
sekundy – linie (122...124).
W linii (125) następuje skok do początku, gdzie następuje kolejne
uaktualnienie wyświetlanego czasu.
Rozwiiązaniie zadaniia nr 1
Oto krótka analiza głównej części listingu od etykiety START.
W linii (72) profilaktycznie zatrzymujemy licznik T1. W dwóch kolej−
nych liniach ustawiamy tryb pracy licznika T1, jako czasomierza zliczają−
cego wewnętrzne impulsy zegarowe (tryb pracy 0). W linii (75) wpisu−
jemy obliczoną wartość początkową, przy której licznik będzie przepeł−
niany okładnie co 1/128 sekundy.
W linii (76) wyzerowany zostaje licznik zliczający 1/128 części sekun−
dy, a w kolejnej linii (77) załadowany zostaje do zmiennej systemowej
komputerka starszy bajt 16−bitowego adresu tabeli wektorów przerwań
w zewnętrznej pamięci programu.
Należy jeszcze w linii (78) odblokować przerwanie od licznika T1
(przepełnienie licznika) oraz ustawić priorytet na to przerwanie (linia 79)
inaczej bowiem odmierzanie czasu może być zakłócone pracującym
przecież stale licznikiem T0 i wywoływaną przez jego przepełnienia pro−
cedurą obsługi przerwania, która zajmuje się obsługą wyświetlacza i kla−
wiatury komputerka edukacyjnego AVT−2250.
Po zainicjowaniu układu licznikowego T1 oraz przerwania od tego licz−
nika, w linii 81 profilaktycznie czyścimy wyświetlacz, aby potem w li−
niach (82)...(85) pobrać z klawiatury godzinę początkową i w linii 86 za−
pamiętać ją w komórce GODZ. Podobnie dzieje się dla minut – linie
(88)...(91) i sekund – linie (94)...(98).
Po wprowadzeniu (ustawieniu czasu) zapalone zostają poziome kres−
ki oddzielające godziny od minut (linia 100) i minuty od sekund (linia
101), a następnie po koniecznym ze względu na drgania styków klawia−
tury opóźnieniu (ok. 0,5 s.) – linie (102),(103), komputerek oczekuje na
naciśnięcie klawisza przez użytkownika celem uruchomienia zegara.
Uruchomienie następuje w kolejnej linii (105), a dalej znajduje się część
programu, której zadaniem jest wyświetlanie upływającego czasu na
wyświetlaczu – od etykiety „pokaz:” w linii (107).
Rozwiiązaniie zadaniia nr 2
Aby wyświetlić aktualny czas w trybie jak pokazano w zadaniu, czyli:
1 2 – 3 4 .5 8
wystarczy zmodyfikować podane linie na postać jak poniżej:
linia adres kod instrukcja
———————————————————————————−−−−−−−−−−−−−−−
101 8099 757D80 mov DL6,#_kropka
111 80AE 757D80 mov DL6,#_kropka
114 80B6 757D80 mov DL6,#_kropka
lub w zależności od swoich upodobań posłużyć się zmienną systemo−
wą: “blinks”, której każdy z bitów określa atrybut wyświetlanego zna−
ku, czy ma migać, czy być normalnie wyświetlanym.
Ponieważ nie dotarły do mnie jeszcze listy z rozwiązaniami zadania
nr 3, pozwolę sobie zamieścić najciekawsze propozycje w kąciku pocz−
towym 8051 w kolejnym numerze EdW.
Uwaga!
W poprzedniej lekcji nr 8 do listingu wkradły się drobne błędy, a mianowicie,
komentarze w liniach o podanych numerach powinny wyglądać następująco:
(74) ............ ;T1 jako 8−bitowy z preskalerem 5−bitowym
(76) ............ ;wyzerowanie licznika 1/128 s.
Słławomiir Surowiińskii
E LEKTRONIKA DLA WSZYSTKICH 6/98
41
1128253.001.png
Też to potrafisz
Kącik pocztowy 8051
Zasypany wieloma listami, dotyczącymi cyklu artykułów poświęconych programowaniu mi−
krokontrolerów 8051, postanowiłem uruchomić kącik pytań i odpowiedzi, które kierujecie
do mnie w swoich listach.
Na wstępie chciałem bardzo podziękować za każdy list, zarówno te pochwalne jak i krytycz−
ne. Przyznam że, cieszy mnie bardzo fakt, iż tak wielu z Was zdecydowało się sięgnąć po
„mikroprocesory”, a co najważniejsze odnosi już małe, ale jak ważne w nauce sukcesy.
Dziś kolejna porcja listów od Czytelników i odpowiedzi na niektóre
pytania.
List 1
Zenon Rakoczy z Chropaczowa ma wątpliwości co do instrukcji
MOV adres1, adres2
a ponieważ, jak pisze, jest „ręczniakiem” problem pojawił się w transkryp−
cji na języka maszynowy bez korzystania z komputera i asemblera 8051.
Jak pisałem wcześniej w artykułach instrukcje typu
MOV X, Y
kopiują zawartość po stronie Y do literału X, czyli następuje przeniesie−
nie typu
X <— Y
i wszystko się zgadza. Zenon ma wątpliwości, jak należy przetłumaczyć
np. instrukcję:
MOV DPH, B
Jak wynika z wcześniejszych analiz instrukcji tego typu, najpierw na−
leży zapisać bajt określający instrukcję MOV tego typu, czyli zgodnie
z tabelą we wkładce będzie to:
85 – kod instrukcji „MOV adres1, adres2”
83 – adres rejestru DPH
F0 – adres rejestru B, czyli
instrukcję tę można zapisać jako ciąg bajtów: 85 83 F0.
Niestety, jak podawałem wcześniej, podczas opisu instrukcji proce−
sora ten typ instrukcji jest wyjątkiem i kolejność rejestrów po przetłu−
maczeniu będzie odwrotna, czyli: 85 F0 83.
Oczywiście nie zmienia to działania tej instrukcji, po prostu tak tłuma−
czy się ją na język maszynowy.
Przy okazji podczas omawiania tej instrukcji w EdW w opisie wkradł
się błąd, było zatem:
MOV adres1,, adres2
– przepisanie zawartości komórki o adresie „adres1” do komórki o ad−
resie „adres2”
a powinno być:
MOV adres1,, adres2
– przepisanie zawartości komórki o adresie „adres2” do komórki o ad−
resie „adres1”
dalsza część opisu jest bez błędu, czyli:
(adres1) <− (adres2)
− kod: 1 0 0 0 0 1 0 1
− cykle: 2 bajty: 3 (kod instrukcji + adres2 + adres1)
− przykład:
Parzystość: brak
Bity stopu: 1
Sterowanie przepływem: Brak
oraz dodatkowo w opcji „Zaawansowane...” koniecznie wyłączyć
(odhaczyć) opcję buforowania poprzez FIFO.
b) inną przyczyną może być fakt, że próbuje wysyłać zbiory binarne,
a nasz komputerek akceptuje tylko zbiory w formacie Intel−HEX, ra−
dzę sprawdzić.
Czytelnik ma także wątpliwości co do rysunku kabla połączeniowego
PC z komputerkiem AVT−2250 w wersji 9 na 25 pinów. Informuję, że ry−
sunek jest prawidłowy, a skrzyżowanie 2 z 3 występuje tylko w kablu
„9 na 9”. We wtyku DB25 znaczenie końcówek 2 i 3 jest dokładnie od−
wrotne niż na końcówce DB9, stad brak krzyżowych połączeń.
List 3
Łyżka miodu od Czytelników: Wiiesłław Kusek z Miiellca pisze:
“...Otrzymałem niedawno obiecany bezpłatnie zestaw AVT−2250. Od
razu chcę bardzo podziękować za ten zestaw. I w związku z tym mam
kilka uwag i spostrzeżeń, oraz co nie udało mi się uniknąć – pytań. ... Kit
AVT−2250 – bardzo dobra ocena. Rzecz droga, ale wiadomo pewnych
rzeczy nie da się przeskoczyć. Układ przemyślany i dopracowany do
końca, co świadczy o dużej fachowości autora opracowania i co dla
mnie – początkującego w tym temacie najważniejsze – w dość jasny
i czytelny sposób opisany. Chociaż kilku zdań nie rozumiem. Brawo za
wysoką jakość płytek drukowanych. Układ został przeze mnie zmonto−
wany i po włączeniu zasilania ruszył bez żadnego problemu.”
Adam Szendziiellorz z Wodziisłławiia Ślląskiiego napisał do nas:
„.. Niedawno otrzymałem od Was w/w układ „mikrokomputerka edu−
kacyjnego.... Po odebraniu go na poczcie, czym prędzej wziąłem się do
montowania go. W jakieś 3 godziny układ stał na stole gotowy – trzeba
było tylko jeszcze sprawdzić czy działa... Po podłączeniu zasilania na
wyświetlaczach ukazał się napis „−HELLO” !!! Sam nie mogłem uwie−
rzyć – po raz pierwszy w mojej karierze już po pierwszym uruchomieniu
(w sumie dość skomplikowanego układu) działał on poprawnie!!! – to
chyba dzięki bardzo starannie wykonanych płytek drukowanych i spraw−
nych elementów, choć moja staranność przy jego wykonywaniu też na
pewno temu sprzyjała. (“Ależ oczywiście! – przyp. red.) Po pierwszych
emocjach zacząłem przerabiać wszystkie lekcje EdW dotyczące proce−
sorów – nie jest to łatwe, ale myślę, że w drodze praktyki będzie to
prostsze i lepiej to zrozumiem.
Ponieważ posiadam komputer PC, wykonałem kabel łączący go
z układem. I tu mała uwaga i jednocześnie prośba... Ręczne wklepywa−
nie to chyba strata czasu (który można by wykorzystać do innych ce−
lów), pisanie na komputerze to już coś – można to zapisać, ponownie
odtworzyć i przesłać do komputerka, łatwiej coś zmienić, a przede
wszystkim wykonuje się to „duuuużo” szybciej.”
MOV 7Fh, 7Eh ;przepisanie zawartości dwóch
;sąsiadujących komórek w
;wew. RAM procesora
List 2
Marciin Jurzak nadesłał wiadomość przez Internet, że ma kłopoty
z przesyłaniem programów z komputera do komputerka. Za każdym ra−
zem, kiedy transmisja zaczyna się na wyświetlaczu kompterka eduka−
cyjnego, pojawia się napis „Err” – czyli komunikat błędu.
Jeżeli taki komunikat pojawia się oznacza to, że kabel wykonał popra−
wnie, i dane przesyłane są z PC−ta do komputerka AVT−2250, z tym, że
nie są zrozumiałe dla BIOS−a, stąd komunikat o błędzie. Powodów ta−
kiego stanu rzeczy może być kilka:
a) nie ustawione parametry portu szeregowego w PC−cie – powinien wy−
dać komendę ustawiającą je, jak opisywałem przy okazji opisu Bios−a
komputerka, a mianowicie z poziomu DOS−a wywołać komendę:
MODE COM2: 4800, n, 8, 1 {Enter}
Takich listów otrzymuję bardzo duże. Cieszymy się z tego, że więk−
szość z Was nie ma problemów z uruchamianiem układu komputerka
edukacyjnego AVT−2250. Jednak do redakcyjnego serwisu trafiają cza−
sem z reklamacją zestawy nie działające. Powodem takiego stanu
rzeczy i często zażenowania nabywcy jest niestaranny, często budzący
zgrozę sposób montażu. Apeluję więc, nie starajcie się lutować ele−
mentów „byle czym” i mierzcie swoje siły na zamiary, a każdy układ
elektroniczny odpali bez problemów. Jeżeli nie czujecie się na siłach
w samodzielnym zmontowaniu, proponuje zamówienie w AVT zmonto−
wanego komputerka – kit AVT−2250/C.
P.S. Adamie z Wodzisławia, brakującą dyskietkę AVT−2250/D otrzy−
ma jak tylko pojawią się one w magazynie AVT. W razie kłopotów pro−
szę o kontakt z Działem Handlowym AVT i potwierdzenie swego za−
mówienia.
Jeżeli korzysta z Windows 95, należy parametry portu ustawić
w Panelu sterowania w opcji System – Menedżer Urządzeń, usta−
wiają parametry:
Bitów na sekundę : 4800
Bity danych: 8
42
E LEKTRONIKA DLA WSZYSTKICH 6/98
1128253.002.png
Zgłoś jeśli naruszono regulamin