background image

Każdy komputer musi współpracować

z jakimiś  urządzeniami  zewnętrznymi.
Bez  takich  urządzeń  jak  drukarka,  mysz,
joystick, modem telefoniczny, skaner, itp,
sam  komputer  jest  niemal  zupełnie  bez−
użyteczny.

Wymienione urządzenia dołączane są

do  komputera  za  pomocą  tak  zwanych
portów. Wystarczy zajrzeć na tylną płytę
obudowy komputera, by się przekonać,
iż umieszczonych tam jest przynajmniej
kilka  gniazd  połączeniowych.  Umożli−
wiają  one  wysyłanie  i przyjmowanie  in−
formacji.

Spośród gniazd znajdujących się na tyl−

nej ściance komputera, elektroników naj−
bardziej interesują:
– porty  szeregowe,  oznaczane  COM,

itd,  które  są  zgodne  ze  standardem
RS−232,  a które  potocznie  nazywamy
komami, eresami lub serialami,

– port  równoległy,  zgodny  ze  standar−

dem Centronics, oznaczany LPT, zwa−
ny potocznie elpetem,

– port  joysticka,  oznaczany  GAME

PORT, nazywany gejmportem.
W każdym  komputerze  PC  występują

przynajmniej  dwa  porty  szeregowe
(COM1 i COM2). Komputer ma też przy−
najmniej  jeden  port  równoległy  (LPT1)
i jeden  port  joysticka.  Port  joysticka  ma
specyficzną  budowę  i funkcje.  W zasa−
dzie służy tylko do przyjmowania informa−
cji od współpracującegu urządzenia (joys−
ticka).  Jego  funkcje  i możliwości  wyko−
rzystania  zostaną  omówione  w dalszej
części cyklu.

Zadaniem  portów  jest  przesyłanie  in−

formacji na zewnątrz komputera oraz po−
bieranie  informacji  z zewnątrz,  do  i od
urządzeń współpracujących.

Niemal wszystkie informacje przesyła−

ne do i z komputera mają postać cyfrową,
to znaczy, że mają postać napięcia odpo−
wiadającego stanom logicznym 0 i 1.

Zazwyczaj przesyłane są duże ilości in−

formacji. Z różnych względów, od dawna
podstawową  „porcją”  informacji  jest
bajt, czyli osiem bitów.

Informacje cyfrowe, jako kolejne bajty,

mogą  być  przesyłane  w postaci  równo−
ległej;  wtedy  potrzebne  jest  tyle  linii  –
przewodów,  ile  bitów  przesyłanych  jest
jednocześnie  (plus  przewód  masy).  Ilu−
struje to rry

ys

su

un

ne

ek

k 1

1a

a.

Informacje  mogą  też  być  przesyłane

w postaci  szeregowej,  czyli  kolejno  je−
den  bit  za  drugim.  Ilustruje  to  rry

ys

su

u−

n

ne

ek

k 1

1b

b. Tu wystarczą tylko dwa przewo−

dy – sygnałowy i masa.

Oba  te  sposoby  wykorzystano  do  ko−

munikacji komputera z otoczeniem.

Najprostsze  jest  działanie  portu  rów−

noległego.  Wykorzystano  tu  pierwszy
sposób.  W porcie  tym  między  innymi
znajduje się osiem linii, które pracują jako

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

28

Port szeregowy

Rys. 1a. Równoległe
przekazywanie danych.

W kilku ostatnich numerach EdW

poświęcono dużo miejsca spra−

wie wykorzystania komputera PC

do sterowania różnych urządzeń

zewnętrznych.

Przedstawiono kilka książek, które

w przystępny sposób uczą progra−

mowania w języku Basic. Napły−

wające listy świadczą o znacznym

zainteresowaniu tą sprawą. Jed−

nak materiał zawarty w poleca−

nych przez nas książkach nie obe−

jmuje zagadnień ogromnie istot−

nych dla elektronika – sposobów

wykorzystania portów komputera.

Niniejszy cykl artykułów wypełnia

tę lukę – zawiera obszerne i wy−

czerpujące omówienie zasady

działania oraz możliwości dostępu

do portów komputera PC. Przed−

stawiony materiał umożliwi nawet

mało zaawansowanemu użytkow−

nikowi komputera PC praktyczne

wykorzystanie tych portów.

Oprócz informacji ogólnych Autor

proponuje przeprowadzenie sze−

regu eksperymentów z wykorzys−

taniem prostej przystawki i rów−

nie prostych programów w języku

Basic. Nie potrzebna będzie na−

wet umiejętność programowania

w Basicu – do przeprowadzenia

najprostszych prób wystarczy

mieć dostęp do jakiegokolwiek

PC−ta i skorzystać ze wskazówek

zawartych w artykule.

1

1

część

Rys. 1b. Szeregowe przesyłanie danych.

W

Wy

yk

ko

or

rz

zy

ys

st

ta

an

niie

e p

po

or

rt

ów

w

k

ko

om

mp

pu

ut

te

er

ra

a P

PC

C

background image

K

Ko

om

mp

pu

ut

te

er

ry

29

E

LEKTRONIKA DLA WSZYSTKICH 6/97

wyjścia.  Komputer  jednocześnie  wysyła
na  te  osiem  wyjść  cały  bajt  informacji.
Ponieważ  jednocześnie  za  pomocą  oś−
miu przewodów przesyłanych jest osiem
bitów, transmisja danych przez port rów−
noległy jest szybka. Oprócz ośmiu głów−
nych  linii  wyjściowych,  port  równoległy
zawiera  szereg  innych  linii,  które  mogą
służyć  jako  wejścia,  a niektóre  jako  wy−
jścia.  Są  one  potrzebne  do  wymiany  in−
formacji pomocniczych, na przykład syg−
nału  synchronizującego,  wskazującego,
kiedy  na  liniach  przesyłowych  pojawia
się  nowy  bajt  informacji,  czy  informacji
o błędach.

Port  równoległy  zazwyczaj  obsługuje

drukarkę,  dlatego  w praktyce  do  różno−
rodnych celów „elektronicznych” wyko−
rzystuje  się  port  szeregowy.  Spośród
dwóch  portów  szeregowych,  jeden
zwykle  obsługuje  myszkę,  a drugi  port
może być wykorzystany w dowolny spo−
sób. Dodatkową, cenną zaletą portu sze−
regowego  jest  fakt,  że  stanom  logicz−
nym  0 i 1 odpowiadają  w nim  napięcia
+12V  i −12V,  i że  z wyjść  można  pobrać
prąd  do  10mA.  Tak  znaczne  napięcia
i prądy  są  często  wykorzystywane  do...
zasilania  współpracujących  urządzeń.
W ten sposób wyjścia portu szeregowe−
go  stają  się  źródłem  zasilania.  Wyjścia
i wejścia portu szeregowego są odporne
na  uszkodzenia  pod  wpływem  zewnętr−
znych  napięć  i prądów,  dlatego  zasadni−
czo  można  dołączać  do  tego  portu
współpracujące  urządzenia  także  przy
włączonym zasilaniu komputera.

Wspomniane zalety zadecydowały, że

port  szeregowy  jest  najczęściej  wyko−
rzystywany przez konstruktorów do pod−
łączania  różnych  bardziej  lub  mniej  stan−
dardowych urządzeń zewnętrznych. Trze−
ba jednak mieć świadomość, że port sze−
regowy jest znacznie wolniejszy od portu
równoległego,  a więc  jeśli  wymagane
jest szybkie przesyłanie danych, koniecz−
ne może się okazać wykorzystanie portu
równoległego.

Właściwości portu szeregowego zwią−

zane są ze starymi standardami stosowa−
nymi  w dalekopisach  oraz  z sygnałami
wykorzystywanymi  w modemach,  czyli
urządzeniach współpracujących z linią te−
lefoniczną.  Opis  pełnego  standardu  jest
bardzo  obszerny.  W opisie  spotkasz  ta−
jemnicze określenia RS−232C, V.24, DTE,
DCE,  DSR,  DTR,  RTS,  CTS,  i wiele  in−
nych.  Różnorodne  możliwości  połączeń,
całe mnóstwo stosowanych kabli, tajem−
nicze  skróty  –  wszystko  to  może  wręcz
przerazić  przeciętnego  użytkownika.  Na
szczęście  do  praktycznego  wykorzysta−
nia  portów  komputera  wystarczy  garść
najważniejszych  informacji,  natomiast
szczegóły  nie  są  potrzebne,  dlatego  zo−
staną pominięte.

W dalszej części artykułu przedstawio−

ne zostanie wszystko to, co jest potrzeb−
ne elektronikowi do praktycznego wyko−
rzystania  portu  dla  celów  sterowania
i zbierania danych. Ogólnie biorąc, poniż−
szy materiał jest zgrubnym opisem stan−
dardu RS−232C.

Port szeregowy

Główne  dwie  linie  portu  szeregowe−

go oznaczone są TxD i RxD. TxD to linia
Transmit  Data,  czyli  wyjście.  RxD  (Re−
ceive Data) to wejście. Jak pokazuje rry

y−

s

su

un

ne

ek

k  2

2a

a,  te  dwie  linie  plus  przewód

masy  wystarczą,  by  przesyłać  dane
z i do  komputera.  Zastosowano  tu  tak
zwaną transmisję szeregową, asynchro−
niczną.  Urządzenie  nadawcze  wysyła
kolejno  w linię  poszczególne  bity.
W największym  uproszczeniu  wygląda
to jak na rysunku 1b. Przebieg napięcia
o takiej  postaci  jest  wysyłany  w linię
i odbierany  przez  współpracujące  urzą−
dzenie.  Ale  taki  ciąg  bitów  mógłby  być
błędnie odebrany, albo w skrajnym przy−
padku,  zupełnie  nie  odebrany.  Przykła−
dowo przy transmisji samych zer lub sa−
mych jedynek urządzenie odbiorcze nie
wiedziałoby,  kiedy  zaczyna  się,  a kiedy
kończy  transmisja.  Dlatego  przy  szere−
gowym  przesyłaniu  danych  trzeba
wprowadzić  dodatkowe  informacje
i spełnić pewne warunki. Przede wszys−
tkim  trzeba  przyjąć  jakiś  stan  spoczyn−
kowy. Niech to będzie stan wysoki. Jeś−
li przez linię nie są przesyłane dane, na
linii przesyłowej utrzymuje się stan wy−
soki. Pojawienie się stanu niskiego jest
sygnałem  o rozpoczęciu  transmisji.  Ale
pierwszy  bit  transmitowanej  informacji
wcale nie musi być zerem. Dlatego ko−
nieczne jest wprowadzenie dodatkowe−
go,  początkowego  bitu,  który  zawsze
będzie zerem. Jedynym zadaniem tego
bitu  jest  wskazanie  odbiornikowi,  że
właśnie  rozpoczyna  się  transmisja.  Ten
bit  jest  zwany  bitem  startu.  Ilustruje  to
rry

ys

su

un

ne

ek

k 2

2b

b.

Wydawałoby  się,  że  po  wysłaniu  bitu

startu, można potem przesłać kolejno do−
wolnie  wielką  ilość  bitów.  W praktyce
wcale  nie  jest  to  takie  proste.  Odbiornik
powinien  wiedzieć,  kiedy  w linii pojawił
się następny bit. A skąd ma to wiedzieć?
Jeśli  wykorzystana  byłaby  dodatkowa  li−
nia,  przez  którą  przesyłany  byłby  sygnał
taktujący, czyli zegarowy, nie byłoby żad−
nego problemu. Sygnał taktujący wskazy−
wałby, kiedy w linii danych pojawia się na−
stępny  bit  (taki  sposób  nazywany  jest
transmisją  synchroniczną).  Ale  tu  nie  ma
sygnału  zegarowego  –  zarówno  nazwa,
jak  i rysunek 2 wskazują,  iż  jest  to  trans−
misja  asynchroniczna,  czyli  nie  ma  żad−
nych  dodatkowych  linii  przesyłających
sygnały synchronizacji.

Prędkość transmisji

Bit  startu  wskazuje  tylko  początek

transmisji,  a następne  bity  muszą  poja−
wić  się  w ściśle  określonym  czasie.  Ina−
czej mówiąc, zarówno nadajnik, jak i od−
biornik muszą mieć równo tykające zega−
ry, które odmierzą czas pojawiania się ko−
lejnych  bitów.  Oznacza  to,  że  nadajnik
i odbiornik  muszą  się  „umówić”,  z jaką
prędkością  są  przesyłane  dane.  Teore−
tyczne,  prędkość  przesyłania  mogłaby
być dowolna, jednak dla porządku przyję−
to pewien standard. Dawniej stosowano
bardzo małe prędkości transmisji: 50, 75
lub  110  bodów,  czyli  bitów  na  sekundę.
Potem  stosowano  prędkości  300,  600,
1200, 2400, 3600 i 4800 bitów na sekun−
dę.  Obecnie  w zależności  od  rodzaju
współpracujących  urządzeń,  stosuje  się
prędkości transmisji 9600, 14400, 19200,
28800 bitów na sekundę i wyższe.

Zasadą  jest,  że  w linię  wysyła  się  ko−

lejne bity danego bajtu, począwszy od bi−
tu najmłodszego, oznaczanego D0 do naj−
starszego.

Przyjęcie  standardowych  prędkości

transmisji znakomicie ułatwia współpracę
urządzeń różnych producentów – wystar−
czy,  by  zachowane  były  ogólne  zasady,
w tym  podane  prędkości,  czyli  częstotli−
wości taktujące nadajnika i odbiornika.

A z jaką dokładnością należy utrzymy−

wać  podane  prędkości  transmisji  i częs−
totliwości taktujące?

Jeśli zegary taktujące nadajnika i odbior−

nika tykałyby idealnie równo, po bicie star−
tu można byłoby przesłać dowolną ilość bi−
tów informacji bez obawy o błędy. Pokazu−
je to rry

ys

su

un

ne

ek

k 3

3. Generator taktujący odbior−

nika  wyznacza  momenty  czasu,  które  po−
winny wypadać dokładnie w połowie cza−

Rys. 2a. Najprostsze wykorzystanie
portu szeregowego.

Rys. 2b. Przebiegi czasowe przy
transmisji szeregowej.

background image

su  przesyłania  danego  bitu.  Tylko  w tych
momentach  odbiornik  próbkuje  stan  linii,
czyli odczytuje aktualny stan linii. Momen−
ty te na rysunku 3 zaznaczono strzałkami.

Jednak już przy jakiejś niewielkiej róż−

nicy częstotliwości zegarów taktujących,
dłuższy przekaz zostałby zinterpretowany
błędnie. Jeśli częstotliwości zegarów bę−
dą się znacznie różnić, któryś kolejny mo−
ment  próbkowania  wypadnie  w czasie
trwania następnego lub poprzedniego bi−
tu. Ilustruje to rry

ys

su

un

ne

ek

k 4

4. Strzałki wskazu−

ją momenty próbkowania.

Wskutek  różnicy  częstotliwości  zega−

rów  taktujących  nadajnika  i odbiornika,
przesyłana  informacja  została  odczytana
błędnie.

Wiadomo,  że  w praktyce  idealnej  do−

kładności  zapewnić  się  nie  da.  Dla  bez−
pieczeństwa  przyjęto  więc,  że  po  bicie
startu przesyła się tylko 5...8 bitów właś−
ciwej  informacji.  Wtedy  wymagania  na
dokładność  częstotliwości  taktującej  nie
są zbyt ostre.

Ponieważ po bicie startu przesyłanych

jest tylko kilka bitów informacji, urządze−
nia będą poprawnie pracować, nawet jeś−
li częstotliwości taktujące będą różnić się
o kilka procent.

W praktyce,  w urządzeniach  standar−

du RS−232 stosuje się sygnał pomocniczy
o częstotliwości  16  razy  większej,  niż
standardowa  częstotliwość  przesyłania
danych.  Właśnie  ten  pomocniczy  sygnał
wyznacza momenty próbkowania. Ponie−
waż  w czasie  trwania  każdego  bitu  wy−

stępuje 16 taktów tego sygnału pomocni−
czego, próbkowanie „środka bitu” odby−
wa się w ósmym takcie każdego cyklu.

Częstotliwości  taktujące,  potrzebne

przy  różnych  prędkościach  transmisji,
uzyskuje się z jednego generatora kwar−
cowego  przez  odpowiedni  podział  jego
częstotliwości.

Omówiliśmy  już  dwie  sprawy  związa−

ne z transmisją szeregową: znaczenie bi−
tu  startu  oraz  dokładność  częstotliwości
taktujących nadajnika i odbiornika.

Trzecią  sprawą  jest  bit  kontroli  pa−

rzystości.

Bit kontroli parzystości

Przy  przesyłaniu  danych  na  odległość,

chwilowe  zakłócenia  indukujące  się
w przewodach,  albo  też  inne  szkodliwe
czynniki, mogą wprowadzić błędy i odebra−
ny  sygnał  będzie  różnić  się  od  nadanego.
Prawdopodobieństwo  wystąpienia  błędu
jest w sumie niewielkie, ale nie można go
wykluczyć. Dobrze byłoby mieć informację
o wystąpieniu błędów w transmisji. Wtedy
dane można przesłać ponownie.

Wprowadzono  więc  dodatkowy  bit

kontrolny.  Wartość  tego  bitu  zależy  od
przesyłanej  informacji.  Umawiamy  się,
że  transmitowane  dane  powinny  zawie−
rać  parzystą  ilość  jedynek.  Jeśli  akurat
przesyłane  kilka  bitów  zawiera  parzystą
liczbę  jedynek,  bit  kontrolny  dodawany
w nadajniku ma wartość zero. Jeśli właś−
ciwa informacja zawiera nieparzystą licz−
bę jedynek, bit kontrolny ustawiany jest
na  1,  aby  całkowita  liczba  jedynek  była
parzysta.  Po  stronie  odbiorczej  spraw−
dzana  jest  ilość  odebranych  jedynek.
Jeśli  ich  liczba  nie  jest  parzysta,  odbior−
nik  sygnalizuje  błąd.  Przy  odpowiedniej
organizacji transmisji, po wykryciu błędu
zafałszowane  dane  zostaną  przesłane
jeszcze raz.

Co prawda wprowadzenie bitu kontro−

li parzystości nie daje gwarancji wykrycia
wszystkich błędów. Na przykład przy jed−
noczesnym  zaistnieniu  dwóch  przekła−
mań odbiornik nie wykryje błędu – jednak
prawdopodobieństwo  takiego  zdarzenia
jest o wiele mniejsze, niż szansa pojawie−
nia się jednego przekłamania i w praktyce
to wystarcza.

Notujemy kolejną ważną wiadomość:

w przesyłanym  sygnale  może  się  zna−

leźć, choć nie musi, dodatkowy bit kont−
roli parzystości.

Bit Stopu

Po  wysłaniu  jednej  porcji  informacji

nadajnik  ustawi  na  linii  stan  spoczynko−
wy, czyli stan wysoki. Jeśli nadajnik miał
wysłać tylko te kilka bitów (jeden bajt), to
stan wysoki będzie się utrzymywał, aż po
upływie  dowolnie  długiego  czasu  nadaj−
nik  otrzyma  rozkaz  wysłania  następnej
porcji  informacji  (następnego  bajtu).
W praktyce  często  trzeba  przesłać  dużą
ilość danych i wtedy nadajnik wysyła por−
cje  informacji  jedną  po  drugiej.  Między
poszczególnymi  porcjami  musi  wystąpić
przerwa, aby odbiornik mógł prawidłowo
odebrać  bit  startu  następnej  porcji.  Ta
przerwa  musi  trwać  przynajmniej  przez
czas  odpowiadający  transmisji  jednego
bitu  (albo  1,5,  albo  2 bitów).  To  właśnie
jest kolejny warunek.

Już wiemy, że przy transmisji szerego−

wej  łączem  RS−232,  oprócz  4...8  bitów
właściwej  informacji,  przesyłany  jest  bit
startu, bit(y) stopu i ewentualnie bit kont−
roli parzystości.

Wszystkie  te  zasady,  czyli  tak  zwany

protokół  transmisji,  mogą  się  wydać
skomplikowane. Ale obecnie nikt nie pró−
buje zbudować układu realizującego poda−
ne funkcje z kostek TTL czy CMOS4000.
W praktyce albo o wszystko troszczy się
mikroprocesor,  albo  wykorzystywane  są
specjalizowane układy scalone, tak zwane
UARTy  (Uniwersal  Asynchronous  Recei−
ver  Transmitter).  W PC−tach  są  to  kostki
8250, 16450 lub ich odpowiedniki. Istnie−
je też wiele innych UARTów, na przykład
8251, IM6402 (IM6403), itp.

Użytkownik nie troszczy się o szczegó−

ły.  Musi  tylko  poinformować  taką  kostkę
jaka będzie prędkość transmisji, ile bitów
będzie  transmitowanych  w jednej  porcji
(5...8), czy wystąpi bit kontroli parzystości
(E  –  even),  nieparzystości  (O  –  odd),  czy
nie będzie takiego bitu (N – no parity) oraz
jaki  jest  minimalny  czas  przerwy  między
kolejnymi  porcjami  (1,  1,5  lub  2 bity  sto−
pu).  Przy  obsłudze  komputera  zwykle
ustala się te parametry programowo.

Ostatecznie struktura przesyłanych in−

formacji jest taka, jak na rry

ys

su

un

nk

ku

u 5

5.

((rre

ed

d))

Cd. w EdW7/97

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

30

Rys. 3. Sytuacja przy jednakowych
częstotliwościach zegarów nadajnika
i odbiornika.

Rys. 4. Sytuacja przy niejednakowych
częstotliwościach zegarów nadajnika
i odbiornika

Rys. 5. Struktura informacji przy przesyłaniu danych łączem szeregowym RS−232.

background image

Inne właściwości

Elektronik  powinien  znać  podane  po−

wyżej  ogólne  zasady  transmisji  szerego−
wej  złączem  RS.  W praktyce  prawdopo−
dobnie  nie  będzie  jednak  wykorzystywał
tej wiedzy. Złącze to może zostać, i częs−
to  bywa  przez  elektroników  wykorzysty−
wane w nietypowy sposób. Należy więc
poznać je bliżej.

W takich  nietypowych  zastosowa−

niach  transmitowane  sygnały  nie  mają
struktury pokazanej na rysunku 5, a układ
pracy nie wygląda tak, jak pokazuje rysu−
nek 2. Wykorzystuje się za to dodatkowe
linie łącza RS−232.

Każdy port szeregowy komputera PC,

oprócz  linii masy  (GND),  linii nadawania
TxD  oraz  odbierania  danych  –  RxD,  ma
jeszcze sześć dodatkowych linii oznacza−
nych  DTR  (Data  Terminal  Ready),  RTS
(Request  to  Send),  CTS  (Clear  to  Send),
DSR (Data Set Ready), DCD (Data Carrier
Detect) oraz RI (Ring Indicator).

Wymienione  linie  są  potrzebne  na

przykład  przy  współpracy  komputera
z

modemem  telefonicznym.  R

Ry

ys

su

u−

n

ne

ek

k 6

6 pokazuje jak zmieniają się stany po−

szczególnych  linii,  gdy  modem  przesyła
informacje do komputera.

Podane  skróty  i angielskie  określenia

źródłowe  mogą  przyprawić  o ból  głowy.
Na  szczęście  wcale  nie  trzeba  rozumieć
dokładnie,  do  czego  miały  służyć  te
wszystkie linie przy współpracy z mode−
mem.  Nie  trzeba  też  szczegółowo  anali−
zować kolejności pojawiania się i znacze−
nia sygnałów na poszczególnych liniach –
wystarczy  wiedza,  że  łącze  RS−232  za−
wiera linie pomocnicze.

Elektronik  musi  wiedzieć,  że  w kom−

puterze linie oznaczane DTR i RTS mogą
pełnić  funkcje  wyjścia,  a linie  oznaczane
CTS,  DSR,  DCD  oraz  RI  –  mogą  pełnić
funkcję wejścia.

Trzeba  też  umieć  sterować  liniami

DTR  i RTS,  oraz  odczytywać  stan  lini−
i  CTS,  DSR,  DCD  i RI.  Jest  to  w sumie
bardzo proste.

W tabeli 1 podano zwięzłu opis sygna−

łów złącza szeregowego komputera i od−
powiadające  im  numery  końcówek  złącz
9 i 25−stykowych. R

Ry

ys

su

un

ne

ek

k 7

7 pokazuje jak

poszczególne linie podłączone są do szpi−
lek gniazd.

W portach  szeregowych  spotyka  się

zarówno złącza 9−stykowe, jak i złącza 25−
stykowe. Nie ma to większego znaczenia
dla  użytkownika,  najwyżej  na  podstawie
tabeli  1 lub  rysunku  7 trzeba  wykonać
prostą  przejściówkę  składającą  się
z gniazda i wtyczki, łączącą szpilki o właś−
ciwych numerach.

W komputerze porty szeregowe mają

złącza  męskie,  zawierające  szpilki.  Nato−
miast rysunek 7 pokazuje widok i nume−
rację  złącz  żeńskich,  czyli  nasadek  dołą−

K

Ko

om

mp

pu

ut

te

er

ry

31

E

LEKTRONIKA DLA WSZYSTKICH 6/97

Rys. 6. Stany poszczególnych linii przy przesyłaniu informacji z modemu 
do komputera.

Rys. 7. Podłączenie linii do szpilek gniazd 25 i 9−pinowych.

background image

czanych  do  komputera.  Praktyka  intere−
suje właśnie to, jak okablować te nasadki
dołączane do komputera. W wypadku ja−
kichkolwiek wątpliwości co do numeracji
nóżek złącz, należy odszukać cyferki wy−
tłoczone na gniazdach i wtykach.

Poziomy napięć

Jak  wspomniano  na  początku  artyku−

łu, na wyjściach portu szeregowego wy−
stępują  napięcia  rzędu  ±10...15V.  Takie
poziomy  napięć  wywodzą  się  z epoki

przedkomputerowej. W związku z przyję−
tymi  wymaganiami  na  poziomy  napięć,

urządzenie  zawierające  port  szeregowy
musi  zawierać  obwody  zasilania  napię−
ciem  ±10...15V  albo  też  przetwornice,
wytwarzające  takie  napięcia  ze  standar−
dowego  napięcia  zasilania  systemów  lo−
gicznych, równego 5V lub 3,3V.

Schemat  blokowy  typowego  portu

szeregowego  pokazany  jest  na  rry

ys

su

un

n−

k

ku

u 8

8.  Procesor  wpisuje  do  układu  UART

rozkazy  sterujące,  dane  do  przesłania
i odczytuje  odebrane  dane.  W kompute−
rach  PC  wykorzystuje  się  kostkę  UART

8250, 16450, albo stosuje się rozwiązania
zgodne z nimi programowo.

Oprócz  kostki  UART  konieczne  są

jeszcze  układy  dopasowujące  poziomy
napięć (0...+5V lub 0...+3,3V komputera,
do  napięć  wymaganych  w liniach  łącza
RS−232). Dawniej typowym układem od−
biorczym  była  kostka  o numerze  1488
i układem nadawczym – 1489. Te układy
dopasowujące  były  zasilane  napięciem
symetrycznym ±10...15V. Schematy we−
wnętrzne  jednego  toru  nadajnika  1488
i odbiornika  1489  pokazane  są  na  rry

ys

su

un

n−

k

ku

u 9

9.  Obecnie  bardzo  wiele  urządzeń

przenośnych zasilanych jest z baterii, dla−
tego powszechnie stosuje się tam układy
sprzęgające, które dodatkowo wyposażo−
ne są w system przetwornic, które z po−
jedynczego napięcia o wartości 5 lub na−
wet 3,3V wytwarzają napięcia symetrycz−
ne wymagane w standardzie RS−232. No−
woczesne kostki tego typu przedstawio−
ne są w Klubie Konstruktorów.

Na rry

ys

su

un

nk

ku

u 1

10

0 pokazano dopuszczalne

zakresy  napięć  na  wyjściach  i wejściach
łącza RS dla stanów logicznych 0 i 1 we−
dług  normy.  Obok  (rys  10c)  podano,  jak
wejścia interpretują podawane na nie na−
pięcia.

Z poziomami  napięć  na  trzech  wy−

jściach portu szeregowego jest trochę za−
mieszania,  dlatego  nie  zaznaczono,  jakie
napięcia  odpowiadają  ligicznej  1,  a jakie
logicznemu  0.  Mówi  się,  że  informacja
wysyłana przez linię TxD jest zanegowa−
na. W rzeczywistości jest ona podwójnie
negowana.  Dla  Czytelników  EdW  takie
szczegóły  nie  są  istotne.  Najważniejszy
jest fakt, że dwa urządzenia wyposażone
w złacze RS−232 potrafią się porozumieć,
o ile  tylko  jednakowo  zaprogramowane
zostaną parametry transmisji.

Elektronik,  chcący  wykorzystać  port

szeregowy powinien wiedzieć, że po włą−
czeniu  komputera,  na  wszystkich  trzech
wyjściach  portu  RS−232C  występują  na−
pięcia ujemne.

Wpisanie  przez  procesor  do  któregoś

z wyjść portu (DTR lub RTS), logicznej je−
dynki (czyli ustawienie tego wyjścia), po−
woduje  pojawienie  się  na  odpowiedniej
linii  napięcia  dodatniego  o wartości
10...15V. Ponowne wpisanie tam zera po−
woduje  pojawienie  się  napięcia  ujemne−
go o podobnej wartości.

Właśnie te  napięcia  można  wykorzys−

tać  jako  źródło  zasilania  dla  dołączonych
z zewnątrz  układów.  Ponieważ  z wyjść
można pobrać prąd rzędu kilku miliampe−
rów, a współczesne kostki zużywają bar−
dzo  mało  prądu,  złącze  RS  może  zasilać
nawet dość rozbudowany układ.

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

32

Rys. 8. Blokowy schemat portu szeregowego PC−ta.

Rys. 9a. Schemat wewnętrzny 
jednego toru nadajnika 1488.

Rys. 9b. Schemat wewnętrzny 
jednego toru odbiornika 1489.

Rys. 10.

background image

Przykładowo  linie  wyjściowe  DTR

i RTS  (ustawione  w przeciwnych  sta−

nach)  mogą  służyć  jako  źródło  napięcia
zasilającego,  a linia  RxD  będzie  pełnić
funkcje wyjścia sygnałów.

W zasadzie  już  jedna  linia  wyjściowa

może  dostarczyć  napięć  symetrycznych.
Wystarczy  by  komputerz  odpowiednią
częstotliwością  ustawiał  na  niej  na  prze−
mian  stan  wysoki  i niski  –  napięcia  sy−
metryczne  można  uzyskać  z pomocą
dwóch  diod  i dwóch  kondensatorów
w układzie z rry

ys

su

un

nk

ku

u 1

11

1.

Często do zasilania współpracującego

urządzenia  wystarczy  napięcie  o jednej
biegunowości.  Wykorzystuje  się  wtedy
w bardzo prosty sposób jedną linię, i to li−
nię, która jednocześnie transmituje dane.
Na rry

ys

su

un

nk

ku

u 1

12

2 pokazano sposób zasilania

urządzenia i przesyłania do niego informa−
cji za pomocą tylko dwóch przewodów.

Wiadomo, że z portu szeregowego na

linię  wysyłane  są  napięcia  dodatnie
i ujemne o znacznej wartości. Natomiast
wejścia portu wcale nie muszą być stero−
wane takimi napięciami, jak pokazano na
rysunku  10b.  W zasadzie  norma  mówi,
że  sygnały  przychodzące  do  wejścia  po−
winny mieć napięcie (dodatnie lub ujem−
ne) większe niż 3V. Ale w rzeczywistości
układy  odbiorcze  (z  nielicznymi  wyjątka−
mi)  konstruuje  się  w ten  sposób,  że  na−
pięcia większe niż +1,25V traktowane są
jako stan wysoki, a mniejsze niż +1V: ja−
ko stan niski. Wejścia wyposażone są po−

nadto w obwód histerezy, nie dopuszcza−
jącej  do  powstania  przekłamań  i drgań,
także  w zakresie  napięć  wejściowych
+1...+1,25V. Pokazano to na rysunku 10c.

Jest  to  bardzo  pożyteczne  rozwiąza−

nie. Dzięki niemu wejście portu szerego−
wego  komputera  może  być  sterowane
sygnałami o poziomach TTL! Jest to bar−
dzo ważna cecha, często wykorzystywa−
na w praktyce. Port szeregowy kompute−
ra wysyła napięcia bipolarne, jak pokaza−
no na rysunku 10a. Ale wejścia tego por−
tu  prawidłowo  odczytają  dane  o pozio−
mach  TTL  –  to  znaczy,  że  urządzenie
współpracujące z komputerem wcale nie
musi  być  wyposażone  we  wspomniane
układy  sprzęgające,  zasilane  napięciami
symetrycznymi – wystarczy zasilanie po−
jedynczym napięciem w zakresie 3...15V.
Takie  właściwości  wejść  portu  szerego−
wego  otwierają  przed  amatorami  duże
możliwości  i znakomicie  upraszczają  bu−
dowę urządzeń współpracujących.

Podane  właśnie  informacje  są  bardzo

ważne dla każdego praktyka, bowiem po−
zwalają  wykorzystać  szeregowe  porty
komputera na wiele nietypowych, a bar−
dzo  ciekawych  sposobów.  W dalszej
części  artykułu  podane  będą  propozycje
prostych  eksperymentów  z portem  sze−
regowym.  Ale  najpierw  trzeba  się  nau−
czyć  ustawiać  i odczytywać  stan  po−
szczególnych linii portu.

Adresowanie

Z punktu  widzenia  procesora  (a  także

z punktu  widzenia  programu,  np.  QBasi−
ca), obsługa portów polega na wpisywa−
niu  i odczytywaniu  bajtów  informacji
spod ściśle określonych adresów. Jest to
bardzo proste: wpisujemy bajt pod okreś−
lony adres i tym samym zmieniamy stany
linii wyjściowych portu. Odczytujemy bajt
spod pewnego adresu i otrzymujemy in−
formacje  o stanie  linii  wejściowych
w momencie odczytu.

Elektronikowi−praktykowi  nie  są  po−

trzebne  wszystkie  szczegóły  na  ten  te−
mat. Trzeba jednak rozumieć pewne pod−
stawowe zagadnienie.

Z grubsza  biorąc,  w PC−cie  mamy  do

czynienia  z dwoma  rodzajami  adresów.
Jak  wiadomo,  adresy  są  liczbami,  wyra−
żanymi najczęściej w systemie szesnast−
kowym  (dlatego  liczby  te  poprzedzone
są,  lub  zakończone,  literką  H−hexadeci−
mal,  a oprócz  cyfr  0...9  zawierają  znaki
A...F).

Jedne adresy dotyczą współpracy pro−

cesora z pamięcią operacyjną (RAM). Za−
kres tych adresów sięga od zera do dzie−
siątków  milionów  –  taki  zakres  jest  po−
trzebny  do  obsługi  dzisiejszych  pamięci
RAM  o pojemności  32  lub  64  megabaj−
tów.

Drugi  rodzaj  adresów  dotyczy  współ−

pracy  procesora  z najróżniejszymi  urzą−
dzeniami  wejścia/wyjścia.  Zakres  tych
adresów  wynosi  w zasadzie  od  zera  do
65536  (szesnastkowo  FFFFH),  ale  z tej
liczby wykorzystuje się co najwyżej kilka−
set adresów.

Mamy więc w PC−cie sytuację, że ten

sam adres z zakresu 0...FFFFH może być
adresem komórki w pamięci RAM, i adre−
sem urządzenia wejścia/wyjścia. Kompu−
ter w sobie znany sposób radzi sobie z ty−
mi podwójnymi adresami. Nas to w zasa−
dzie  może  nie  obchodzić,  wystarczy,  że
poinformujemy  prosesor,  że  ma  on  od−
czytać  lub  zapisać  dane  do  urządzenia
wejścia/wyjścia, a nie z/do pamięci RAM.

Jak się za chwilę okaże, jest to bardzo

proste.  Jest  to  tym  bardziej  łatwe,  że
w PC−cie  dla  poszczególnych  urządzeń
wejścia/wyjścia,  a w tym  także  dla  na−
szych  portów,  zarezerwowano  pewne
stałe adresy.

Mamy więc tak zwane adresy bazowe

portów.

Adresy bazowe portów

Porty szeregowe COM1 i COM2 mają

adresy  bazowe  (w  zapisie  szesnastko−
wym) 3F8 i 2F8, czyli w zapisie dziesięt−
nym  1016  i 760  (ewentualne  porty
COM3 i COM4 mają adresy szestnastko−
we  3E8  i 2E8,  co  dziesiętnie  daje  1000
i 744).

Pod każdym adresem znajduje się oś−

miobitowy rejestr (coś w rodzaju komórki
pamięci). Przy normalnej transmisji szere−
gowej (wg rysunków 2 i 5), pod te adre−
sy  wpisuje  się  (ośmiobitowe)  dane  do
wysłania,  i spod  tych  samych  adresów
odczytuje  się  dane  odebrane  z lini−
i (z tego wynika, że w rzeczywistości pod
tym  jednym  adresem  bazowym  są  dwa
rejestry:  wyjściowy  i wejściowy,  ale  dla
nas nie jest to istotne).

Do zaadresowanego rejestru możemy

więc wpisać (lub odczytać) dowolną licz−
bę 

z

zakresu 

0...255 

(binarnie

0...11111111).  Bardzo  często  nie  chodzi
nam  o liczbę,  tylko  o ustawienie  w stan
1, lub wyzerownie poszczególnych bitów
tego  rejestru.  Powiedzmy,  że  chcemy
wpisać  jedynkę  do  dwóch  najstarszych
bitów rejestru. To znaczy, że do tego re−
jestru  musimy  wpisać  liczbę  binarną
11000000. Liczba ta przedstawiona w za−
pisie  dziesiętnym  to  192.  Z poziomu
QBasica każemy więc wpisać pod okreś−
lony adres liczbę 192 – tym samym wpi−
szemy  dwie  jedynki  do  najstarszych  bi−
tów  rejestru.  Analogicznie  rozkaz  wpisa−
nia liczby 7 wpisze jedynki do trzech naj−
młodszych  bitów  rejestru  (bo  liczba  7 to
binarnie 00000111).

Jak  wspomniano,  w komputerze  PC

do obsługi portu szeregowego wykorzys−

K

Ko

om

mp

pu

ut

te

er

ry

33

E

LEKTRONIKA DLA WSZYSTKICH 6/97

Rys. 12. Zasilanie przez linię 
transmisyjną.

Rys. 11. Zasilanie bipolarne z portu RS.

background image

tuje się albo kostkę UART 8250, albo sto−
suje się rozwiązania zgodne programowo
z tą kostką. W rzeczywistości do obsługi
wszystkich  funkcji  portu  szeregowego
wykorzystuje  się  nie  jeden  (adres  bazo−
wy), ale kilka kolejnych adresów. Dla ułat−
wienia,  zamiast  dla  każdego  portu  poda−
wać wszystkie kolejne adresy, do adresu
bazowego  dodaje  się  tak  zwany  offset,
czyli liczbę z zakresu 1...6.

Pokazuje to rry

ys

su

un

ne

ek

k 1

13

3. Znów nie trze−

ba  znać  szczegółów.  Ważna  jest  wiado−
mość,  że  aby  wykorzystać  wspomniane
wcześniej dodatkowe linie portu szerego−
wego trzeba sięgnąć pod właściwe adre−
sy.

Przykładowo jeśli pod adres szesnast−

kowy 3FC, (czyli 3F8+2, gdzie 2 to wspo−
mniany offset) do najmłodszego bitu (D0)
wpiszemy jedynkę, czyli do rejestru wpi−
szemy liczbę binarną 00000001, to usta−
wimy  linię  DTR  portu  COM1.  Gdy  wpi−
szemy  tam  zero  –  powrócimy  do  stanu
spoczynkowego. Tak samo możemy ste−
rować  linią  RTS,  wpisując  pod  ten  sam
adres do bitu D1 jedynkę lub zero. Jedyn−
ka na miejscu D1 to w zapisie binarnym
00000010, czyli liczba 2.

Uważny  Czytelnik  domyślił  się  samo−

dzielnie, że można jednocześnie zmieniać
stany  obu  wyjść  DTR  i RTS.  Wpisanie
pod  adres  3FC  liczby  3,  czyli  binarnie
00000011  ustawi  oba  wyjścia;  wpisanie
00000010  wyzeruje  linię  DTR,  pozosta−
wiając ustawioną linię RTS, itd.

A więc  rejestr  o adresie  (AdresBazo−

wyPortu + 2) daje możliwość sterowania
liniami DTR i RTS danego portu.

Jak wspomniano, wyjście TxD w zasa−

dzie  służy  do  szeregowego  wysyłania
5...8  bitowych  danych  wpisywanych
przez  procesor  do  rejestru  znajdującego
się pod adresem bazowym (dla COM1 –
3F8H).  W stanie  spoczynku  na  lini−
i  TxD  występuje  napięcie  ujemne.  Ale
w zastosowaniach  nietypowych  często
po prostu ustawia się tę linię w jeden ze
stanów.  Ustawienie  na  wyjściu  TxD  na−
pięcia  dodatniego  jest  możliwe  przez

ustawienie siódmego bitu (D6), czyli wpi−
sanie  liczby  dwójkowej  01000000,  pod
adresem  (AdresBazowyPortu  + 3).  Póź−
niejsze  wpisanie  tam  zera  znów  zmieni
napięcie wyjściowe na ujemne itd...

Naturalnie  po  wpisaniu  tam  jedynki

wyjście TxD nie będzie wykorzystywane
w typowy sposób pokazany na rysunkach
2 i 5.

Aby  uzyskać  informacje  o stanie  lini−

i CTS, DSR, DCD i RI, wystarczy odczytać
bajt  spod  adresu  (AdresBazowy  Portu
+ 6), czyli na przykład dla portu COM1 –
będzie to adres (szesnastkowo) 3FE, czy−
li  właśnie  3F8+6.  Cztery  najstarsze  bity
zawierają informacje o stanie tych wejść
w momencie odczytu.

Podane  właśnie  wiadomości  mogą

w pierwszej  chwili  wydać  się  trudne,
szczególnie 

dla 

początkujących.

W rzeczywistości  wykorzystanie  ich  jest
niezmiernie proste, zwłaszcza za pomocą
QBasica.

Eksperymenty

Każdy  posiadacz  jakiegokolwiek  kom−

putera PC może od razu praktycznie wy−
korzystać  podane  właśnie  wiadomości.
Za  pomocą  łącza  szeregowego  PC−ta
można  sterować  wielu  urządzeniami
i zbierać  informacje  od  takich  urządzeń.
Do  pierwszych  fascynujących  ekspery−
mentów  wystarczy  elementarna  znajo−
mość języka QBasic. W ostatnich nume−
rach  EdW  przedstawiono  książki  „Przy−
gody  z komputerem  i bez  komputera”
oraz „QBasic nie tylko dla orłów”. Książ−
ki te pomogą nawet zupełnie początkują−
cym bezbolesne zapoznanie się z podsta−
wami  programowania.  A wiadomości
z niniejszego  artykułu  umożliwią  różno−
rodne wykorzystanie zalet portu szerego−
wego.

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

34

Rys. 13. Przestrzeń adresowa portu szeregowego.

Rys. 14. Schemat prostego układu do eksperymentów z portem szeregowym
komputera PC.

background image

ABP = &H3F8

OUT (ABP + 4), 3

IF (INP(ABP + 6) AND 16) = 16 THEN PRINT „CTS – plus” ELSE PRINT „CTS – minus lub masa”

IF (INP(ABP + 6) AND 32) = 32 THEN PRINT „DSR – plus” ELSE PRINT „DSR – minus lub masa”

IF (INP(ABP + 6) AND 64) = 64 THEN PRINT „RI – plus” ELSE PRINT „RI – minus lub masa”

IF (INP(ABP + 6) AND 128) = 128 THEN PRINT „DCD – plus” ELSE PRINT „DCD – minus lub masa”

END

background image

Na początek warto zapoznać się prak−

tycznie z działaniem poszczególnych lini−
i portu.

Na rry

ys

su

un

nk

ku

u 1

14

4 pokazano schemat naj−

prostszego  układu  do  eksperymentów
z portem szeregowym.

Zmontowany układ widać na fotografi−

i. Jeśli w komputerze występują złącza 9−
pinowe, należy skorzystać z tabeli 1 i ry−
sunku 7.

Programowanie

Dostęp  do  wspomnianych  adresów

z poziomu  języka  QBasic  jest  dziecinnie
prosty.  Najpierw  należy  podłączyć  do
wolnego  portu  szeregowego  układzik
o schemacie  z rry

ys

su

un

nk

ku

u  1

14

4.  Jeden  z por−

tów  szeregowych  jest  zwykle  zajęty
przez myszkę. Trzeba sprawdzić lub zapy−
tać znajomego komputerowca, który port
jest zajęty, a który wolny. Chodzi o usta−
lenie  adresu  bazowego  wolnego  portu.
U piszącego te słowa port COM2 obsłu−
guje  myszkę,  więc  do  eksperymentów
posłuży  port  COM1  o adresie  szesnast−
kowym 3F8.

Następnie  trzeba  uruchomić  interpre−

ter QBasic. Nie należy uruchomiać QBa−
sica spod Windows, bo próby się nie uda−
dzą. Z poziomu DOSa wykonuje się to po
prostu pisząc:

i naciskając  enter.  Jeśli  ten  sposób  nie
uruchomi  basica,  należy  podać  ścieżkę
dostępu, najczęściej będzie to:

i nacisnąć  enter,  a za  chwilę  klawisz
esc(ape), by usunąć z ekranu informację
wstępną. Jeśli i to nie zadziała, trzeba po−
prosić  o pomoc  przy  pierwszym  urucho−
mieniu  QBasica  kogokolwiek,  kto  choć
trochę zna się na komputerze.

Od  chwili  włączenia  komputera,  na  li−

niach wyjściowych portu powinny wystą−
pić  napięcia  ujemne,  czyli  na  początku
świecić się będą diody czerwone.

Teraz  można  wpisać  następujący  pro−

gramik:

i nacisnąć klawisz oznaczony F5 (lub wy−
brać  z górnego  menu  Run,  a potem
Start).

W pierwszej linii zadeklarowaliśmy ad−

res  bazowy  naszego  wolnego  portu,  do
którego jest dołączony układzik testowy.
Ten  adres  to  3F8.  Znak  & wskazuje  że
jest  to  tak  zwana  stała  liczbowa,  a litera
H przez  adresem  3F8  –  że  jest  to  liczba
szesnastkowa  (Hexadecimal).  Jeśli  ktoś
wykorzystuje port o innym adresie bazo−

wym, przypisze stałej ABP aktualną war−
tość, reszta programu zostaje bez zmian.

W drugiej linii, poleceniem OUT, każe−

my  do  rejestru  wyjściowego  o adresie
(AdresBazowyPortu+4)  zapisać  liczbę  3,
czyli w zapisie binarnym 00000011. Tym
samym  ustawiamy  bity  odpowiedzialne
za stan linii wyjściowych DTR i RTS.

Po  naciśnięciu  klawisza  F5  uruchomi−

my  program  –  zmienimy  stan  lini−
i DTR i RTS, zaświecą się dwie żółte dio−
dy.

Po  naciśnięciu  dowolnego  klawisza

wrócimy do ekranu QBasica.

Zmieńmy drugą linię programu:

Po naciśnięciu F5, znów zaświecą się

wszystkie diody czerwone.

Po  naciśnięciu  jakiegokolwiek  klawi−

sza znów zmodyfikujemy program:

Druga  linia  programu  ustawi  wyjścia

DTR  i RTS,  a trzecia  linia,  wpisując  pod
adres  (AdresBazowyPortu+3)  liczbę  64
czyli dwójkowo 01000000, zmieni stan li−
nii TxD, czyli zaświeci trzecią żółtą diodę.

I to wszystko!
Jak  się  przekonałeś,  sterowanie  linia−

mi RTS, DTR i TxD jest naprawdę dziecin−
nie łatwe.

Wpisz jeszcze krótki programik:

Diody  sterowane  przez  linię  DTR  po−

winny  zapalać  się  na  przemian  (z  pręd−
kością  zależną  od  częstotliwości  zegara
taktującego  twego  komputera),  aż  do
czasu  naciśnięcia  jakiegokolwiek  klawi−
sza. Zmień w linii 40 wpisywaną wartość
z 0 na 2 i uruchom program – będą migać
obie diody. 

Aby  odczytać  stan  linii  wejściowych

CTS,  DSR,  DCD  i RI  ustaw  przynajmniej
na jednym z wyjść wyjść napięcie dodat−
nie – przełączniki trzeba zasilić napięciem
dodatnim.  To  napięcie  zostanie  podane
przez  diodę(y)  na  przełączniki.  W zależ−
ności  od  stanu  przełączników,  na  po−
szczególnych  wejściach  pojawi  się  albo
napięcie dodatnie (przełącznik zwarty), al−
bo  napięcie  masy  (przełącznik  zamknię−
ty). Odczytaj zawartość rejestru spod ad−

resu (AdresBazowyPortu+6) i zinterpretuj
wyniki.  Pomoże  ci  w tym  programik
umieszczony na dole strony.

W drugiej  linii  powyższego  programu

ustawiłeś  dodatnie  napięcie  na  liniach
DTR i RTS. Kolejne linie sprawdzają stany
poszczególnych  bitów  rejestru  o adresie
(AdresBazowyPortu+6) i wypisują na ek−
ranie,  czy  na  daną  linię  podano  napięcie
dodatnie, czy nie. Wykorzystałeś funkcję
INP.  Funkcja  ta  odczytała  cały  bajt  infor−
macji spod podanego adresu. Za pomocą
iloczynu AND kolejno sprawdzane są sta−
ny czterech najstarszych bitów tego bajtu
i w zależności  od  wyniku,  wypisywany
jest  stosowny  komunikat  (pamiętaj,  że
np. 16 to binarnie 00010000, więc funk−
cja AND sprawdzi wartość bitu D4, wska−
zującego, jak podaje rysunek 13, stan linii
CTS).

W ten prosty sposób nie możesz jed−

nak  odczytać  stanu  linii  RxD.  Niewielka
strata, cztery linie wejściowe to też spo−
ro.

Podane  krótkie  programy  pokazują,

w jak  prosty  sposób  steruje  się  liniami
wyjściowymi  i

odczytuje  stan  lini−

i  wejściowych.  Otwiera  ci  to  drogę  do
najróżniejszych  zastosowań,  oczywiście
nie  tylko  do  zapalania  i gaszenia  trzech
diod LED.

Jeśli do tej pory nie splamiłeś się pro−

gramowaniem i coś w podanych progra−
mikach nie jest dla ciebie jasne, powinie−
neś  sięgnąć  do  książek  o Basicu,  przed−
stawionych  w EdW  1/97  i 3/97  (kupony
rabatowe jeszcze zachowują ważność).

Na życzenie Czytelników redakcja mo−

że przedstawić praktyczne przykłady wy−
korzystania portu szeregowego.

((rre

ed

d))

10 ABP = &H3F8

20 OUT (ABP + 4), 1

30 FOR N = 1 TO 1000: NEXT N

40 OUT (ABP + 4), 0

50 FOR N = 1 TO 1000: NEXT N

60 IF INKEY$ <> „” THEN END

70 GOTO 20

ABP = &H3F8

OUT (ABP+4),3

OUT (ABP+3),64

ABP = &H3F8

OUT (ABP+4),0

ABP = &H3F8

OUT (ABP + 4), 3

c:\dos\qbasic

qbasic

K

Ko

om

mp

pu

ut

te

er

ry

y

E

LEKTRONIKA DLA WSZYSTKICH 6/97

36