avt-553 Moduły interfejsów szeregowych.PDF

(515 KB) Pobierz
Moduły interfejsów szeregowych - AVT-553/USB232, AVT-553/USB245, AVT-553/RS232
Moduły interfejsów szeregowych
P R O J E K T Y
Moduły interfejsów
szeregowych
AVT−553/USB232
AVT−553/USB245
AVT−553/RS232
Dzia³anie wielu urz¹dzeÒ
polega na wymianie danych,
najczÍúciej z†komputerami.
Popularnym i†prostym
sposobem jest wykorzystanie
w†tym celu portu
szeregowego, ktÛry jest
dostÍpny we wszystkich
komputerach stacjonarnych
lub przenoúnych. Do
niedawna niepodzielnie
panowa³ RS232, teraz coraz
czÍúciej jest stosowany
interfejs USB.
Od strony mikrokontrolera
do obs³ugi takiego po³¹czenia
potrzebna jest zarÛwno czÍúÊ
sprzÍtowa, jak i†trochÍ
oprogramowania realizuj¹cego
transmisjÍ. W†artykule
pokaøemy, jak moøna to
zrobiÊ w†urz¹dzeniach
opartych na mikrokontrolerach
z†rodziny '51 i†AVR.
Rekomendacje: informacje
przedstawione w†artykule
przydadz¹ siÍ konstruktorom
samodzielnie buduj¹cym
urz¹dzenia cyfrowe, ktÛre
komunikuj¹ siÍ z†otoczeniem
za pomoc¹ po³¹czeÒ
przewodowych.
Jaki standard wybraÊ?
Przez d³ugie lata urz¹dzenia
zewnÍtrzne moøna by³o pod³¹czyÊ
do komputera na dwa sposoby:
albo poprzez rÛwnoleg³y port dru-
karkowy (Centronics), albo po-
przez port szeregowy RS232. Wie-
le mikrokontrolerÛw jednouk³ado-
wych, w†tym prawie wszystkie
z†rodzin '51 i†AVR, posiada me-
chanizmy u³atwiaj¹ce wymianÍ
danych w†uproszczonym formacie
RS232. Oznacza to, øe nie ma
potrzeby pisania specjalnego op-
rogramowania przeznaczonego do
obs³ugi transmisji i†odbioru ramki
pojedynczego znaku. Wystarczy
jedynie wpisaÊ w³aúciwe dane do
kilku rejestrÛw i†zainicjowaÊ od-
powiednie przerwania, dalej ca³a
transmisja przebiega w†sposÛb pra-
wie niewidoczny dla g³Ûwnego
programu mikrokontrolera. Nie-
zbÍdny jest jeszcze konwerter po-
ziomÛw najczÍúciej wykorzystuj¹-
cy uk³ad MAX232 lub jego od-
powiednik. Ostatnimi laty pojawi-
³a siÍ jednak nowa moøliwoúÊ -
port USB.
Coraz wiÍcej komputerÛw PC
jest wyposaøanych w†ten w³aúnie
rodzaj interfejsu. Coraz czÍúciej
jest to jedyny, dostÍpny w†kom-
puterze port. USB ma kilka istot-
nych zalet, np.: doúÊ duø¹ prÍd-
koúÊ transmisji, moøliwoúÊ pod³¹-
czania wielu urz¹dzeÒ peryferyj-
nych, dostÍp do stabilizowanego
napiÍcia +5 V†oraz moøliwoúÊ
bezpiecznego do³¹czania i†od³¹-
czania urz¹dzenia do/od w³¹czo-
nego komputera.
Bardzo wygodne dla konstruk-
torÛw rozwi¹zanie zaproponowa³a
firma FTDI, wprowadzaj¹c na ry-
nek uk³ady interfejsowe FT8U232
i†FT8U245. S¹ to scalone konwer-
tery USB2.0 na doskonale znany
RS232 lub wyjúcie rÛwnoleg³e.
Oba te uk³ady by³y juø opisywane
w†EP i†nie ma teraz potrzeby
dok³adnego omawiania sposobu
ich dzia³ania. Zajmiemy siÍ na-
tomiast moøliwoúci¹ ich zastoso-
wania jako interfejsÛw uk³a-
dÛw†z†mikrokontrolerami oraz spo-
sobem ich oprogramowania.
Trzy modu³y interfejsÛw
Na rys. 1, 2 i† 3 pokazano
schematy trzech modu³Ûw†inter-
fejsowych, w†ktÛrych zastosowano
uk³ady: FT8U232 (modu³ USB232 ),
FT8U245 (modu³ USB245 ) oraz
konwerter poziomÛw MAX232
(modu³ RS232 ). Wszystkie mo-
du³y†maj¹ wymiary nie wiÍksze
niø standardowy uk³ad scalony
w†obudowie DIP32 i†moøna je
umieúciÊ w†podstawce o†takim
rozmiarze.
Kaødy modu³ jest kompletnym
interfejsem sprzÍtowym pomiÍdzy
mikrokontrolerem a†portem USB lub
Elektronika Praktyczna 11/2003
31
32653147.042.png 32653147.043.png 32653147.044.png 32653147.045.png
Moduły interfejsów szeregowych
montowany na p³yt-
kach uk³adÛw USB245 i† USB232 .
Z†kolei modu³ RS232 zasilany jest
z†urz¹dzenia, w†ktÛrym pracuje.
Poniewaø jest to tylko konwerter
poziomÛw TTL/RS232, do jego
dzia³ania nie jest potrzebna ini-
cjalizacja ani po³¹czenie z†kompu-
terem.
Rys. 1. Schemat elektryczny modułu USB232
Wyprowadzenia uk³adÛw
USB232 i† RS232
Wszystkie uk³ady zosta³y za-
projektowane tak, aby mog³y byÊ
umieszczone w†typowej podstaw-
ce DIP32, co u³atwia ich szybk¹
wymianÍ. Jednak liczba wyprowa-
dzeÒ p³ytki modu³u jest mniejsza
niø 32. W†module USB232 nie s¹
wyprowadzone styki 13...16 oraz
17...20, natomiast†w† RS232 styki
13, 16, 17 i†20.
Modu³y USB232 i† RS232 s¹ ze
sob¹ kompatybilne jeúli chodzi
o†wyprowadzenia najwaøniejszych
sygna³Ûw. Oznacza to, øe moøna
je stosowaÊ wymiennie i†zaleønie
od potrzeb wyposaøaÊ uk³ad mik-
rokontrolera w†interfejs USB lub
RS232. W†przypadku modu³u
RS232. Modu³y by³y opracowane
z†myúl¹ o†wzajemnej kompatybil-
noúci i†przyk³adowo modu³ USB232
moøna stosowaÊ wymiennie z†uk³a-
dem RS232 i†w†prosty sposÛb osi¹g-
n¹Ê moøliwoúÊ wspÛ³pracy mikro-
kontrolera zarÛwno z†portem USB,
jak i†RS232 bez koniecznoúci zmian
na p³ytce drukowanej uk³adu mik-
rokontrolera.
Wszystkie modu³y s¹ standar-
dowymi aplikacjami zastosowanych
uk³adÛw scalonych. Do prawid³o-
wej pracy uk³adÛw FT8U232/245
konieczne jest ich po³¹czenie kab-
lem USB z†komputerem, na ktÛ-
rym zainstalowane s¹ odpowied-
nie sterowniki. Modu³y zasilane
s¹ z†portu USB i†do ich inicja-
lizacji nie jest potrzebne w³¹cze-
nie urz¹dzenia, w†ktÛrym pracuj¹.
Co wiÍcej, z†wyprowadzeÒ ozna-
Rys. 2. Schemat elektryczny modułu USB245
32
Elektronika Praktyczna 11/2003
czonych symbolem V+ moøna
czerpaÊ niewielki pr¹d o†wartoúci
kilkunastu miliamperÛw z†gniazda
USB poprzez opornik zabezpie-
czaj¹cy 4,7
32653147.001.png 32653147.002.png 32653147.003.png 32653147.004.png 32653147.005.png 32653147.006.png 32653147.007.png 32653147.008.png 32653147.009.png 32653147.010.png 32653147.011.png 32653147.012.png 32653147.013.png 32653147.014.png 32653147.015.png 32653147.016.png 32653147.017.png 32653147.018.png 32653147.019.png 32653147.020.png
 
Moduły interfejsów szeregowych
Tab. 1. Funkcje wyprowadzeń
modułu USB245
Nr Nazwa Kierunek Opis
1 RXF
OUT
stan niski oznacza, ¿e
bajt danych do odczy-
tu z modu³u jest do-
stêpny
2 TXE
OUT
stan niski oznacza, ¿e
modu³ jest gotów do
przyjêcia kolejnego
bajtu danych
3 WR
IN
zapis do modu³u bajtu
danych zboczem opa-
daj¹cym
4 RD
IN
odczyt z modu³u bajtu
danej zboczem naras-
taj¹cym
5 D7
I/O
b.7 bajtu danych
6 D6
I/O
b.6 bajtu danych
7 D5
I/O
b.5 bajtu danych
Rys. 3. Schemat elektryczny modułu RS232
8 D4
I/O
b.4 bajtu danych
9 D3
I/O
b.3 bajtu danych
USB232 funkcje poszczegÛlnych
wyprowadzeÒ s¹ w†zasadzie kopi¹
wyprowadzeÒ uk³adu FT8U232BM,
ktÛry stanowi interfejs pomiÍdzy
lini¹ USB a†sygna³ami interfejsu
RS232. Dok³adny opis poszczegÛl-
nych sygna³Ûw moøna znaleüÊ
w†dostÍpnych opisach standardu
RS lub w†dokumentacji technicz-
nej uk³adu scalonego do pobrania
ze strony producenta www.ftdi-
chip.com (materia³y tej firmy pub-
likujemy na CD-EP11/2003B).
KompatybilnoúÊ obydwu mo-
du³Ûw istnieje na poziomie naj-
prostszej i†najpopularniejszej
transmisji portem RS z†wykorzys-
taniem jedynie linii TxD, RxD
i†masy. Modu³ USB232 posiada
wyprowadzenia wszystkich sygna-
³Ûw†RS232 dla z³¹cza DB9. W†mo-
dule USB232 moøna wykorzystaÊ
dwie linie steruj¹ce (sygna³y /DSR
i†/DTR), co umoøliwia sterowanie
przep³ywem danych pomiÍdzy
mikrokontrolerem i†komputerem.
Na rys. 4 i† 5 pokazano najpros-
tsze warianty po³¹czenia modu-
³Ûw M1 i†M3 z†mikrokontrolerem
typu '51.
10 D2
I/O
b.2 bajtu danych
11 D1
I/O
b.1 bajtu danych
12 D0
I/O
b.0 bajtu danych
21 GND masa
22 n.c.
23 EECS I/O
sygna³ selekcji, jeœli
stosowany jest zewnêt-
rzny EEPROM
Wyprowadzenia uk³adu
USB245
Modu³ USB245 jest interfejsem
pomiÍdzy portem USB a†dowol-
nym 8-bitowym portem mikrokon-
trolera. Kilka dodatkowych linii
steruje przep³ywem danych po-
miÍdzy modu³em a†mikrokontrole-
rem. Funkcje wyprowadzeÒ mo-
du³u przedstawiono w† tab. 1 .
Przyk³adowe po³¹czenie modu³u
USB245 z†mikrokontrolerem poka-
zano na rys. 6 .
24 EECLK OUT
zegar transmisji da-
nych, jeœli stosowany
jest zewnêtrzny EEPROM
25 EEDAT I/O
sygna³ danych, jeœli
stosowany jest zewnêt-
rzny EEPROM
26 V+
OUT
zasilanie z gniazda USB
2 7 RSTOUT O U T
w yjœcie wewnêtrznego
generatora resetu
28 PWREN OUT
stan niski w czasie
konfiguracji modu³u
29 n.c.
30 n.c.
31 n.c.
32 GND masa
Rys. 4. Sposób dołączenia modułu USB232 do
mikrokontrolera
Rys. 5. Sposób dołączenia modułu RS232 do
mikrokontrolera
Elektronika Praktyczna 11/2003
33
32653147.021.png 32653147.022.png 32653147.023.png 32653147.024.png 32653147.025.png 32653147.026.png 32653147.027.png 32653147.028.png 32653147.029.png 32653147.030.png 32653147.031.png 32653147.032.png 32653147.033.png 32653147.034.png 32653147.035.png 32653147.036.png 32653147.037.png 32653147.038.png 32653147.039.png
Moduły interfejsów szeregowych
Rys. 6. Sposób dołączenia modułu USB245 do mikrokontrolera
takøe pe³niÊ funkcjÍ wyprowadzeÒ
sprzÍtowego interfejsu szeregowe-
go. Linie te oznaczone s¹ symbo-
lami TxD i†RxD (lub podobnymi).
Pierwsza przeznaczona jest do wy-
sy³ania danych w†trybie szerego-
wym, a†druga do odbioru danych.
Aby je uaktywniÊ, naleøy wpisaÊ
odpowiednie wartoúci do kilku
rejestrÛw mikrokontrolera oraz na-
pisaÊ trochÍ oprogramowania do
obs³ugi transmisji szeregowej przez
mikrokontroler.
Waøn¹ decyzj¹ jest okreúlenie
sposobu obs³ugi transmisji. Moøna
zaprogramowaÊ mikrokontroler
tak, aby sygnalizowa³ jedynie od-
czyt bajtu lub gotowoúÊ do wy-
s³ania kolejnego, a†program g³Ûw-
ny bÍdzie musia³ sam zadbaÊ
o†w³aúciw¹ reakcjÍ na zasygnali-
zowane w†ten sposÛb zdarzenia.
Nie jest to najwygodniejsze roz-
wi¹zanie, gdyø zmusza g³Ûwny
program do ci¹g³ego sprawdzania,
czy nowe dane juø siÍ pojawi³y
lub czy moøna juø wys³aÊ resztÍ.
W†dodatku jeøeli przegapi siÍ od-
powiedni moment, kolejny przy-
chodz¹cy bajt moøe byÊ wpisany
na miejsce poprzedniego jeszcze
nieodebranego przez program
g³Ûwny zajÍty np. d³ugotrwa³ymi
obliczeniami. Znacznie wygodniej
zdaÊ siÍ na obs³ugÍ transmisji
przez przerwania -ma³e podpro-
gramy dzia³aj¹ce niezaleønie od
programu g³Ûwnego w†tych mo-
mentach, gdy trzeba coú zrobiÊ
z†transmisj¹ szeregow¹. Takie op-
rogramowanie mikrokontrolera nie
jest wcale trudne i†pokaøemy, jak
moøna to zrobiÊ.
W†przyk³adach zostan¹ uøyte
dwa bufory: nadawczy i†odbiorczy
o†rozmiarze 8†bajtÛw kaø-
dy. Poza tym bÍd¹ wyko-
rzystywane 3†rejestry mik-
rokontrolera dla licznikÛw
bajtÛw w†buforze nadaw-
czym i†odbiorczym,
wskaünika aktualnej pozy-
cji w†rejestrze nadawczym
oraz dwa bity flag sygnalizuj¹cych
fakt oprÛønienia bufora nadawcze-
go i†umieszczenia w†buforze od-
biorczym†kolejnego bajtu odebrane-
go portem szeregowym.
Sterowniki
Uk³ady interfejsowe FT8U232BM
i†FT8U245BM, aby mÛc prawid³o-
wo pracowaÊ, wymagaj¹ zainstalo-
wania specjalnych sterownikÛw na
komputerze PC, do ktÛrego s¹
pod³¹czane. Sterownik zostaje uak-
tywniony w†momencie do³¹czenia
do gniazda USB modu³u z†wymie-
nionymi uk³adami. Dzia³anie ste-
rownika powoduje, øe†port USB
widziany jest w†systemie kompute-
rowym jako kolejny port COM
obs³ugiwany w†taki sam sposÛb jak
wszystkie inne porty RS232. DziÍki
temu programy potrafi¹ce obs³ugi-
waÊ porty COM bÍd¹ mog³y korzys-
taÊ z†USB bez koniecznoúci jakiej-
kolwiek przerÛbki.
Sterowniki dla rÛønych syste-
mÛw operacyjnych nieodp³atnie
udostÍpnia firma FTDI na stronie
internetowej www.ftdichip.com/
FTDriver.htm . Ich instalacja jest
bardzo prosta. Po úci¹gniÍciu pli-
ku sterownika odpo-
wiedniego do wersji sys-
temu operacyjnego,
w†ktÛrym bÍdzie praco-
wa³, naleøy plik rozpa-
kowaÊ do tymczasowego
katalogu na dysku. Na-
stÍpnie za pomoc¹ kabla
naleøy po³¹czyÊ modu³ z†kompu-
terem. Po wykryciu do³¹czonego
modu³u system operacyjny auto-
matycznie przeprowadza instala-
cjÍ sterownika, naleøy tylko po-
daÊ katalog, w†ktÛrym znajduj¹
siÍ rozpakowane pliki. Kaøde ko-
lejne do³¹czanie modu³u do kom-
putera bÍdzie juø automatycznie
uaktywnia³o odpowiedni sterow-
nik, ktÛry juø bÍdzie w†systemie.
WspÛ³praca
mikrokontrolerÛw
z†modu³ami
Modu³y USB232 i† USB245
umoøliwiaj¹ korzystanie z†portu
USB na nieco odmienne sposoby.
Pierwszy - w†przypadku zastoso-
wania modu³u USB245 - jest
prostszy. Sprowadza siÍ do ba-
dania stanu linii RXF i†TXE
sygnalizuj¹cych stan gotowoúci
modu³u†do transmisji lub ko-
niecznoúÊ odczytu z†modu³u ko-
lejnego bajtu. Niski stan obydwu
linii sygnalizuje gotowoúÊ do ko-
lejnej transmisji lub zakoÒczenie
odbioru bajtu. W†przypadku
transmisji mikrokontroler powi-
nien wys³aÊ na linie D0...7 po-
ziomy odpowiadaj¹ce wysy³ane-
mu bajtowi i†wygenerowaÊ ujem-
ny impuls na linii WR. W†przy-
padku odczytu dana pojawi siÍ
na liniach D0...7 po podaniu
stanu niskiego na liniÍ RD.
Wszystko na CD−EP11/2003B
Najnowsze wersje sterowników, noty katalogowe
oraz oprogramowanie narzędziowe dla układów
produkowanych przez firmę FTDI publikujemy
na CD−EP11/2003B.
Taka prostota okupiona jest jed-
nak koniecznoúci¹ zaangaøowania
aø 12 linii portÛw. Jeøeli w†mik-
rokontrolerze brakuje wolnych lini-
i, ktÛre moøna przeznaczyʆdo tego
celu, trzeba zastosowaÊ szeregow¹
transmisjÍ i†modu³ USB232 . W†mik-
rokontrolerach z†rodzin '51 lub AVR
wydzielono dwie linie steruj¹ce,
ktÛre oprÛcz uniwersalnych zasto-
sowaÒ jako wejúcia/wyjúcia mog¹
Jak to zrobiÊ
w†programie dla '51?
Przyk³ad oprogramowania nad-
zoruj¹cego transmisjÍ w†mikrokon-
trolerze z†grupy '51 zaczniemy
34
Elektronika Praktyczna 11/2003
32653147.040.png
Moduły interfejsów szeregowych
List. 1. Program obsługi przerwania od portu szeregowego
;przerwanie portu szeregowego
;-------------------
Rs_przerwanie:
push acc ;zachowanie zawartości rejestrów
push r0 ;użytych w procedurze przerwania
jb scon.1,rs_t ;przerwanie zostało spowodowane wysłaniem poprzedniego bajtu
;obsługa odczytu kolejnego bajtu
clr scon.0 ;zerowanie flagi odbioru bajtu w rejestrze SCON
mov a,#bufor_odbiorczy
add a,licznik_odebranych_bajtów
mov r0, a ;obliczenie adresu do zapisu w buforze odbiorczym
mov @r0,sbuf ;odebrany bajt z rejestru SBUF do buforu odbiorczego
inc licznik_odebranych_bajtów ;zwiększenie licznika bajtów w buforze
setb rs_rec_flag ;ustawienie flagi odbioru bajtu
jmp rs_t1
rs_t: ;obsługa wysłania kolejnego bajtu
clr scon.1 ;w rejestrze SCON zerowanie flagi zakończenia transmisji bajtu
mov a,licznik_wysylanych_bajtow
jnz rs_t2
rwaÒ. Dla wygody najlepiej to
zrobiÊ w†osobnym podprogramie,
na przyk³ad takim jak pokazano
na list. 2 .
SzybkoúÊ transmisji portu sze-
regowego zaleøy od 3†czynnikÛw:
czÍstotliwoúci kwarcu uøytego
w†oscylatorze mikrokontrolera,
wartoúci pocz¹tkowej wpisanej do
licznika T1 i†ustawienia bitu
SMOD w†rejestrze PCON. W†prak-
tyce oznacza to, øe niektÛrych
szybkoúci transmisji nie moøna
osi¹gn¹Ê, jeúli czÍstotliwoúÊ kwar-
cu bÍdzie zbyt ma³a. Standardowe
szybkoúci transmisji w†zakresie
1200...19200 bodÛw moøna osi¹g-
n¹Ê stosuj¹c kwarc o†czÍstotliwoú-
ci 11,059 MHz. W† tab. 2 zesta-
wiono wartoúci pocz¹tkowe wpi-
sywane do zegara T1 i†ustawienie
bitu SMOD dla poszczegÛlnych
szybkoúci.
W†przypadku zastosowania in-
nego kwarcu skazani jesteúmy na
eksperymentalne dobieranie war-
toúci pocz¹tkowej wpisywanej do
zegara T1. Program naleøy†jeszcze
uzupe³niÊ o†deklaracjÍ uøytych re-
jestrÛw przeznaczonych do obs³u-
gi transmisji, a†takøe wpisaÊ pod
odpowiednim adresem wektor
przerwania portu szeregowego, co
pokazano na list. 3 .
Na list. 4 pokazano kilka linii
kodu, ktÛre powinny znaleüÊ siÍ
w†programie g³Ûwnym, aby mieÊ
dostÍp do danych odebranych
;wszystkie bajty zostały wysłane
setb rs_trans_flag
;ustawienie flagi sygnalizującej wysłanie wszystkich znaków
jmp rs_t1
rs_t2:
mov a,wskaznik_pozycji_w_buforze
add a,#bufor_nadawczy ;pozycja w buforze kolejnego bajtu do wysłania
mov r0,a
mov a,@r0 ;pobranie kolejnego znaku do wysłania
mov sbuf,a ;znak do rejestru wyjściowego SBUF
inc wskaznik_pozycji_w_buforze
dec licznik_wysylanych_bajtow
rs_t1:
pop r0
;odtworzenie stanu rejestrów
pop acc
;używanych w procedurze przerwania
reti
List. 2. Program konfigurujący UART
;podprogram inicjacji transmisji szeregowej
;9600 bodów, 8 bitów danych, 1 bit stopu
;dla kwarcu mikrokontrolera 11,059MHz
;---------------------
Inicjacja:
mov SCON, #50h ;ustawienie w rejestrze SCON trybu1: 8 bitów danych 1 bit stopu
mov TMOD, #20h ;transmisja będzie taktowana zegarem T1
mov TH1, #0FDh ;wartości początkowe wpisywane do rejestrów
mov TL1, #0FDh ;zegara T1 dla szybkości transmisji 9600 bodów
anl PCON, #07Fh ;zerowanie bitu SMOD w rejestrze PCON
setb TR1 ;włączenie zegara T1
setb ES ;zezwolenie na przerwanie portu szeregowego
setb EA ;globalne zezwolenie na przerwania
clr rs_rec_flag ;kasowanie flagi sygnalizującej odbiór bajtu
mov licznik_odebranych_bajtów, #0 ;zerowanie licznika odebranych bajtów
ret
omawiaÊ od koÒca, czyli od pod-
programu obs³ugi przerwania.
W†'51 istnieje tylko jedno prze-
rwanie zwi¹zane z†transmisj¹ sze-
regow¹. Na pocz¹tku trzeba wiÍc
ustaliÊ, czy przerwanie zosta³o
wywo³ane odbiorem kolejnego
znaku, czy zakoÒczeniem wysy³a-
nia poprzedniego. I†zaleønie od
tego albo odczytany bajt ìwyl¹du-
jeî w†buforze odbiorczym, albo
kolejny bajt zostanie pobrany z†bu-
fora nadawczego i†wys³any
w†úwiat. Przyk³adowy program re-
alizuj¹cy to zadanie pokazano na
list. 1 .
Zanim przerwanie zacznie
funkcjonowaÊ, naleøy najpierw
ustawiÊ parametry transmisji sze-
regowej: szybkoúÊ, liczbÍ bitÛw
startu i†stopu, zainicjalizowaÊ re-
jestry i†flagi zwi¹zane z†trans-
misj¹ oraz w³¹czyÊ obs³ugÍ prze-
List. 3. Deklaracja rejestrów przeznaczonych do obsługi transmisji oraz
ustalenie wektora przerwania portu szeregowego
licznik_odebranych_bajtów EQU 30H
;licznik bajtów w buforze odbiorczym
licznik_wysylanych_bajtow EQU 31H
;licznik bajtów w buforze nadawczym
wskaznik_pozycji_w_buforze EQU 32H
;wskaźnik pozycji w buforze nadawczym
flagi
EQU 20h
;adres bajtu flag
rs_rec_flag
BIT flagi.0 ;flaga sygnalizacji odbioru bajtu
rs_trans_flag
BIT flagi.1 ;flaga zakończenia transmisji bajtów z buforu nadawczego
ROZMIAR_BUFOROW
EQU 8
;deklaracja rozmiaru buforów
bufor_odbiorczy: DS ROZMIAR_BUFOROW
bufor_nadawczy: DS ROZMIAR_BUFOROW
ORG 23H
jmp Rs_przerwanie
;wektor przerwania portu szeregowego
List. 4.
mov c, rs_rec_flag
jnc bufor_pusty
;w buforze odbiorczym nie ma nowych bajtów
clr ES
;zablokowanie przerwania portu szeregowego
mov r0,# bufor_odbiorczy
petla_odczytu:
mov a, @r0
;w rejestrze akumulatora bajt odczytany z bufora
...
;tutaj kod programu związany z wykorzystaniem bajtów
...
;przesłanych portem szeregowym z PC-ta
inc r0
djnz licznik_odebranych_bajtów, petla_odczytu
clr rs_rec_flag
Tab. 2. Wartości wpisywane do T1
dla różnych prędkości transmisji dla
częstotliwości kwarcu 11,059 MHz
SzybkoϾ SMOD WartoϾ wpisywana do T1
19200
;kasowanie flagi sygnalizującej odbiór danych
setb ES
;ponowne włączenie przerwania
bufor_pusty:
Inicjacja transmisji portem szeregowym może wyglądać następująco:
... ;kod programu zapisujący do buforu nadawczego bajty danych
... ;do wysłania portem szeregowym
mov licznik_wysylanych_bajtow, # ile_bajtów ;wpisanie do licznika ilości
;wysyłanych bajtów
mov wskaznik_pozycji_w_buforze, #0
mov r0,#bufor_nadawczy
mov a,@r0 ;w akumulatorze pierwszy bajt do wysłania
inc wskaznik_pozycji_w_buforze
dec licznik_wysylanych_bajtow
mov SBUF, a
1
#FDh
9600
0
#FDh
4800
0
#Fah
2400
0
#F4h
;zapis do SBUF pierwszego bajtu inicjuje transmisję
;zawartości bufora nadawczego
1200
0
#E8h
clr rs_trans_flag
Elektronika Praktyczna 11/2003
35
32653147.041.png
Zgłoś jeśli naruszono regulamin