Podstawy projektowania systemów mikroprocesorowych, cz. 3.pdf

(184 KB) Pobierz
Podstawy projektowania systemów mikroprocesorowych, część 3
K U  R S
Podstawy projektowania systemów
mikroprocesorowych, część 3
W†trzeciej czÍúci artyku³u przedstawiamy podstawowe zagadnienia
zwi¹zane z†obs³ug¹ programowanych portÛw wejúÊ-wyjúÊ
w†mikrokontrolerach '51. Jak dowodz¹ otrzymywane przez nas pytania,
tematyka ta jest s³abo znana i†nie zawsze wystarczaj¹co dog³Íbnie
poruszana w†opisach naszych projektÛw. Zatem nadrabiamy!
Wykorzystanie portÛw we/wy
mikrokontrolera
Nawet najdoskonalszy mikroprocesor
bÍdzie jedynie mniej lub bardziej sku-
teczn¹ grza³k¹, jeúli nie pod³¹czymy do
niego øadnych urz¹dzeÒ zewnÍtrznych,
ktÛre umoøliwi¹ uøytkownikowi komu-
nikacjÍ z†uk³adem. W†mikrokontrolerach
rodziny 51 do realizacji takich po³¹-
czeÒ s³uø¹ porty, ktÛre s¹ wyprowadze-
niami pogrupowanymi najczÍúciej po
8†linii, mog¹cymi s³uøyÊ jako wejúcia
lub wyjúcia sygna³Ûw cyfrowych. Mik-
rokontrolery AT89C5x posiadaj¹ cztery
takie porty (o oznaczeniach od P0 do
P3), natomiast mniejsze mikrokontrole-
ry AT89Cx051 posiadaj¹ dwa porty (P1
i†P3). Kaøde wyprowadzenie dowolnego
portu moøe byÊ traktowane jako poje-
dyncza linia - wtedy do oznaczenia
portu dodajemy numer linii: na przy-
k³ad P1.4 oznacza pi¹t¹ liniÍ (numera-
cja od zera) portu 1. Poza funkcj¹
standardowych linii wejúcia/wyjúcia nie-
ktÛre porty lub niektÛre ich wyprowa-
dzenia mog¹ pe³niÊ alternatywne funk-
cje - zostan¹ one omÛwione wraz
z†wykorzystuj¹cymi je uk³adami peryfe-
ryjnymi. Naleøy pamiÍtaÊ, øe prawid³o-
wa praca portu lub pojedynczej linii
jako wejúcie jest moøliwa jedynie po
programowym ustawieniu danego portu
(linii) w†stan 1†(np. uøywaj¹c instrukcji
MOV P1,#0FFH lub SETB P1.2 - odpo-
wiednio dla ca³ego portu P1 pracuj¹ce-
go jako wejúcie lub tylko jego pojedyn-
czej linii). Wszystkie linie ustawiane s¹
na ì1î w†wyniku zerowania mikrokon-
trolera, jeúli jednak bÍdziemy wykorzys-
tywaÊ dan¹ liniÍ zarÛwno jako wejúcie
jak i†wyjúcie, to niezbÍdne jest prze-
strzeganie tej regu³y i†ustawienie odpo-
wiednich linii w†trakcie wykorzystywa-
nia ich jako wejúcie.
W³aúciwoúci i†sposÛb wy-
korzystania portÛw przed-
stawimy na przyk³adzie
ìduøychî mikrokontrolerÛw
Atmel, ktÛre zgodne s¹ pod
wzglÍdem ich parametrÛw ze
swoim protoplast¹ - oryginalnym mik-
rokontrolerem 80C51 firmy Intel.
Port P0 sprawia najczÍúciej duøo
k³opotu pocz¹tkuj¹cym projektantom (za-
zwyczaj przy realizacji pierwszego pro-
jektu wykorzystuj¹cego taki mikrokontro-
ler), gdyø zapominaj¹ oni o†bardzo waø-
nej rzeczy - linie portu P0 pracuj¹cego
jako wejúcie/wyjúcie nie s¹ wyposaøone
w†rezystory podci¹gaj¹ce - s¹ standardo-
wymi wyjúciami typu otwarty dren.
CzÍsto win¹ za niepowodzenie w†prÛbie
wysy³ania lub odbioru danych z†portu
P0 obarczany jest ìuszkodzonyî mikro-
kontroler, gdy w†rzeczywistoúci uk³ad
jest jak najbardziej sprawny, a†jedyn¹
winÍ ponosi tutaj projektant, ktÛry nie
zadba³ o†prawid³ow¹ realizacjÍ uk³adu
sprzÍtowego. Na rys. 9a pokazano spo-
sÛb do³¹czenia do portu P0 obci¹øenia
sterowanego za poúrednictwem tranzys-
tora PNP. Nie zachodzi tutaj koniecz-
noúÊ stosowania rezystora podci¹gaj¹ce-
go liniÍ portu, gdyø ustawienie linii
w†stan wysoki powoduje w†rzeczywistoú-
ci wejúcie w†stan wysokiej impedancji
(brak rezystora podci¹gaj¹cego) i†przerwÍ
w†obwodzie bazy tranzystora (jego wy³¹-
czenie). Rezystor R1 ogranicza pr¹d ba-
zy do wartoúci bezpiecznych zarÛwno
dla mikrokontrolera jak i†dla tranzysto-
ra, i†powinien byÊ dobrany w†zaleønoúci
od wzmocnienia uøytego tranzystora
i†spodziewanego pr¹du obci¹øenia - aby
uzyskany pr¹d bazy wprowadzi³ tranzys-
tor w†nasycenie. Rezystor R2 nie jest
tutaj bezwzglÍdnie konieczny - przyspie-
sza on wyjúcie tranzystora z†nasycenia
i†szybsze jego wy³¹czenie, co moøe byÊ
przydatne przy duøych czÍstotliwoúciach
prze³¹czeÒ. Jeøeli chcemy stosowaÊ ste-
rowanie z†uøyciem tranzystorÛw NPN,
musimy zrealizowaÊ uk³ad z† rys. 9b .
Tutaj rezystor podci¹gaj¹cy R1 jest nie-
zbÍdny do podania wysokiego potencja-
³u na bazÍ tranzystora. Rezystor R2 nie
jest konieczny, zabezpiecza on jednak
wyjúcie mikrokontrolera przed uszkodze-
Rys. 9. Sposoby dołączania obciążeń różnego typu do wyjść mikrokontrolera
Elektronika Praktyczna 5/2003
85
32579175.050.png 32579175.053.png 32579175.054.png 32579175.055.png 32579175.001.png 32579175.002.png 32579175.003.png 32579175.004.png 32579175.005.png 32579175.006.png 32579175.007.png 32579175.008.png 32579175.009.png
 
K U  R S
Rys. 10. Różne możliwości sterowania wejść mikrokontrolera
pr¹dowych portÛw: zarÛwno linie portu
P1 jak i†P3 mog¹ w†stanie niskim prze-
wodziÊ pr¹d do 20 mA, z†tym, øe we-
d³ug zaleceÒ producenta, ca³kowity pr¹d
wp³ywaj¹cy jednoczeúnie do wszystkich
wykorzystywanych linii portÛw nie po-
winien przekroczyÊ 80 mA - powyøej
tej wartoúci firma Atmel nie gwarantuje
deklarowanej wydajnoúci pr¹dowej. Pro-
ducent przewidzia³ moøliwoúÊ sterowa-
nia przez port P1 katodami wyúwietla-
czy LED, jednak takøe port 3†moøe
z†powodzeniem sterowaÊ diody LED pod
warunkiem zapewnienia sumarycznego
pr¹du wszystkich wyprowadzeÒ P1 i†P3
(bÍd¹cych w†stanie niskim) na poziomie
nie przewyøszaj¹cym 80 mA. W†stanie
wysokim porty maj¹ wydajnoúÊ tak¹ jak
porty w†ìduøychî Atmelach. Dodatkowo
trzeba pamiÍtaÊ, øe dwie linie portu P1:
P1.0 i†P1.1 nie posiadaj¹ wewnÍtrznych
rezystorÛw podci¹gaj¹cych, gdyø zak³Û-
ca³yby one pracÍ wewnÍtrznego kompa-
ratora pod³¹czonego to tych linii. Jeøeli
chcemy linie P1.0 i†P1.1 wykorzystywaÊ
jako zwyk³e we/wy cyfrowe, to naleøy
stosowaÊ zasady do³¹czania zewnÍt-
rznych urz¹dzeÒ takie jak w†przypadku
portu P0. W†spisie wyprowadzeÒ uk³a-
dÛw AT89Cx051 nie znajdziemy linii
P3.6 - linia ta jest wewnÍtrznie po³¹-
czona z†wyjúciem komparatora i†moøe
byÊ tylko odczytywana (stan odzwier-
ciedla stan komparatora).
Przedstawiony wyøej problem stoso-
wania rezystorÛw podci¹gaj¹cych to tyl-
ko jeden z†wielu moøliwych b³ÍdÛw po-
pe³nianych przy pod³¹czaniu do mikro-
kontrolera uk³adÛw wspÛ³pracuj¹cych.
Na rys. 11 , 12 , 13 i† 14 przedstawiono
najczÍúciej pope³niane b³Ídy konstrukcyj-
ne, ktÛre uniemoøliwiaj¹ poprawn¹ pra-
cÍ uk³adu lub pogarszaj¹ jego pewnoúÊ
dzia³ania. Rysunki oznaczone literami a
przedstawiaj¹ b³Ídnie zaprojektowany
uk³ad, a†opisane jako b pokazuj¹ popra-
wne rozwi¹zanie lub sposÛb naprawy
b³Ídnie zaprojektowanego uk³adu.
Na rys. 11a przedstawiono uk³ad
sterowania tranzystorem PNP z†wyjúcia
mikrokontrolera wyposaøonego w†awaryj-
ny uk³ad zasilania. Po g³Íbszej analizie
³atwo zauwaøyÊ, øe uk³ad moøe dzia³aÊ
niestabilnie, objawiaj¹c siÍ nieca³kowi-
tym wy³¹czeniem tranzystora. NastÍpo-
wa³o to bÍdzie wskutek obecnoúci dio-
dy naleø¹cej do obwodu zasilania awa-
ryjnego. Wskutek spadku napiÍcia na tej
diodzie, napiÍcie wyjúciowe w†stanie
niem wskutek uszkodzenia tranzystora -
zwarcie w†tranzystorze w†obwodzie ko-
lektor-baza spowoduje pojawienie siÍ na-
piÍcia zasilaj¹cego obci¹øenie na wypro-
wadzeniu mikrokontrolera. NapiÍcie to
moøe byÊ wyøsze od napiÍcia zasilania
uk³adu mikrokontrolera, co moøe dopro-
wadziÊ do uszkodzenia napiÍciowego li-
nii lub - jeúli na danym wyprowadze-
niu bÍdzie stan niski - moøe dojúÊ do
przeci¹øenia pr¹dowego. Zastosowany re-
zystor ograniczy ten pr¹d oraz dzia³a³
bÍdzie jak dzielnik i†ograniczy napiÍcie
na wyprowadzeniu portu. Na rys. 9c
przedstawiono sposÛb sterowania wej-
úciami cyfrowych uk³adÛw scalonych.
Dla uk³adÛw CMOS rezystor podci¹gaj¹-
cy jest niezbÍdny, natomiast dla uk³a-
dÛw TTL nie jest on konieczny, lecz
na pewno nie zaszkodzi (zw³aszcza, ze
ktoú w†urz¹dzeniu moøe zastosowaÊ od-
powiednik uk³adu wykonany w†techno-
logii CMOS). Port P0 moøe wysterowaÊ
wed³ug danych producenta do oúmiu
wejúÊ uk³adÛw TTL, co pozwala obci¹-
øyÊ kaød¹ koÒcÛwkÍ w†stanie niskim
pr¹dem oko³o 13 mA i†z†powodzeniem
wystarcza do sterowania diod¹ LED (jak
np. na rys.†9d ).
Wykorzystuj¹c linie portu P0 jako
wejúcia musimy takøe rozwaøyÊ koniecz-
noúÊ zastosowania w†razie potrzeby re-
zystorÛw podci¹gaj¹cych. Rezystory takie
s¹ niezbÍdne jeøeli do mikrokontrolera
chcemy podpi¹Ê elementy stykowe lub
uk³ady cyfrowe (czy pojedyncze tranzys-
tory) pracuj¹ce z†wyjúciem typu otwarty
kolektor (dren). SytuacjÍ tak¹ przedsta-
wiono na rys. 10a ). Wartoúci rezysto-
rÛw R1 i†R2 powinny byÊ tak dobrane,
aby nie przeci¹øaÊ wyjúÊ do³¹czonych
uk³adÛw. Zastosowany rezystor R4 za-
pewnia stan niski na wejúciu P0.4 gdy
przycisk SW1 jest zwolniony, natomiast
rezystor R3 zabezpiecza mikrokontroler
przed przypadkowym zwarciem mog¹-
cym nast¹piÊ, gdyby linia P0.4 zosta³a
wyzerowana programowo. Jak widaÊ
wciúniÍcie przyciskÛw SW1 i†SW2 wy-
wo³uje rÛøne stany na wejúciach mikro-
kontrolera - w†zaleønoúci od potrzeby
moøemy wywo³ywaÊ stan wysoki (SW1)
lub niski (SW2). RezystorÛw podci¹gaj¹-
cych nie musimy stosowaÊ gdy uk³ad
wspÛ³pracuje z†elementami posiadaj¹cymi
wyjúcia komplementarne (uk³ady cyfro-
we, komparatory), co pokazano na ry-
sunku 9b). Warto wspomnieÊ, øe port
P0 pracuj¹cy jako wejúcie bez zastoso-
wania rezystorÛw podci¹gaj¹cych posia-
da bardzo duø¹ impedancjÍ wejúciow¹
(zbliøon¹ do impedancji tranzystora
MOS), co umoøliwia sterowanie ze ürÛ-
de³ o†bardzo ma³ej wydajnoúci.
Pozosta³e porty mikrokontrolera (P1
do P3) poza faktem posiadania wewnÍt-
rznych rezystorÛw podci¹gaj¹cych (w
rzeczywistoúci s¹ to tranzystory MOS
pracuj¹ce jako ürÛd³a pr¹dowe - moøna
je traktowaÊ jako rezystory podci¹gaj¹-
ce o†wartoúci 50...100 k
Rys. 11. Przykłady błędnie zaprojektowanych wzmacniaczy wyjściowych
86
Elektronika Praktyczna 5/2003
), posiadaj¹
takøe mniejsz¹ wydajnoúÊ pr¹dow¹, od-
powiadaj¹c¹ wysterowaniu czterech
wejúÊ uk³adÛw TTL (maksymalny pr¹d
w†stanie niskim to oko³o 6,5 mA).
Schematy do³¹czeÒ uk³adÛw peryferyj-
nych nie rÛøni¹ siÍ od tych podanych
dla portu P0 (rys. 9†i†10), za wyj¹tkiem
braku koniecznoúci stosowania rezysto-
rÛw podci¹gaj¹cych.
Analizuj¹c w³aúciwoúci portÛw P1
i†P3, w†ktÛre s¹ wyposaøone mikrokont-
rolery AT89Cx051 naleøy przedstawiÊ
kilka istotnych rÛønic wp³ywaj¹cych na
sposÛb ich wykorzystania do obs³ugi
urz¹dzeÒ zewnÍtrznych. Przede wszyst-
kim naleøy wspomnieÊ o†w³aúciwoúciach
32579175.010.png 32579175.011.png 32579175.012.png 32579175.013.png 32579175.014.png 32579175.015.png 32579175.016.png 32579175.017.png 32579175.018.png 32579175.019.png 32579175.020.png 32579175.021.png
K U  R S
Rys. 12. Kolejne przykłady błędnie zaprojektowanych obwodów wyjściowych
mniej kilkukrotnie) niø rezystor R1. Ta-
kie rozwi¹zanie nie posiada wady jak
poprzednie, ale konieczny jest dodatko-
wy (choÊ tani) element. Problem moø-
na rozwi¹zaÊ jeszcze inaczej, stosuj¹c
uk³ad z† rys. 11d . Zastosowano tutaj
uk³ad z†tranzystorem MOSFET, ktÛry
jest elementem sterowanym napiÍciowo
i†wartoúÊ rezystancji R1 nie odgrywa
tutaj znacz¹cej roli (przy ma³ych czÍs-
totliwoúciach prze³¹czeÒ). Rezystor R1
pe³ni tutaj funkcjÍ zabezpieczaj¹c¹ po-
dobnie jak na rys. 9b. Wad¹ takiego
rozwi¹zania jest nieco wyøsza niø
w†przypadku tranzystorÛw unipolarnych
cena tranzystorÛw MOSFET oraz fakt
doúÊ wysokiego napiÍcia progowego
tranzystora, co praktycznie uniemoøli-
wia stosowanie tego rozwi¹zania
w†uk³adach z†zasilaniem mikrokontrole-
ra napiÍciem niøszym niø 5†V.
Przy budowie nowych uk³adÛw
szczegÛln¹ uwagÍ projektanta powinien
zwrÛciÊ fakt do³¹czania do mikrokont-
rolera urz¹dzeÒ zasilanych innym (za-
zwyczaj wyøszym) napiÍciem. Niestety
takøe tutaj moøna pope³niÊ podstawo-
wy b³¹d uwidoczniony na rys. 13a .
W†uk³adzie tym wyjúcie mikrokontrole-
ra steruje uk³adem cyfrowym zasilanym
napiÍciem 12 V. Uk³ad nie bÍdzie
dzia³a³ z†bardzo prostego powodu -
w†uk³adach cyfrowych CMOS prÛg
prze³¹czania znajduje siÍ mniej wiÍcej
w†po³owie wartoúci napiÍcia zasilania,
co dla przedstawionego uk³adu wynie-
sie 6†V, czyli wiÍcej niø napiÍcie zasi-
lania mikrokontrolera. Wskutek tego do-
wolny stan logiczny poprawny z†punk-
tu widzenia napiÍÊ zasilania na pozio-
mie 5†V†bÍdzie przez wejúcie bramki
rozpoznawany stale jako stan niski. Pu-
³apk¹ czyhaj¹c¹ na projektanta jest fakt,
øe taki sam uk³ad, w†ktÛrym zamiast
12 V†zastosujemy zasilanie np. 9†V†mo-
øe dzia³aÊ - nie bÍdzie to jednak dzia-
³anie pewne i†rozwi¹zanie to moøe
wysokim nie bÍdzie mia³o wartoúci na-
piÍcia zasilania, lecz bÍdzie obniøone
o†0,6...0,8 V, co moøe doprowadziÊ do
przewodzenia z³¹cza baza-emiter tranzys-
tora i†jego otwarcie. Przy ma³ych pr¹-
dach obci¹øenia wystarczy to zapewne
do nasycenia tranzystora i†sytuacji,
w†ktÛrej nie bÍdzie moøna wy³¹czyÊ
programowo sterowanego w†ten sposÛb
urz¹dzenia. Rozwi¹zanie problemu moøe
przynieúÊ zamiana diody krzemowej na
diodÍ Schottky ego (mniejszy spadek
napiÍcia), lepiej jednak zastosowaÊ do-
datkowy rezystor R2 o†wartoúci mniej-
szej od R1, polaryzuj¹cy bazÍ tranzysto-
ra. Uk³ad taki przedstawiono na rys.
11b . Rezystory R1 i†R2 bÍd¹ tworzy³y
dzielnik napiÍcia obniøaj¹c o†po³owÍ
(lub wiÍcej) napiÍcie na bazie tranzys-
tora i†nie dopuszcz¹ do jego przewodze-
nia wskutek rÛønicy napiÍÊ wywo³ywa-
nych spadkiem na diodzie.
Na rys. 12a przedstawiono uk³ad,
ktÛry wed³ug za³oøenia powinien dzia-
³aÊ nastÍpuj¹co: mikrokontroler steruje
tranzystorem w³¹czaj¹c i†wy³¹czaj¹c ja-
kieú urz¹dzenie. Jeúli urz¹dzenie jest
w³¹czone, to naciúniÍcie przycisku ma
je wy³¹czyÊ. Uk³ad jednak nie bÍdzie
dzia³a³ zgodnie z†za³oøeniami. Jeøeli
mikrokontroler wyzeruje liniÍ P3.1, to
jasne jest, øe urz¹dzenie zostanie wy³¹-
czone. Jeøeli natomiast na wyjúciu P3.1
pojawi siÍ stan ì1î, to tranzystor zacz-
nie przewodziÊ i†w³¹czy urz¹dzenie -
tak uk³ad dzia³a³by, gdyby program nie
wykrywa³ wciúniÍcia przycisku. W†uk³a-
dzie jak na rysunku mikrokontroler wy-
³¹czy urz¹dzenie natychmiast po w³¹-
czeniu. BÍdzie to spowodowane faktem,
øe wewnÍtrzny rezystor podci¹gaj¹cy
ma doúÊ duø¹ wartoúÊ (50...100 kΩ)
i†bÍdzie tworzy³ z†rezystorem w†obwo-
dzie bazy tranzystora dzielnik daj¹cy
, co wraz z†napiÍciem baza-emiter
tranzystora powinno daÊ na wyprowa-
dzeniu mikrokontrolera napiÍcie oko³o
3†V, ktÛre powinno byÊ zinterpretowa-
ne jako ì1î ( rys. 12b ). Wad¹ takiego
rozwi¹zania jest koniecznoúÊ zastosowa-
nia tranzystora o†duøym wzmocnieniu
(jeøeli chcemy uzyskaÊ znaczny pr¹d
obci¹øenia). Na rys. 12c przedstawiono
lepsze rozwi¹zanie - zastosowanie do-
datkowego rezystora podci¹gaj¹cego R2
o†wartoúci znacznie mniejszej (przynaj-
Rys. 13. Współpraca mikrokontrolera z układami zasilanymi napięciem o innej
wartości
Elektronika Praktyczna 5/2003
87
na wyprowadzeniu mikrokontrolera na-
piÍcie o†wartoúci ok. 2†V†(z uwzglÍdnie-
niem napiÍcia baza-emiter) lub mniej-
sze, co bÍdzie interpretowane jako stan
ì0î - czyli wciúniÍcie przycisku. Prob-
lem rozwi¹zaÊ moøna dobieraj¹c duø¹
wartoúÊ rezystora R1 - powyøej 100
k
32579175.022.png 32579175.023.png 32579175.024.png 32579175.025.png 32579175.026.png 32579175.027.png 32579175.028.png 32579175.029.png 32579175.030.png 32579175.031.png 32579175.032.png 32579175.033.png 32579175.034.png 32579175.035.png 32579175.036.png 32579175.037.png 32579175.038.png 32579175.039.png 32579175.040.png 32579175.041.png 32579175.042.png 32579175.043.png 32579175.044.png 32579175.045.png 32579175.046.png
K U  R S
utrzymuje siÍ rÛwnieø
stan wysoki wskutek
wbudowanego (lub w†ra-
zie koniecznoúci do³¹czo-
nego) rezystora podci¹ga-
j¹cego. Stan niski na
wyjúciu uk³adu wspÛ³pra-
cuj¹cego powoduje pola-
ryzacjÍ diody w†kierunku
przewodzenia i†przep³yw
pr¹du - napiÍcie pojawia-
j¹ce siÍ na wyprowadze-
niu mikrokontrolera ma
wartoúÊ napiÍcia wyjúcio-
wego uk³adu wspÛ³pracu-
j¹cego powiÍkszonego
o†napiÍcie przewodzenia
diody (warto tutaj zasto-
sowaÊ diodÍ Schottky
ego ze wzglÍdu na niø-
szy spadek napiÍcia). Problem moøna
oczywiúcie rozwi¹zaÊ w†inny sposÛb, na
przyk³ad stosuj¹c omÛwiony wyøej
uk³ad z†tranzystorem - uk³ad z†diod¹
jest jednak najprostszy.
JB P1.2,etykieta
;wykonanie skoku warunkowego, gdy
;na linii P1.2 panuje stan wysoki
Te instrukcje nie stanowi¹ pe³nego
zbioru rozkazÛw odwo³aÒ do portÛw.
NajogÛlniej moøna powiedzieÊ, øe do
obs³ugi portÛw moøna uøyÊ wszystkich
rozkazÛw mog¹cych wykonywaÊ opera-
cje na adresowanej bezpoúrednio ko-
mÛrce pamiÍci lub pojedynczym bicie.
Specyficzne dzia³anie w†stosunku do
portÛw posiada pewna liczba rozkazÛw
okreúlanych jako instrukcje typu od-
czyt-modyfikacja-zapis. S¹ to:
Rys. 14. Sterowanie wejść mikrokontrolera z wyjść
układów zasilanych wyższym napięciem
ANL - iloczyn logiczny,
ORL - suma logiczna,
XRL - suma modulo 2,
JBC - skok warunkowy i†wyzerowanie
bitu,
CPL - negacja bitu,
INC - inkrementacja,
DEC - dekrementacja,
DJNZ - dekrementacja bajtu i†skok jeúli
nie zero,
MOV P_._,C - przes³anie zawartoúci
wskaünika C†na dowoln¹ liniÍ portu,
CLR P_._ - zerowanie linii portu,
SETB P_._ - ustawianie linii portu.
przysporzyÊ sporych k³opotÛw podczas
uruchamiania uk³adu (okresy poprawne-
go i†b³Ídnego dzia³ania zaleøne od tem-
peratury, poziomu zak³ÛceÒ itp.). Popra-
wiony uk³ad przedstawiono na rys.
13b ). Problem zosta³ rozwi¹zany przez
zastosowanie uk³adu inwertera z†tran-
zystorem NPN ³¹cz¹cym obydwa obwo-
dy. Uk³ad gwarantuje poprawn¹ pracÍ,
naleøy jedynie zwrÛciÊ uwagÍ, øe ne-
guje on podawany na bramkÍ sygna³,
co naleøy uwzglÍdniÊ przy pisaniu op-
rogramowania. Innym rozwi¹zaniem jest
zastosowanie wzmacniacza operacyjnego
(komparatora), na ktÛrego wejúcie nie-
odwracaj¹ce podajemy sygna³ z†mikro-
kontrolera, a†na wejúcie odwracaj¹ce
wartoúÊ napiÍcia progowego - w†tym
wypadku zgodnie ze standardem
CMOS-5V jest to napiÍcie 2,5 V†utwo-
rzone przez dzielnik R1 i†R2 ( rys. 13c ).
Naleøy pamiÍtaÊ, øe wzmacniacz
operacyjny musi byÊ zasilany z†tego
samego ürÛd³a (o takim samym napiÍ-
ciu) co sterowana nim bramka. Zalet¹
tego uk³adu jest fakt, øe nie odwraca
on fazy sygna³u, naleøy jednak pamiÍ-
taÊ o†ograniczonym zakresie czÍstotli-
woúciowym wzmacniacza operacyjnego
(uk³ady z†pojedynczymi tranzystorami
w†tej konkurencji wygrywaj¹ - s¹ duøo
szybsze).
Podobnych zasad naleøy przestrze-
gaÊ, gdy do wejúcia mikrokontrolera
do³¹czamy zasilany wyøszym napiÍciem
komparator lub inny uk³ad z†wyjúciem
komplementarnym (nie dotyczy uk³adÛw
z†wyjúciem typu otwarty kolektor/dren).
Na rys. 14a przedstawiono b³Ídny
uk³ad - po³¹czenie bezpoúrednie, w†wy-
niku ktÛrego w†najgorszym przypadku
moøe dojúÊ do uszkodzenia wejúcia
mikrokontrolera i/lub wyjúcia uk³adu
steruj¹cego. Na rys. 14b przedstawiono
najprostszy sposÛb rozwi¹zania proble-
mu - zastosowanie diody blokuj¹cej po-
jawienie siÍ wysokiego napiÍcia na
wejúciu mikrokontrolera. Kiedy uk³ad
wspÛ³pracuj¹cy z†mikrokontrolerem jest
w†stanie wysokim, to dioda zostaje
spolaryzowana zaporowo - nie przewo-
dzi pr¹du. Na wejúciu mikrokontrolera
Porty mikrokontrolera od
strony programowej
Odpowiednie po³¹czenie elektryczne
wyprowadzeÒ portÛw to nie wszystko -
konieczna jest jeszcze odpowiednia ob-
s³uga programowa. Przede wszystkim na-
leøy zwrÛciÊ uwagÍ na fakt, øe porty
mikrokontrolera s¹ obs³ugiwane w†spo-
sÛb synchroniczny - tzn. odczyt danych
z†portu czy zapis do niego odbywa siÍ
zgodnie z†czÍstotliwoúci¹ cykli maszyno-
wych mikrokontrolera (pod warunkiem
wykonywania rozkazÛw zapisu/odczytu
portu). Dlatego mikrokontroler nie jest
w†stanie wykryÊ impulsÛw wejúciowych
krÛtszych niø 1†cykl maszynowy (w
przypadku niektÛrych rozkazÛw s¹ to
2†cykle) oraz sam nie jest w†stanie ge-
nerowaÊ przebiegÛw o†stanach krÛtszych
niø 1†cykl (f zegara /12).
Dla programisty zapis czy odczyt
portu nie rÛøni siÍ od zapisu czy od-
czytu wewnÍtrznej pamiÍci danych.
Moøliwy jest takøe zapis lub odczyt
pojedynczych linii portÛw z†wykorzys-
taniem adresowania bitowego. NajczÍú-
ciej wykonywane instrukcje odwo³uj¹ce
siÍ do portÛw to:
MOV P1,#0F0H
;jednoczesny zapis ośmiu linii
;portu (np. 4 starsze ustawione na
;“1”, 4 młodsze wyzerowane.
Instrukcje te dzia³aj¹ w†nastÍpuj¹cy
sposÛb: najpierw odczytywany jest we-
wnÍtrzny stan rejestrÛw odpowiedzial-
nych za stany na wyprowadzeniach
portÛw, potem nastÍpuje modyfikacja
odczytanej zawartoúci, a†na koÒcu na-
stÍpuje zapis nowej wartoúci do por-
tu. Naleøy zwrÛciÊ uwagÍ, øe odczyt
rejestru portu nie ma nic wspÛlnego
ze stanami na liniach zewnÍtrznych -
jest to wartoúÊ jaka zosta³a wpisana
tam programowo, np. dla linii wyko-
rzystywanych jako wejúcia powyøsze
instrukcje bÍd¹ odczytywa³y stan ì1î
niezaleønie od panuj¹cego na linii na-
piÍcia. BÍdzie to spowodowane tym,
øe chc¹c korzystaÊ z†linii jako wejúcie
programista musia³ wczeúniej wpisaÊ
do odpowiedniego rejestru jedynkÍ i†to
w³aúnie ona bÍdzie odczytywana.
SzczegÛln¹ ostroønoúÊ naleøy zachowaÊ
w†przypadku nieprzemyúlanego zastoso-
wania instrukcji JBC P_._,etykieta. Tak-
øe tutaj skok i†wyzerowanie podanego
bitu (pojedynczej linii portu) nast¹pi
jeúli w†rejestrze portu bÍdzie na danej
pozycji stan ì1î, niezaleønie od fak-
tycznego stanu wystÍpuj¹cego na wy-
prowadzeniu mikrokontrolera (w odrÛø-
nieniu od instrukcji JB, JNB i†CJNE -
one odczytuj¹ stany linii zewnÍt-
rznych). Nieprzemyúlane wykonanie in-
strukcji typu odczyt-modyfikacja-zapis
czÍsto prowadzi do trudnych do zlo-
kalizowania b³ÍdÛw programowych. Mi-
mo tego nie naleøy siÍ baÊ i†rezygno-
waÊ z†tych instrukcji - s¹ one bardzo
przydatne, naleøy jednak stosowaÊ je
w†sposÛb úwiadomy i†zdawaÊ sobie
sprawÍ ze sposobu ich dzia³ania.
Pawe³ Hadam
MOV P1,A
;wysłanie do portu P1 zawartości
;akumulatora
MOV A,P1
;odczytanie zawartości linii portu
;P1 i wpisanie jej do akumulatora
SETB P1.1
;ustawienie “1” na linii P1.1
CLR P1.1
;wyzerowanie linii P1.1
88
Elektronika Praktyczna 5/2003
32579175.047.png 32579175.048.png 32579175.049.png 32579175.051.png 32579175.052.png
Zgłoś jeśli naruszono regulamin