Mikrokontrolery To takie proste, cz 15 (układ licznikowy w 8052C & specjalne tryby pracy 8051)


Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
Mikrokontrolery?
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-
To takie proste...
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
Część 14
 inteligentnych urządzeń elektro-
nicznych ... a raczej mikroelektro-
Licznik T2 oraz specjalne tryby pracy
nicznych.
Poprzedni odcinek szkoły mikroprocesorowej poświęciłem omówie- Z układem czasowo-licznikowym T2 związane są dwa dodatkowe 8-
R
L
D
niu strony praktycznej układów czasowo-licznikowych T0 i T1 procesora bitowe rejestry, (tworzące 16-bitowy rejestr RLD) a mianowicie:
0
C
B
h
:
R
L
D
H
8051/52. Podałem też praktyczne wskazówki na powiązanie pracy liczni- 0CBh: RLDH  starsze 8 bitów rejestru RLD
0
C
A
h
:
R
L
D
L
ków z układem przerwań procesora. Dzięki takiemu połączeniu udało 0CAh: RLDL  młodsze 8 bitów rejestru RLD
nam się wspólnie stworzyć i przeanalizować przykładowy programik od-
mierzający czas. To podstawa do zrozumienia prawidłowego programo- Rejestry dodatkowe licznika T2:
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ó- Rejestr RLD (RLDH.RLDL) pełni dwojaką rolę w zależności od trybu
ry nieprzewidzianych, jak np. przypadkowe przeładowanie liczników, pracy licznika T2. Po pierwsze może być rejestrem wartości początko-
czy automatyczne rozpoznawanie prędkości transmisji szeregowej wej licznika T2 (TH2.TL2). Wtedy to w trybie pracy, który za chwilę
z urządzenia zewnętrznego. Wróćmy jednak do tematu i zajmijmy się omówię, po przepełnieniu licznika, wartość początkowa tego licznika
układem czasowo-licznikowym (potocznie nazywanym licznikiem) T2. zostaje automatycznie (bez programowego przeładowywania) przepisa-
na z RLDH do TH2 oraz z RLDL do TL2.
TIMER T2 w 8052/C W innym przypadku rejestr RLD może pełnić rolę rejestru zatrzasko-
Jak powiedziałem wcześniej, układ ten nie występuje w procesorach wego, w którym zapamiętywana jest zawartość licznika T2 (TH2.TL2)
8051/C51, jest natomiast integralną częścią struktury procesorów 8052/C. w pewnych szczególnych momentach, o tym także za chwilę.
Z pewnych względów przy niektórych aplikacjach dwa układy czasowo-licz- Podobnie jak omawiane w poprzednim odcinku układy T0 i T1, licznik
nikowe (T0 i T1) to za mało, wtedy warto sięgnąć właśnie po kostkę  52. T2 może pełnić dwie różne funkcje:
Licznik T2 podobnie jak poprzednie T0 i T1 jest 16-bitowy, a zliczanie  może pracować jako czasomierz, czyli zliczać impulsy wewnętrzne
odbywa się przy pomocy dwóch 8-bitowych rejestrów z grupy SFR o częstotliwości równej częstotliwości oscylatora Fxtal podzielonej
o adresach: przez 12 (zastosowanie takiego trybu pracy już poznaliście na przykła-
0CDh: TH2  starsze 8 bitów licznika T2 dzie z lekcji nr 8)
0
C
D
h
:
0CCh: TL2  młodsze 8 bitów licznika T2  może także zliczać impulsy zewnętrzne z specjalnego wejścia T2,
0
C
C
h
:
którym jest pin 1 procesora (alternatywna funkcja bitu 0 portu P1).
Rejestry operacyjne licznika T2: 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.
Tak jak poprzednio rejestry te można odczytywać jak i modyfiko- We wszystkich trybach pracy licznika T2 zasada jego pracy jest podob-
wać, przeładowując (zmieniając) ich zawartość np. za pomocą instrukcji: na jak dla układów T0 i T1. A więc obowiązują zasady dotyczące np. wy-
mov TH2, #wartH krywania stanów niskich i wysokich (na przemian) w przypadku zliczania
mov TL2, #wartL impulsów zewnętrznych, ich częstotliwości maksymalnej, w zależności
38 ELEKTRONIKA DLA WSZYSTKICH 6/98
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
od częstotliwości oscylatora procesora. Wszystkie omówiłem w poprzed- wewnętrznego układu licznikowego T2 z zewnętrznym sygnałem ze-
niej części klasy mikroprocesorowej, warto więc je sobie przypomnieć. garowym (dołączonym do wejścia T2EX).
Warto także wspomnieć o możliwości pracy licznika T2 w trybie tak- 3) W każdym trybie pracy ustawienie znacznika TF2 może być sygnałem
towania portu szeregowego. Wtedy licznik T1 może być użyty do in- zgłoszenia przerwania. W tym przypadku ustawiane znaczniki w słowie
nych celów, natomiast T2 ze względu na swoją 16-bitową  naturę po- T2CON nie są automatycznie zerowane po przyjęciu przerwania, toteż
zwala na generowanie bardzo niskich częstotliwości taktowania portu, należy o tym pamiętać w procedurze obsługi przerwania. Z drugiej
a dlaczego, o szczegółach powiem za chwilę. strony niezerowanie znaczników umożliwia programiście ich analizę
Główny rejestrem sterującym trybami oraz pracą licznika T2 jest re- w procedurze obsługi przerwania, a dopiero po tym ich wyzerowanie.
jestr T2CON (SFR adres 0C8h). Z pewnością pamiętasz drogi Czytelni- 4) Jak wspomniałem wcześniej, licznik T2 może taktować port szerego-
ku, że w przypadku liczników T0 i T1 był to rejestr TMOD (oraz częścio- wy. W tym celu należy ustawić bity TCLK i RCLK. Taktowany w ten
wo TCON), natomiast w przypadku układu czasowo-licznikowego T2
sposób port szeregowy będzie mógł pracować w trybie 1 (znaki 8-bito-
wszystkimi funkcjami licznika T2 steruje tylko jeden rejestr T2CON.
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-
Rejestr jest adresowany bitowo (w odróżnieniu od TMOD w przypad-
jących (Fxtal/2 lub zewnętrznych z wejścia T2) dodatkowo przez 16
ku T0 i T1), co znacznie ułatwia operacje modyfikacji poszczególnych je-
traktujÄ… one odbiornik (RCLK=1) lub nadajnik (TCLK=1) portu szerego-
go bitów. Oto ich znaczenie:
wego. W tym trybie pracy licznika, jego przepełnienie nie ustawia
znacznika jego przepełnienia TF2. Dzięki temu w przypadku gdy usta-
TF2 (bit T2CON.7, adres: CFh)  bit ustawiany w momencie przepełnie-
T
F
2
(
b
i
t
T
2
C
O
N
.
7
,
a
d
r
e
s
:
C
F
h
)
wimy bit EXEN2 (w słowie T2CON), to pod wpływem opadającego
nia licznika T2, jest znacznikiem zgłoszenia przerwania przez T2
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-
EXF2 (bit T2CON.6, adres CEh)  bit ustawiany w momencie wykrycia
E
X
F
2
(
b
i
t
T
2
C
O
N
.
6
,
a
d
r
e
s
C
E
h
)
nia. Jak widać możliwe jest zatem wykorzystanie wejścia T2EX jako
opadającego zbocza na wejściu T2EX (pin 2 procesora), aktywny gdy bit
dodatkowego (obok INT0 i INT1) wejścia przerywającego procesora.
EXEN2 = 1, jest sygnałem zgłoszenia przerwania
W przypadku taktowania portu szeregowego (T2 taktowany sygnałem
wewnętrznym Fxtal / 2) prędkość transmisji (n) można określić wzorem:
RCLK (bit T2CON.5, adres CDh)  ustawienie tego bitu powoduje przy-
R
C
L
K
(
b
i
t
T
2
C
O
N
.
5
,
a
d
r
e
s
C
D
h
)
Fxtal
łączenie licznika T2 jako taktującego (przepełnieniem) odbiornika portu
n =           
szeregowego procesora
(65536  RLD) x 2 x 16
TCLK (bit T2CON.4, adres CCh)  ustawienie tego bitu powoduje przy-
T
C
L
K
(
b
i
t
T
2
C
O
N
.
4
,
a
d
r
e
s
C
C
h
)
stąd łatwo po przekształceniu wzoru wyznaczyć wartość początkową
łączenie licznika T2 jako taktującego (przepełnieniem) nadajnika portu
rejestrów RLD przy zadanej prędkości transmisji:
szeregowego procesora
Fxtal Fxtal
EXEN2 (bit T2CON.3, adres CBh)  bit uaktywniający wejście T2EX (pin
E
X
E
N
2
(
b
i
t
T
2
C
O
N
.
3
,
a
d
r
e
s
C
B
h
)
RLD = 65536       -- = 65536     --
2 procesora), ustawienie  uaktywnienie, wyzerowanie  dezaktywacja
2 x 16 x n 32 x n
TR2 (bit T2CON.2, adres CAh)  bit sterujÄ…cy zliczaniem licznika T2,
T
R
2
(
b
i
t
T
2
C
O
N
.
2
,
a
d
r
e
s
C
A
h
)
gdzie RLD to oczywiście wartość początkowa wpisana do rejestrów
ustawienie (TR2=1) powoduje pracÄ™ licznika, wyzerowanie (TR2=0) za-
RLDH.RLDL. Poniżej podaję przykładowe prędkości transmisji dla rezo-
trzymanie zliczania
natora kwarcowego 11,0592 MHz.
C/T2 (bit T2CON.1, adres C9h)  bit określający funkcję pracy T2, i tak :
C
/
T
2
(
b
i
t
T
2
C
O
N
.
1
,
a
d
r
e
s
C
9
h
)
Fxtal (MHz) RLD n (bodów)
F
x
t
a
l
(
M
H
z
)
R
L
D
n
(
b
o
d
ó
w
)
 ustawienie (C/T2=1) przełącza T2 w tryb zliczania impulsów zewnę-
11,0592 FFFFh 345600
trznych
1
1
5
2
0
0
11,0592 FFFDh 115200
 wyzerowanie (C/T2=0) włącza funkcję czasomierza (zliczanie impul-
11,0592 FFFCh 86400
sów wewnętrznych Fxtal/12)
5
7
6
0
0
11,0592 FFFAh 57600
3
8
4
0
0
11,0592 FFF7h 38400
CP/RL2 (bit T2CON.0, adres C8h)  bit określający tryb pracy licznika,
C
P
/
R
L
2
(
b
i
t
T
2
C
O
N
.
0
,
a
d
r
e
s
C
8
h
)
11,0592 FFF4h 28800
i tak:
1
9
2
0
0
11,0592 FFEEh 19200
 ustawienie (CP/RL2=1) powoduje aktywacjÄ™ trybu z zatrzaskiwaniem
9
6
0
0
11,0592 FFDCh 9600
zawartości licznika (rejestrów T2  TH2.TL2 w rejestrach RLD 
4
8
0
0
11,0592 FFB8h 4800
RLDH.RLDL)
2
4
0
0
11,0592 FF70h 2400
 wyzerowanie (CP/RL2=0) powoduje prace z automatycznym wpisy-
1
2
0
0
11,0592 FEE0h 1200
waniem wartości początkowej (z rejestrów RLD do rejestrów T2)
11,0592 FDC0h 600
11,0592 FB80h 300
            ------
11,0592 F700h 150
W zależności od kombinacji niektórych bitów z rejestru T2CON moż-
11,0592 EE00h 75
liwe są różne stany pracy układu czasowo-licznikowego T2, oto kilka
wskazówek:
Jak widać, zakres możliwych do uzyskania prędkości transmisji jest
1) W przypadku gdy ustawimy bit CP/RL2, licznik T2 będzie zliczał mo-
o wiele szerszy, niż w przypadku taktowania portu licznikiem T1. Naj-
dulo 216, po każdym przepełnieniu będzie ustawiany znacznik zgło-
mniejsza szybkość w przypadku rezonatora kwarcowego jak w tabeli
szenia przerwania TF2.
czyli 11,0592 MHz przy użyciu licznika T2, to 5 bitów na sekundę,
Jeżeli ustawimy dodatkowo bit EXEN2, co spowoduje aktywację
a więc prawdziwy żółw! Sprawdzmy:
wejścia T2EX procesora (P1.1), to możemy zatrzasnąć podając na
5
nmin=11059200/(32×(65536 0))=11059200/(32×65536)=5 (bitów/sek.)
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- Wtedy oczywiście wartością początkowa będzie zero (RLDH.RLDL=0).
bie z automatycznym wpisywaniem wartości początkowej z rejest- W tabeli pogrubioną czcionką zaznaczono typowe, spotykane w kompute-
rów RLD w momencie przepełnienia. W tym miejscu nasuwa się po- rach PC wartości transmisji szeregowej, realizowanej poprzez port RS232c.
dobieństwo pracy liczników T0 lub T1 w trybie 1, z tym, że przełado- A oto przykład programowania rejestru sterującego T2CON oraz ro-
boczych i dodatkowych w celu uzyskania kilku trybów i funkcji pracy
wanie licznika następuje w przypadku T2 automatycznie, co zwalnia
nas od programowego wpisywania wartości początkowej do rejest- licznika T2.
rów TH2 i TL2. W momencie przepełnienia ustawiany jest znacznik Założymy, że nasz licznik T2 będzie pracował jako czasomierz z auto-
TF2, co może być także sygnałem zgłoszenia przerwania. Dodatkowo matycznym ładowaniem wartości początkowej z RLD po przepełnieniu.
przeładowanie zawartości rejestrów roboczych licznika (TH2.TL2) Założymy, że przepełnienie ma następować dokładnie co 1ms, a do
może nastąpić pod wpływem zewnętrznego zbocza opadającego, procesora dołączony jest rezonator kwarcowy o częstotliwości 6 MHz.
podanego na wejście T2EX, trzeba tylko dodatkowo ustawić bit Obliczenia:
EXEN2 (EXEN2=1). Takie wymuszenie powoduje także ustawienie  przy fxtal= 6 MHz licznik pracując jako czasomierz będzie inkremen-
znacznika EXF2. DziÄ™ki temu możliwe jest zsynchronizowanie pracy towany co 2µs
ELEKTRONIKA DLA WSZYSTKICH 6/98 39
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
 w czasie 1 ms (milisekundy) zawiera siÄ™ 1000 µs (mikrosekund), czy- Z grubsza rzecz ujmujÄ…c tryby te różniÄ… siÄ™ od siebie stopniem pobo-
li 500 okresów zegara procesora ru mocy przez procesor, oraz funkcji, jakie pozostają aktywne w tych
trybach pracy w odróżnieniu od normalnego trybu pracy procesora.
 wobec tego wartość początkowa licznika można obliczyć jako:
Przejdzmy zatem do omówienia rejestru PCON, bo o nim jest mowa. Po-
wart.początkowa = wartość maksymalna  500 = 65536  500 = 65036
niżej przedstawione jest znaczenie poszczególnych bitów tego rejestru.
= FE0Ch (heksadecymalnie)
Warto przy tym zauważyć, że rejestr nie może być adresowany bitowo, to-
można więc zapisać komendy inicjujące licznik T2:
też nie da się sterować jego poszczególnymi bitami poprzez instrukcje typu:
mov T2CON, #0 ;czasomierz z automat.
SETB bit
;Å‚adowaniem wart. poczÄ…tkowej z RLD
lub
mov RLDH, #0FEh
CLR bit
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 5 istotnych dla użytkownika bitów.
S
M
O
D
(
b
i
t
.
7
)
....... ;dalsze instrukcje SMOD (bit .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-
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- gowego poprzez licznik T1, kiedy ten pracuje w trybie taktowania tego
portu. W odcinku, w którym omawiałem port szeregowy, w zamiesz-
kie bity tego słowa zostały ustawione na zero, co zgadza się z opisem
czonej tam tabeli podałem przykłady wartości początkowych dla stan-
rejestru T2CON, który omówiłem przed chwilą.
dardowych prędkości transmisji asynchronicznej. Wszystkie odnosiły
Jeżeli ktoś teraz zechce dopisać procedurę obsługi przerwania, może
się właśnie do podwojonego trybu prędkości transmisji, kiedy bit ten
to zrobić analogicznie jak w przypadku opisanej wcześnie procedury ob-
jest ustawiony. Jeżeli nie chcemy pracować w trybie podwojonej pręd-
sługi przerwania od przepełnienia licznika T0 (T1), pamiętając jednak
kości, bit ten powinien być wyzerowany (PCON=0).
o adresie wektora przerwania, który w tym przypadku wynosi:
Ustawienie bitu SMOD w rejestrze PCON można wykonać za pomo-
002Bh
0
0
2
B
h
cÄ… instrukcji, np.:
a w przypadku naszego komputerka edukacyjnego (AVT-2250) procedu-
ORL PCON, #80h
ra powinna zaczynać się od adresu
wyzerowanie zaÅ› za pomocÄ… instrukcji:
802Bh
8
0
2
B
h
ANL PCON, #7Fh
zgodnie z zasadami pisania takich podprogramów, które omówiłem
w poprzednim numerze EdW.
 (bity: 6...4)  nie wykorzystane

(
b
i
t
y
:
6
.
.
.
4
)
Program na nasz komputerek mógłby więc zaczynać się następująco:
org 8000h
GF1 (bit .3)  bit programowy do dowolnego wykorzystania przez pro-
G
F
1
(
b
i
t
.
3
)
ljmp START
gramistÄ™
org 802Bh
GF0 (bit .2)  bit programowy do dowolnego wykorzystania przez pro-
G
F
0
(
b
i
t
.
2
)
intT2: .........
gramistÄ™
.........
PD (bit .1)  bit włączający tryb obniżonego poboru mocy   uśpienia .
P
D
(
b
i
t
.
1
)
.........
Ustawienie tego bitu powoduje wprowadzenie procesora w tryb uśpie-
pop DPL
nia, kiedy to pobór prądu spada o około 500 razy, a napięcie zasilające
pop DPH
Vcc może być obniżone do 2,0V. Wykonanie instrukcji ustawiającej ten
pop Acc
bit jest ostatnim poleceniem wykonanym przez procesor w programie.
reti
IDL (bit .0)  bit włączający tryb  jałowy procesora.
I
D
L
(
b
i
t
.
0
)
;******************************************************* Poniżej nieco dokładniej omówię oba tryby pracy.
START:
mov T2CON, #0 ;czasomierz z automat. Tryb jałowy
;ładowaniem wart. Instrukcja, która ustawia bit PCON.0 powoduje wprowadzenie proce-
poczÄ…tkowej z RLD sora w ten tryb. Jest ona ostatniÄ… wykonywanÄ… przez procesor instruk-
mov RLDH, #0FEh cją. Wewnętrzny sygnał zegarowy zostaje odłączony od jednostki cent-
ralnej (CPU), ale układ przerwań, port szeregowy i licznikowy pracują
mov RLDL, #0Ch ;załadowanie wartości FE0Ch
dalej, jeżeli wcześniej były odpowiednio skonfigurowane i ustawione.
;(poczÄ…tkowej)
Stan całego procesora, a więc stan:
mov TH2, RLDH
 rejestrów specjalnych SFR,
mov TL2, RLDL ;aby prawidłowo zainicjować
 pamięci wewnętrznej RAM użytkownika
;pierwsze przepełnienie
 pinów portów P0...P3
setb TR2 ;start licznika T2
pozostaje bez zmian i jest taki sam jak był tuż przed wejściem proceso-
.......
ra w tryb jałowy.
....... ;dalsze instrukcje
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ś-
END
niej uaktywnione w rejestrze IE. Pojawienie siÄ™ przerwania zeruje au-
tomatycznie (bez udziału programu użytkownika) flagę PCON.0 
Nie należy jednak zapominać że w licznik T2 wyposażony jest proce-
i procesor powraca do normalnej pracy, z tym, że następną instruk-
sor 8052/C, toteż jeżeli masz w komputerku AVT-2250 procesor
cją po wyjściu ze stanu jałowego pod wpływem przerwania będzie
8051/C51, to musisz go po prostu wymienić na właściwa kostkę.
pierwsza znajdująca się w procedurze obsługi danego przerwania, aż
W sklepie nie powinna ona kosztować więcej jak 5zł.
do instrukcji RETI, kiedy to procesor automatycznie powraca do in-
strukcji następnej po tej, która wprowadziła procesor w stan jałowy,
Specjalne tryby pracy
czyli tej, która ustawiła bit IDL w rejestrze PCON.
W tej części artykułu omówię tryby pracy procesora, dzięki którym
2) Drugim sposobem na wyjście z tego stanu jest zerowanie procesora.
możliwe jest realizowanie ciekawych rozwiązań układowych, np. urzą-
Ze względu na fakt, że podczas trybu  jałowego procesora pracuje
dzeń zasilanych z baterii  czyli takich, w których kwestia poboru ener-
nadal zegar systemowy, do prawidłowego zresetowania potrzebny
gii jest elementem krytycznym.
jest impuls zerujący o długości co najmniej 24 okresów oscylatora.
W obszarze rejestrów SFR procesora (przypominam  jest to we-
wnętrzna pamięć danych RAM adresowana bezpośrednio, o adresach
Tryb uśpienia  obniżonego poboru mocy
80h...FFh) znajduje się jeszcze jeden ciekawy rejestr specjalnego prze- W tym trybie, obecnie stosowanym przez producentów tylko w kostkach
znaczenia. Jego funkcją jest kontrola specjalnych trybów pracy proce- typu CMOS, czyli np. 80C51 lub 80C, cały mikrokontroler pobiera znacznie
sora, a mianowicie:
mniej energii, oraz dodatkowo napięcie zasilające układ może zostać zmniej-
 trybu tzw.  jałowego , szone od standardowych 5V do 2,0V. Instrukcja ustawiająca bit PD (PCON.1)
 trybu tzw.  uśpienia . jest ostatnią wykonywaną przez procesor. W trybie tym oscylator procesor
40 ELEKTRONIKA DLA WSZYSTKICH 6/98
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
zostaje wyłączony (po prostu staje). Zostają odłączone wszystkie układy fun- DPTR 0000h wskaznik danych
kcjonalne procesora, takie jak układy licznikowe, port szeregowy, układ prze- P0...P3 FFh porty
rwań. Pozostaje jedynie niezmieniona zawartość wewnętrznej pamięci IP xxx00000b rejestr priorytetu przerwań
RAM, w tym pamięci użytkownika oraz rejestrów specjalnych SFR. Piny por- IE 0xx00000b rejestr masek przerwań
TMOD 00h rej. liczników T0 i T1
tów pozostają zgodne ze stanami odpowiadających im bitów w rejestrach
TCON 00h rej. ster. liczników i przerwań
P0...P3 w obszarze SFR. Końcówki ALE i PSEN znajdują się w stanie niskim.
TH0 00h
W tym trybie pracy procesora, a raczej nie trybie pracy, co uśpienia, proce-
TL0 00h
sor pobiera około 500 razy mniej prądu niż w stanie normalnej pracy. Dla
TH1 00h
przykładu podam, że dla kostki 80C51 (czyli w wersji CMOS) :
TL1 00h
 w trybie pracy normalnej pobór prądu wynosi ok. 20mA
SCON 00h rejestr portu szeregowego
(przy fxtal=12MHz)
SBUF zmienny bufor portu szeregowego
 w trybie  jałowym pobór prądu spada do około 3,0 mA
PCON (MOS) 0xxxxxxx dla układów NMOS (8051/2)
(przy fxtal=12MHz)
PCON (CMOS) 0xxx0000b dla ukł. CMOS (80C51/52)
 w trybie uÅ›pienia pobór prÄ…du przez ukÅ‚ad wynosi ok. 50µA (mikro-
amper!), przy obniżeniu zasilania do 2,0V.
Uwaga: litera  x oznacza, że dany bit przyjmuje wartość przypadko-
Jedyną metodą na opuszczenie trybu uśpienia i powrót do normalnej
wą lub nie jest implementowany w danym rejestrze. Wartość po
pracy jest wyzerowanie mikroprocesora poprzez podanie impulsu rese-
 RESECIE przedstawiono w formacie szesnastkowym lub binarnym (z
tującego na wejście RST (pin 9) o czasie trwania ok. 10ms.
 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.
Reset procesora
Programując mikrokontrolery 8051/52, trzeba pamiętać o tym fakcie,
Popularne zresetowanie odbywa siÄ™ poprzez podanie impulsu dodat-
toteż szczególnie w przypadku wykorzystania specjalnych trybów pracy
niego na wejście RST kostki (pin 9) zgodnie z zasadami, które omówi-
należy mieć na względzie fakt, że rejestry specjalne zostają utracone po
łem przed chwilą. Najprostsze i bardziej rozbudowane układy resetowa-
resecie procesora, a więc konieczne jest ich odtworzenie, oczywiście
nia mikrokontrolerów serii MCS-51 podałem w jednym z pierwszych
tylko w razie takiej konieczności.
odcinków klasy mikroprocesorowej.
Jeżeli ktoś interesuje się szczegółami, dotyczącymi architektury we-
W wyniku zresetowania rejestru układy specjalne procesora (SFR) zo-
wnętrznej mikrokontrolera 80C51 lub podobnych, które nie za często są
stają automatycznie zainicjowane wartościami, jak podaję w tabeli poniżej:
wykorzystywane w projektach, przynajmniej przez poczÄ…tkujÄ…cych pro-
gramistów, może sięgnąć do literatury [1] i [2]. Obie pozycje wymagają
Rejestr Wartość Uwagi
R
e
j
e
s
t
r
W
a
r
t
o
Å›
ć
U
w
a
g
i
jednak znajomości podstaw terminologii technicznej jęz. angielskiego.
po  RESET
p
o

R
E
S
E
T

Chętnych zapraszam do lektury, pozostałym proponuję poczekać na ko-
lejny odcinek naszego cyklu.
PC 0000h licznik rozkazów
Sławomir Surowiński
S
Å‚
a
w
o
m
i
r
S
u
r
o
w
i
Å„
s
k
i
ACC 00h akumulator
B 00h rejestr B
Literatura:
PSW 00h słowo stanu programu
[1] 80C51-based 8-bit Microcontrollers, Data Handbook, Philips 1995
SP 07h wskaznik stosu [2] Microcontroller Data Book, Atmel 1995,6,7
Lekcja 9
9
Na początku lekcji zajmijmy się rozwiązaniem zadań z poprzedniego Dzięki badaniu bitu nr 6 w zmiennej  licz128 , który przecież zmienia
numeru EdW i odcinka klasy mikroprocesorowej. 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-
RozwiÄ…zanie zadania nr 1
R
o
z
w
i
Ä…
z
a
n
i
e
z
a
d
a
n
i
a
n
r
1
świetlane są godziny  linie (116...118), minuty  linie (119...121) oraz
Oto krótka analiza głównej części listingu od etykiety START.
sekundy  linie (122...124).
W linii (72) profilaktycznie zatrzymujemy licznik T1. W dwóch kolej-
W linii (125) następuje skok do początku, gdzie następuje kolejne
nych liniach ustawiamy tryb pracy licznika T1, jako czasomierza zliczajÄ…-
uaktualnienie wyświetlanego czasu.
cego wewnętrzne impulsy zegarowe (tryb pracy 0). W linii (75) wpisu-
jemy obliczoną wartość początkową, przy której licznik będzie przepeł-
RozwiÄ…zanie zadania nr 2
R
o
z
w
i
Ä…
z
a
n
i
e
z
a
d
a
n
i
a
n
r
2
niany okładnie co 1/128 sekundy.
Aby wyświetlić aktualny czas w trybie jak pokazano w zadaniu, czyli:
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
1 2  3 4 .5 8
komputerka starszy bajt 16-bitowego adresu tabeli wektorów przerwań
wystarczy zmodyfikować podane linie na postać jak poniżej:
w zewnętrznej pamięci programu.
linia adres kod instrukcja
Należy jeszcze w linii (78) odblokować przerwanie od licznika T1
                           ---------------
(przepełnienie licznika) oraz ustawić priorytet na to przerwanie (linia 79)
101 8099 757D80 mov DL6,#_kropka
inaczej bowiem odmierzanie czasu może być zakłócone pracującym
111 80AE 757D80 mov DL6,#_kropka
przecież stale licznikiem T0 i wywoływaną przez jego przepełnienia pro-
114 80B6 757D80 mov DL6,#_kropka
cedurą obsługi przerwania, która zajmuje się obsługą wyświetlacza i kla-
wiatury komputerka edukacyjnego AVT-2250.
lub w zależności od swoich upodobań posłużyć się zmienną systemo-
Po zainicjowaniu układu licznikowego T1 oraz przerwania od tego licz-
wą:  blinks , której każdy z bitów określa atrybut wyświetlanego zna-
nika, w linii 81 profilaktycznie czyścimy wyświetlacz, aby potem w li-
ku, czy ma migać, czy być normalnie wyświetlanym.
niach (82)...(85) pobrać z klawiatury godzinę początkową i w linii 86 za-
Ponieważ nie dotarły do mnie jeszcze listy z rozwiązaniami zadania
pamiętać ją w komórce GODZ. Podobnie dzieje się dla minut  linie
nr 3, pozwolę sobie zamieścić najciekawsze propozycje w kąciku pocz-
(88)...(91) i sekund  linie (94)...(98).
towym 8051 w kolejnym numerze EdW.
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- Uwaga!
tury opóznieniu (ok. 0,5 s.)  linie (102),(103), komputerek oczekuje na
W poprzedniej lekcji nr 8 do listingu wkradły się drobne błędy, a mianowicie,
naciśnięcie klawisza przez użytkownika celem uruchomienia zegara.
komentarze w liniach o podanych numerach powinny wyglądać następująco:
Uruchomienie następuje w kolejnej linii (105), a dalej znajduje się część (74) ............ ;T1 jako 8-bitowy z preskalerem 5-bitowym
programu, której zadaniem jest wyświetlanie upływającego czasu na (76) ............ ;wyzerowanie licznika 1/128 s.
S
Å‚
a
w
o
m
i
r
S
u
r
o
w
i
Å„
s
k
i
wyświetlaczu  od etykiety  pokaz: w linii (107). Sławomir Surowiński
ELEKTRONIKA DLA WSZYSTKICH 6/98 41
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
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 Parzystość: brak
pytania. Bity stopu: 1
Sterowanie przepływem: Brak
List 1
oraz dodatkowo w opcji  Zaawansowane... koniecznie wyłączyć
Zenon Rakoczy z Chropaczowa ma wątpliwości co do instrukcji
Z
e
n
o
n
R
a
k
o
c
z
y
z
C
h
r
o
p
a
c
z
o
w
a
(odhaczyć) opcję buforowania poprzez FIFO.
MOV adres1, adres2
a ponieważ, jak pisze, jest  ręczniakiem problem pojawił się w transkryp-
b) inną przyczyną może być fakt, że próbuje wysyłać zbiory binarne,
cji na języka maszynowy bez korzystania z komputera i asemblera 8051.
a nasz komputerek akceptuje tylko zbiory w formacie Intel-HEX, ra-
Jak pisałem wcześniej w artykułach instrukcje typu
dzę sprawdzić.
MOV X, Y
kopiują zawartość po stronie Y do literału X, czyli następuje przeniesie-
Czytelnik ma także wątpliwości co do rysunku kabla połączeniowego
nie typu
PC z komputerkiem AVT-2250 w wersji 9 na 25 pinów. Informuję, że ry-
X < Y
sunek jest prawidłowy, a skrzyżowanie 2 z 3 występuje tylko w kablu
i wszystko się zgadza. Zenon ma wątpliwości, jak należy przetłumaczyć
 9 na 9 . We wtyku DB25 znaczenie końcówek 2 i 3 jest dokładnie od-
np. instrukcjÄ™:
wrotne niż na końcówce DB9, stad brak krzyżowych połączeń.
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 List 3
W
i
e
s
Å‚
a
w
K
u
s
e
k
z
M
i
e
l
c
a
z tabelą we wkładce będzie to: Ayżka miodu od Czytelników: Wiesław Kusek z Mielca pisze:
85  kod instrukcji  MOV adres1, adres2  ...Otrzymałem niedawno obiecany bezpłatnie zestaw AVT-2250. Od
83  adres rejestru DPH razu chcę bardzo podziękować za ten zestaw. I w związku z tym mam
F0  adres rejestru B, czyli kilka uwag i spostrzeżeń, oraz co nie udało mi się uniknąć  pytań. ... Kit
instrukcję tę można zapisać jako ciąg bajtów: 85 83 F0. AVT-2250  bardzo dobra ocena. Rzecz droga, ale wiadomo pewnych
Niestety, jak podawałem wcześniej, podczas opisu instrukcji proce- rzeczy nie da się przeskoczyć. Układ przemyślany i dopracowany do
sora ten typ instrukcji jest wyjątkiem i kolejność rejestrów po przetłu- końca, co świadczy o dużej fachowości autora opracowania i co dla
8
5
F
0
8
3
maczeniu będzie odwrotna, czyli: 85 F0 83. mnie  początkującego w tym temacie najważniejsze  w dość jasny
Oczywiście nie zmienia to działania tej instrukcji, po prostu tak tłuma- i czytelny sposób opisany. Chociaż kilku zdań nie rozumiem. Brawo za
czy się ją na język maszynowy. wysoką jakość płytek drukowanych. Układ został przeze mnie zmonto-
Przy okazji podczas omawiania tej instrukcji w EdW w opisie wkradł wany i po włączeniu zasilania ruszył bez żadnego problemu.
się błąd, było zatem:
MOV adres1, adres2 Adam Szendzielorz z Wodzisławia Śląskiego napisał do nas:
M
O
V
a
d
r
e
s
1
,
a
d
r
e
s
2
A
d
a
m
S
z
e
n
d
z
i
e
l
o
r
z
z
W
o
d
z
i
s
Å‚
a
w
i
a
Åš
l
Ä…
s
k
i
e
g
o

a
d
r
e
s
1

 przepisanie zawartości komórki o adresie  adres1 do komórki o ad-  .. Niedawno otrzymałem od Was w/w układ  mikrokomputerka edu-
a
d
r
e
s
2

resie  adres2 kacyjnego.... Po odebraniu go na poczcie, czym prędzej wziąłem się do
a powinno być: montowania go. W jakieś 3 godziny układ stał na stole gotowy  trzeba
MOV adres1, adres2 było tylko jeszcze sprawdzić czy działa... Po podłączeniu zasilania na
M
O
V
a
d
r
e
s
1
,
a
d
r
e
s
2
a
d
r
e
s
2

 przepisanie zawartości komórki o adresie  adres2 do komórki o ad- wyświetlaczach ukazał się napis  -HELLO !!! Sam nie mogłem uwie-
a
d
r
e
s
1

resie  adres1 rzyć  po raz pierwszy w mojej karierze już po pierwszym uruchomieniu
dalsza część opisu jest bez błędu, czyli: (w sumie dość skomplikowanego układu) działał on poprawnie!!!  to
(adres1) <- (adres2) chyba dzięki bardzo starannie wykonanych płytek drukowanych i spraw-
- kod: 1 0 0 0 0 1 0 1 nych elementów, choć moja staranność przy jego wykonywaniu też na
- cykle: 2 bajty: 3 (kod instrukcji + adres2 + adres1) pewno temu sprzyjała. ( Ależ oczywiście!  przyp. red.) Po pierwszych
- przykład: emocjach zacząłem przerabiać wszystkie lekcje EdW dotyczące proce-
MOV 7Fh, 7Eh ;przepisanie zawartości dwóch sorów  nie jest to łatwe, ale myślę, że w drodze praktyki będzie to
;sąsiadujących komórek w prostsze i lepiej to zrozumiem.
;wew. RAM procesora 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-
List 2 nie to chyba strata czasu (który można by wykorzystać do innych ce-
Marcin Jurzak nadesłał wiadomość przez Internet, że ma kłopoty lów), pisanie na komputerze to już coś  można to zapisać, ponownie
M
a
r
c
i
n
J
u
r
z
a
k
z przesyłaniem programów z komputera do komputerka. Za każdym ra- odtworzyć i przesłać do komputerka, łatwiej coś zmienić, a przede
zem, kiedy transmisja zaczyna się na wyświetlaczu kompterka eduka- wszystkim wykonuje się to  duuuużo szybciej.
E
r
r

cyjnego, pojawia się napis  Err  czyli komunikat błędu.
Jeżeli taki komunikat pojawia się oznacza to, że kabel wykonał popra- Takich listów otrzymuję bardzo duże. Cieszymy się z tego, że więk-
wnie, i dane przesyłane są z PC-ta do komputerka AVT-2250, z tym, że szość z Was nie ma problemów z uruchamianiem układu komputerka
nie są zrozumiałe dla BIOS-a, stąd komunikat o błędzie. Powodów ta- edukacyjnego AVT-2250. Jednak do redakcyjnego serwisu trafiają cza-
kiego stanu rzeczy może być kilka: sem z reklamacją zestawy nie działające. Powodem takiego stanu
a) nie ustawione parametry portu szeregowego w PC-cie  powinien wy- rzeczy i często zażenowania nabywcy jest niestaranny, często budzący
dać komendę ustawiającą je, jak opisywałem przy okazji opisu Bios-a zgrozę sposób montażu. Apeluję więc, nie starajcie się lutować ele-
komputerka, a mianowicie z poziomu DOS-a wywołać komendę: mentów  byle czym i mierzcie swoje siły na zamiary, a każdy układ
MODE COM2: 4800, n, 8, 1 {Enter} elektroniczny odpali bez problemów. Jeżeli nie czujecie się na siłach
w samodzielnym zmontowaniu, proponuje zamówienie w AVT zmonto-
Jeżeli korzysta z Windows 95, należy parametry portu ustawić wanego komputerka  kit AVT-2250/C.
w Panelu sterowania w opcji System  Menedżer Urządzeń, usta- P.S. Adamie z Wodzisławia, brakującą dyskietkę AVT-2250/D otrzy-
wiają parametry: ma jak tylko pojawią się one w magazynie AVT. W razie kłopotów pro-
Bitów na sekundę : 4800 szę o kontakt z Działem Handlowym AVT i potwierdzenie swego za-
Bity danych: 8 mówienia.
42 ELEKTRONIKA DLA WSZYSTKICH 6/98
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
Aby jednak zaspokoić ciekawość Czytelnika można powiedzieć, że
List 4
w przypadku mikrokontrolerów zamiana liczby z kodu szesnastkowego
Tomasz Jabłonowski z Moniek pisze:
T
o
m
a
s
z
J
a
b
Å‚
o
n
o
w
s
k
i
z
M
o
n
i
e
k
na binarny fizycznie odbywa siÄ™ w momencie:
 że, po pierwsze, nie może znalezć  we wkładce (zapewne EdW)
 w przypadku pobierania rozkazów z pamięci EPROM komputerka 
np. CLS, A2HEX itp.
w momencie programowania pamięci EPROM w urządzeniu ze-
 po drugie,  inne kompilatory nie rozumieją argumentów niektórych
wnętrznym zwanym programatorem pamięci EPROM, który wczy-
publikowanych w cyklu komend, np.
tuje zbiory np. Intel-HEX (takie jakie tworzy nasz kompilator) a na-
DL1,#_minus
stępnie zapisuje dane o programie w pamięci EPROM korzystając
z linii adresowych kostki pamięci oraz z linii (np. 8) danych D0...D7,
Szanowny kolego, wyrażenia typu CLS, A2HEX, DPTR4HEX, to nie
których przecież jest 8 tak jak jest 8 bitów w jednym bajcie informa-
sÄ… komendy procesora 8051, ale zaproponowane przez autora cyklu
szkoły mikroprocesorowej nazwy procedur (podprogramów) umiesz- cji.
czonych w pamięci EPROM komputerka. Pisałem o tym wiele razy. Pod  w przypadku przesyłania danych z komputera PC do komputerka 
już w momencie transmitowania danych z komputera, który zamie-
nazwami tymi kryją się konkretne adresy, proszę zajrzeć do zbiorów
BIOS.INC, które znajdują się na dyskietce AVT-2250/D. nia informację na szeregową, czyli ciąg bitów z odpowiednimi sygna-
To samo dotyczy niektórych zdefiniowanych konkretnie dla naszego łami sterującymi.
komputerka edukacyjnego stałych i zmiennych, a więc:
DL1  pod tą nazwą kryje się adres komórki w wewn. RAM procesora, Zresztą najlepszą odpowiedzią na to pytanie może być fakt, że sam
D
L
1
która przechowuje znak do wyświetlenia na pozycji nr 1 (pierwszy mikrokontroler 8051 i wszystkie pozostałe układy tego typu pobierają
wyświetlacz). i wysyłają informację już w postaci binarnej poprzez swoje końcówki
_minus  pod tą nazwą kryje się stała (liczba), która określa kolejność za- w obudowie, których może być więcej lub mniej. W przypadku 8051
_
m
i
n
u
s
palonych segmentów wyświetlacza podczas wyświetlania znaku  - .
i podobnych mu sÄ… to 4-8-bitowe porty P0...P3.
Tak więc informacja trafia do procesora  wychodzi z niego zawsze
Toteż jeżeli zechcesz używać innego kompilatora, powinieneś zade- w postaci binanej, to tylko peryferyjne układy zewnętrzne transformują
klarować na początku programu przed instrukcjami następujące przypi-
ją na postać bardziej czytelną dla użytkownika czy programisty i o to
sania:
przecież chodzi, tak działa postęp.
DL1 equ 78h
Dlatego w komputerze PC używamy monitora czy klawiatury, które
_minus equ 01000000b
przecież też za pomocą dodatkowych urządzeń (takich jak karta graficz-
na) zamieniają informację bitowa na postać bardziej czytelną np. szes-
To samo dotyczy wszelkich innych nazw, którymi operujemy w na-
nastkową i wyświetlają ją na ekranie, czy zamieniają wciśnięty klawisz
szych artykułach, a które można znalezć w zbiorach CONST.INC
na sekwencję bitów odpowiadającą kodowi danego klawisza.
i BIOS.INC na dyskietce do systemu AVT-2250.
Ad.2 Jeszcze raz wyjaśniam.
List 5
w
e
w
n
Ä™
t
r
z
n
a
i
z
e
w
n
Ä™
t
r
z
n
a
a) Istnieją dwa rodzaje pamięci danych  wewnętrzna i zewnętrzna
M
a
r
e
k
J
o
n
i
e
c
Bardzo ciekawy list od Czytelnika z Katowic Marek Joniec pyta mia-
w
e
w
n
Ä™
t
r
z
n
a
z
a
w
a
r
t
a
j
e
s
t
f
i
z
y
c
z
n
i
e
w
s
t
r
u
k
t
u
r
z
e
p
r
o
c
e
s
o
r
a
8
0
5
1
b) wewnętrzna zawarta jest fizycznie w strukturze procesora 8051
nowicie:
(w kostce).
1)  ... dlaczego wszelkie napisy adresów i danych dokonuję w kodzie
Procesor ten zawiera dokładnie: 128 komórek (bajtów) pamięci użyt-
heksadecymalnym, skoro procesor i układy zewnętrzne operują da-
kownika o adresach: 00h....7Fh oraz 128 komórek (nie wszystkie ak-
nymi binarnymi, w którym momencie i gdzie np. dana  D9h jest
tywne) o adresach 80h...FFh, pod którymi to znajdują się rejestry spe-
transkodowana na liczbę dwójkową  11011001 .
cjalne SFR procesora.
2) Czy jeżeli system działa tylko z zewnętrzną pamięcią RAM, która
To wszystko zawarte jest w strukturze procesora, pamiętajmy!
T
o
w
s
z
y
s
t
k
o
z
a
w
a
r
t
e
j
e
s
t
w
s
t
r
u
k
t
u
r
z
e
p
r
o
c
e
s
o
r
a
w naszym przypadku posiada przestrzeń adresową 8000h...FFFFh, to
Adresowanie tej pamięci RAM (wewnętrznej) odbywa się za pomocą
gdzie mam w niej szukać obszaru rejestrów specjalnych SFR? Czy
wszystkich rozkazów procesora typu MOV oraz rozkazów wykonują-
obszar ten jest automatycznie gdzieś umiejscowiony, czy też odpo-
cych operacje arytmetyczne lub logiczne na komórkach tej pamięci,
wiedzialny jest za to monitor systemowy?
czyli : ANL, ORL, XRL, ADD, SUBB, INC, DEC, itd.
3) Jeżeli w specyfikacji rejestrów podane jest, że rejestr PSW posiada
c) zewnętrzna pamięć RAM to pamięć, jak sama nazwa wskazuje, dołą-
adres D0h, to gdzie siÄ™ on znajduje w moim RAM-ie ?
czana z zewnÄ…trz w postaci kostek SRAM o rozmiarze maksymalnie
4) Dlaczego chcąc wpisać jakąś liczbę na dany wyświetlacz odwołuję
64kB (65536 bajtów). Adresowanie tej pamięci odbywa się za pomo-
się do adresów 78h...7Fh (przecież są to adresy pamięci programu
cą tylko 2 rozkazów, a mianowicie:
EPROM, a nie pamięci RAM).
5) Większość rozkazów asemblerowych wymaga podania adresu bez-
MOVX A, @DPTR  odczyt danej z komórki w zewnętrznej pamięci
M
O
V
X
A
,
@
D
P
T
R
z
e
w
n
Ä™
t
r
z
n
e
j
pośredniego  xx , co to znaczy i jak mam adresować obszar
danych o adresie zawartym w DPTR (czyli pokrywającym całe 64kB,
8000h..FFFFh za pomocą dwóch pozycji?
0...FFFFh) i umieszczenie jej w akumulatorze (Acc), czyli rejestrze
6) W jaki sposób mam wprowadzać dane z klawiatury do pamięci nie
w
e
w
n
Ä™
t
r
z
n
e
j
w wewnętrznej RAM procesora o adresie bezpośrednim E0h.
używając gotowego polecenia GETACC zawartego w monitorze?
MOVX @DPTR, A  zapis danej z komórki z akumulatora do ze-
M
O
V
X
@
D
P
T
R
,
A
z
e
7) Na czym polega w praktyce adresowanie bitowe rejestrów specjal-
wnętrznej pamięci danych pod adres wskazany w rejestrze DPTR (uwa-
w
n
Ä™
t
r
z
n
e
j
nych ?
gi jw.).
Oto odpowiedzi
O
t
o
o
d
p
o
w
i
e
d
z
i
Ad.3 Po odpowiedzi na pyt. poprzednie odpowiedz na to pytanie jest
Ad.1 Zapisywanie wszelkich wartości liczbowych oraz kodu maszy-
oczywista  w PSW znajduje się w wewnętrznej pamięci RAM proce-
nowego procesora w zapisie szesnastkowym (heksadecymalnym) jest
sora (w kostce) pod adresem D0h.
najbardziej naturalnym i czytelnym, jak się wkrótce przekonasz, sposo-
bem. Szesnastkowy zapis, szczególnie w ujęciu techniki cyfrowej, mik-
Ad.4 To nieprawda, że adresy  odwołań do wyświetlacza znajdują
roelektroniki, mikrokontrolerów i wreszcie komputerów jest tym, czym
siÄ™ w EPROM-ie. PiszÄ…c program wykorzystujÄ…cy procedury BIOS-a
język narodowy danego kraju.
komputerka edukacyjnego AVT-2250 programista może dla ułatwienia
Prawdą jest, że układy komputerowe przetwarzają wszystko w ko-
skorzystać z usług prowadzonych przez monitor.
dzie binarnym, ale nam ludziom trudno byłoby  czytać i analizować
I tak, fizycznie monitor komputerka w procedurze obsługi przerwania
kod programu w takiej postaci, aczkolwiek jeszcze przed kilkudziesiÄ™-
(pojawiającej się okresowo dokładnie 512 razy na sekundę) pobiera
cioma laty taki sposób programowania był jedynym  lecz były to lata
cyklicznie zawartość kolejnych rejestrów DL1...DL8, czyli o adresach
50. i poczÄ…tki techniki komputerowej.
w
e
w
n
Ä™
t
r
z
n
e
j
R
A
M
78h...7Fh w wewnętrznej RAM procesora, a następnie przepisuje je do
Prosty przykład, łatwiej odnalezć (wzrokowo) i rozróżnić dwie liczby,
zatrzasku (74574) na płytce wyświetlacza, który to steruje układem
np.:
ULN2803A  patrz schemat komputerka edukacyjnego. SekwencjÄ™ tÄ™
1234h i ABCDh
można zilustrować następująco:
niż te same zapisane w postaci binarnej, a więc:
MOV A, DL1 ;załadowanie do akumulatora
0001001000110100b i 1010101111001101b
;zawartości rejestru DL1
MOV DPTR, #4000h ;załadowanie do DPTR adresu rejestru 74574
Jeżeli chodzi o drugą, dość oryginalną część pytania, to mogę mieć
pewien problem z odpowiedzią, bowiem fakt zamiany, o której Czytel- MOVX @DPTR, A ;wreszcie przesłanie zawartości akumulatora
nik mówi, można by porównać z czymś tak oczywistym, a jednocześ- ;do rejestru celem wyświetlenia
nie trudnym do opisania jak np.  słuchanie czyjejś mowy i wyciąganie Ad.5 Po przeczytaniu odpowiedzi na pytanie 2, wiesz już, drogi Czy-
z niej wniosków . telniku, że nie da się zaadresować zewnętrznej pamięci RAM
ELEKTRONIKA DLA WSZYSTKICH 6/98 43
Też to potrafisz
T
e
ż
t
o
p
o
t
r
a
f
i
s
z
(0000...FFFFh) za pomocą rozkazów z argumentami adresu jako  xx ,  akumulator Acc
a jedynie rozkazami typu MOVX.  słowo stanu PSW
 rejestr sterujÄ…cy licznika T2: T2CON
Ad.6 Wprowadzanie danych do pamięci komputerka bez użycia  rejestr priorytetu przerwań: IP
procedury GETACC jest oczywiście wykonalne. Trzeba tylko napisać  rejestr maski przerwań: IE
krótki programik, który będzie realizował tę funkcję, poniżej podaję  rejestr sterujący portem szeregowym: SCON
kod zródłowy polecenia, który odpowiada temu zawartemu w BIOS-ie  rejestr sterujący licznikami T0, T1 oraz INT0 i INT1: TCON
komputerka.  oczywiście rejestry portów I/O procesora: P0, P1, P2, P3
;******************************************************* Każdy bit rejestru adresowalnego bitowo posiada swój adres, tak jak
GETACC: ponumerowane są rejestry w wewn. RAM procesora. W jaki sposób
push B można więc rozróżnić adresowanie rejestrów od adresowania bitów. To
acall GETDIGIT;pobiera Acc z klawiatury z poz w B proste, w liście instrukcji procesora 8051 istnieją po prostu instrukcje
swap A specjalne operujące na bitach, przedstawiłem je kilka numerów temu,
push Acc kiedy to omawialiśmy instrukcje procesora  zapraszam do powtórki.
inc B Oprócz niektórych rejestrów SFR, także część rejestrów z obszaru
acall GETDIGIT wewnętrznej pamięci użytkownika, tj. o adresach 00...7Fh także daje
pop B się adresować. Są to rejestry o adresach: 20h...2Fh. Rejestrów jest
add A,B więc 16, czyli bitów do adresowania jest 16 x 8 = 128.
pop B Rozkład adresów poszczególnych bitów tych rejestrów jest bardzo
ret prosty, oto on:
;*******************************************************
;Procedura pomocnicza pobierająca znak z klawiatury z wyświetleniem
GETDIGIT: ;pobiera cyfrÄ™ z pozycji w B
push DPH
push DPL
push B
mov A,#DL1
add A,B
dec A
mov R0,A ;adres pozycji displeja
czek1: acall CONIN
cjne A,#klaw_OK,nieok
sjmp czek1
nieok: clr C
subb A,#30h
mov DPTR,#kodyk
Jeżeli chodzi o adresy bitów rejestrów SFR procesora 8051, to
movc A,@A+DPTR ;pobranie wartości pobajtu
przedstawiam je poniżej.
(0...15)
mov B,A
mov DPTR,#cyfry
movc A,@A+DPTR ;pobranie znaku na displej
mov @R0,A ;i wyświetlenie go
mov A,#nullkey
acall DELAY
mov A,B
pop B
pop DPL
pop DPH
ret
Zapis danej w pamięci komputerka pod wskazanym adresem można
zrealizować także za pomocą takiego prostego listingu:
Jak widać z obu tabel, adres rejestrów użytkownika i SFR nie pokry-
;*******************************************************
EXRAM_ZAPIS: wają się, co umożliwia jednoznaczne rozróżnienie ich podczas adreso-
mov DPTR,#adres ;w miejsce  adres podać adres wania bitowego. I tak np. wydanie polecenia:
mov A, #dana ;w miejsce  dana wpisać daną SETB 0AFh
movx@DPTR, A ;zapis do zewn. RAM spowoduje ustawienie bitu 7 (najstarszego) w rejestrze IE, czyli bitu
ret o nazwie EA  odblokowujÄ…cego przerwania.
Operacje tę można przeprowadzić także za pomocą modyfikacji całe-
Problem tylko w tym, że aby zapisać np. 100 komórek pamięci, trze- go rejestru, ale nie będzie to już adresowanie bitowe:
ba za każdym razem podawać inny adres i daną. I po to są takie proce- ANL IE, #7Fh
dury standardowe jak GETACC, CONIN, aby to robić bezboleśnie i bez Inny przykład, wydanie polecenia:
potrzeby kompilowania programiku EXRAM_ZAPIS np. 100 razy. MOV 0Eh, C
spowoduje w efekcie skopiowanie bitu C, czyli bitu 7 w słowie PSW
Ad.7 Na koniec bardzo słuszne pytanie na temat mało poruszany (adres bitu: D7h) do bitu 6 w rejestrze o adresie 21h w wewnętrznej
a
d
r
e
s
o
w
a
n
i
a
b
i
t
o
w
e
g
o
r
e
j
e
s
t
r
ó
w
w naszym cyklu a mianowicie adresowania bitowego rejestrów. RAM  obszar rejestrów użytkownika. Kwestie adresowania bitowego
Adresowanie bitowe rejestrów polega na odczycie lub modyfikowa- poruszę w następnym odcinku klasy mikroprocesorowej.
w
e
niu (zapisie) poszczególnych bitów niektórych rejestrów z obszaru we- Na razie radzę przypomnieć sobie zasady dotyczące adresowania
wnętrznej pamięci danych procesora. i operacji na bitach z odcinków kursu poświeconych liście rozkazów
w
n
Ä™
t
r
z
n
e
j
p
a
m
i
Ä™
c
i
d
a
n
y
c
h
Należy wiedzieć, że nie wszystkie z 256 rejestrów RAM procesora procesora 8051.
(128 użytkownika + 128 SFR)  dają się w ten sposób zapisywać lub
S
Å‚
a
w
o
m
i
r
S
u
r
o
w
i
Å„
s
k
i
odczytywać. Sławomir Surowiński
Spośród rejestrów specjalnych SFR do takich, które można modyfi-
kować bit po bicie należą :
 rejestr B
44 ELEKTRONIKA DLA WSZYSTKICH 6/98


Wyszukiwarka

Podobne podstrony:
Mikrokontrolery To takie proste, cz 14 (opis układów licznikowych oraz układu przerwań 8051 c d )
Mikrokontrolery to takie proste cz 03
Mikrokontrolery to takie proste cz 02a
Mikrokontrolery To takie proste, cz 11 (opis podprogramów komputerka edukacyjnego)
Mikrokontrolery To takie proste, cz 11 (opis podprogramów komputerka edukacyjnego)
Mikrokontrolery To takie proste calosc

więcej podobnych podstron