Mikrokontrolery cz18.pdf

(913 KB) Pobierz
1128257 UNPDF
Też to potrafisz
Mikrokontrolery?
W poprzednim odcinku
zapoznaliście się
drodzy Czytelnicy z prostymi
układami I/O,
dzięki którym możliwe
jest sterowanie zewnętrznymi
urządzeniami za pomocą
mikrokomputerka edukacyjnego.
W przykładach wykorzystałem
najpopularniejsze układy serii TTL
(HCT−TTL), toteż zastosowanie
ich w praktycznych układach nie
powinno nastręczać problemów.
Tym razem mam zamiar
przedstawić bardziej rozbudowane
układy , umożliwiające np.
drukowanie na typowej drukarce
komputerowej, bądź wykorzystanie
szybkiej transmisji równoległej
z urządzenia zewnętrznego
do komputerka edukacyjnego.
To takie proste...
Część 18
Programowane układy wejścia−wyjścia
cała technika komputerowa, oczywiście ta z prawdziwego
zdarzenia, czyli z przełomu lat 70−tych i 80−tych. Mowa będzie
o scalaku oznaczanym przez producentów jako 8255 – programowany
układ wejścia/wyjścia z łączem równoległym. Zanim jednak przejdę do
części praktycznej i przedstawię konkretne schematy oraz listingi pro−
cedur obsługi układu 8255 wypada mi krótko przedstawić sam układ,
tak aby nikt nie czuł niedosytu wiedzy w tym zakresie. Jeżeli zaś któryś
z Was drodzy Czytelnicy jest na tyle niecierpliwy, że nie może się pow−
strzymać od skonfrontowania wiedzy praktycznej w rzeczywistością,
może przejść od razu do akapitu “Drukowanie z komputerka”.
8255 – Dużo funkcji niewielkim kosztem
Bohater naszego dzisiejszego odcinka to jegomość umieszczony w
40−nóżkowej typowej obudowie DIL. Dzięki temu zastosowania i
montaż tego układu na płytce drukowanej, podobnie jak procesorów
8051/2 nie nastręcza trudności. Ma to szczególnie znaczenie bo w
dzisiejszej erze miniaturyzacji, na rynku rozpanoszyły się wszelkiego
rodzaju zminiaturyzowane obudowy, które niejednego amatora elek−
tronika mogą przyprawić o zawrót głowy.
W czasach, kiedy technika komputerowa PC wkraczała pod strzechy,
kiedy to IBM wyprodukował pierwszy komputer osobisty, a w chwilę
później pojawiło się na rynku wielu innych producentów sprzętu, w
układach elektronicznych komputerów PC stosowano układy 8255
bardzo często. Pierwszym zastosowaniem była obsługa łącza równo−
ległego standardu Centronics, przeznaczonego pier−
wotnie dla potrzeb drukowania. W chwili obecnej
kiedy wszysktie układy I/O komputera PC znalazły
się na “płycie głównej”, układ 8255 wraz z całą
rodziną wcześniej produkowanych scalaków z
mikroprocesorowej rodziny Intel’a znalazł swoje
miejsce z raczej został “wcielony” do tzw. układów
“chip set’u” płyty komputera.
Pomimo tego, że w dzisiejszych komputerach PC
do sterowania portem równoległych kostki 8255 nie
są już wykorzystywane, to jednak można je spotkać
w przemysłowych wersjach komputerów
sterujących − także PC. Stary, ale sprawdzony stan−
dard przyjął się tak dobrze jak poczciwa już
pięćdziesiątka−jedynka i na razie nic nie zapowiada
jej upadku. Układ 8255 jest nadal produkowany i
można go nabyć prawie w każdym sklepie ze spec−
jalistycznymi artykułami elektronicznymi. Koszt kost−
ki mieszczący się na poziomie około 5..10 zł nie jest
kwotą wygórowaną, a pamiętając że układ za tak
niską cenę oferuje wiele możliwości, dostajemy go
praktycznie za darmo.
Najprościej rzecz mówiąc, układ 8255 zawiera trzy
uniwersalne 8−bitowe porty (PA, PB i PC), z których
każdy może być skonfigurowany jako wejście, wyjś−
cie a w pewnych trybach spełniać rolę mieszaną,
nawet z możliwością generowania przerwań do pro−
cesora. Dodatkowo, oprócz wspomnianych
Rys.1 Topografia wyprowadzeń układu 8255 i jego schemat funkcjonalny
E LEKTRONIKA DLA WSZYSTKICH 11/98
33
U kład który mam zamiar dzisiaj przedstawić jest tak stary jak
1128257.018.png 1128257.019.png 1128257.020.png 1128257.021.png
Też to potrafisz
Rys.2 Sposób dołączenia kostki 8255 do komputerka edukacyjnego.
rejestrów portów PA, PB i PC układ 8255 zawiera tzw. czwarty rejestr
– konfiguracyjny, dzięki któremu możliwe jest ustalenie, jak ma pra−
cować cały układ, czy np. port PA ma być ustawiony jako wejściowy,
czy wyjściowy itp.
Dołączenie układu do komputerka edukacyjnego (generalnie do pro−
cesorów 8051/2) jest bardzo proste, bowiem 8255 sterowany jest
sygnałami kompatybilnymi z tymi generowanymi przez mikrokontrolery
serii MCS−51. Sposób dołączenia kostki do komputerka edukacyjnego
omówię za chwilę. Tymczasem na rys.1 przedstawiam rozkład
wyprowadzeń kostki 8255.
Jak widać do połączenia układu 8255 z urządzeniami zewnętrznymi
służą linie PA0...PA7, PB0...PB7 i PC0...PC7. To w jaki sposób usta−
wione są te linie oraz ich funkcje, determinuje specjalne słowo (bajt)
konfiguracyjne (wspomniany czwarty rejestr) − zaszyte wewnątrz
układu 8255. Jak te słowo zapisywać, innymi słowy jak konfigurować
cały układ powiem za chwilę. Na razie wyjaśnijmy sobie znaczenie
poszczególnych wyprowadzeń układu. Co prawda jest ich aż 40−ci ale
jak się za chwilę przekonasz, drogi Czytelniku, nie jest to wcale dużo.
D0...D7 – linie dołączane do szyny danych systemu mikroproce−
sorowego. Dzięki nim, możliwa jest transmisja danych z procesora nad−
zorującego do i z układu 8255. W przypadku komputerka edukacyjnego
AVT−2250 linie te powinno dołączyć się do szyny adresowej D0...D7
komputerka – wyprowadzenia: 22,24,26,27,25,23,21,19 złącza BUS
AVT−2250
/CS – sygnał wejściowy wyboru – selekcji układu przez procesor.
Podanie logicznego zera na to wejście umożliwia transmisję danych
poprzez linie D0...D7. W układzie komputerka edukacyjnego sygnał ten
może być dołączony do jednego z wyjść dekodera adresowego IO3 lub
IO4, tak jak w przykładach z poprzedniego odcinka klasy mikroproce−
sorowej.
/WR – sygnał zapisu danych do układu 8255 przez procesor
zewnętrzny. Podanie stanu niskiego na te wejście powoduje zapisanie
danych z szyny D0...D7 do wewnętrznych rejestrów układu 8255. W
układzie komputerka edukacyjnego sygnał ten łączy się bezpośrednio z
końcówką /WR procesora (lub pinem 17 złącza BUS na płytce głównej
AVT−2250).
/RD – sygnał odczytu danych z układu 8255. Podanie stanu niskiego
na te wejście spowoduje odczytanie informacji z wewnętrznych
rejestrów układu 8255. Podobnie jak w przypadku sygnału zapisu, wejś−
cie to powinno się dołączyć do wyjścia /RD procesora 8051 (lub do pinu
34 złącza BUS komputerka AVT−2250).
A1, A0 – linie sterujące wyborem jednego z czterech rejestrów
wewnętrznych układu 8255. W zależności od poziomów na tych liniach
podczas cyklu odczytu/zapisu przez procesor wybrany zostaje jeden z
trzech rejestrów wyjściowych PA, PB, PC bądź rejestr konfiguracyjny.
RESET – wejście zerowania układu 8255. Podanie stanu wysokiego
na to wejście spowoduje wyzerowanie rejestrów wewnętrznych
(rejestru sterującego) układu 8255 i ustawienie portów PA, PB, PC jako
wejściowych. Taki sam stan układu 8255 ustawiany jest automatycznie
po każdorazowym włączeniu zasilania.
PA0...PA7 – linie 8−bitowego uniwersalnego portu PA (pierwszego
portu)
PB0...PB7 – j/w lecz portu PB (drugiego portu)
PC0...PC7 – j/w lecz portu PC (trzeciego portu)
Na rys.2 przedstawiony jest najprostszy sposób dołączenia układu
8255 do komputerka AVT−2250. Jeżeli śledzisz uważnie cykl klasy
mikroprocesorowej, w szczególności jeśli zapoznałeś się z poprzednim
odcinkiem o prostych układach wejścia/wyjścia, z pewnością
stwierdzisz, że sposób połączenia jest oczywisty i analogiczny z
układami z poprzedniego odcinka klasy.
I tak linie danych D0...D7 dołączamy do szyny danych komputerka
BUS – D0...D7. Linie sterujące zapisem /WR i odczytem /RD do
odpowiednich linii złącza BUS (/WR i /RD). Sygnał wyboru układu /CS
dołączamy bezpośrednio do wyjścia dekodera adresowego w układzie
komputerka np. IO4, natomiast linie wyboru rejestru do analogicznych
linii adresowych szyny adresowej komputerka A0 i A1. Prawda że
proste! I to już wszystko, moi drodzy, można zająć się pro−
gramowaniem układu. Aha byłby zapomniał o konieczności dołączenia
zasilania, które przyłącza się trochę nietypowo (uwaga dla tych którzy w
tym momencie jedną ręką i jednym okiem chcą natychmiast zabrać się
za wykonanie płytki drukowanej), mianowicie +5V dołącza się do
końcówki 26 ( a nie jak typowo w obudowach DIL do pinu 40) a masę
do końcówki 7.
Projektując płytkę lub umieszczając układ na “uniwersalce” warto
zblokować linię zasilającą tuż przy układzie 8255 kondensatorem 100nF.
W ten sposób po dołączeniu układu do komputerka mamy do dys−
pozycji trzy 8−mio bitowe porty PA, PB i PC, do których możemy
dołączyć dowolne urządzenia.
Wnikliwy czytelnik z pewnością zauważy konsekwencję z zas−
tosowania dwóch linii adresowych A0 i A1 w układzie 8255 ze względu
na sterowanie 4−roma rejestrami wewnętrznymi układu 8255. Tabela 1
Tabela 1
A1
A0
wybrany rejestr 8255
0
0
rejestr portu PA
0
1
rejestr portu PB
1
0
rejestr portu PC
1
1
rejestr kontrolny (CTRL)
– konfiguracji układu
34
E LEKTRONIKA DLA WSZYSTKICH 11/98
1128257.001.png
Też to potrafisz
przedstawia znaczenie sygnałów A0 i A1 w odniesieniu do wyboru jed−
nego z czterech rejestrów wewnętrznych kostki 8255.
W połączeniu ze sterowaniem sygnałem wyboru /CS poprzez linię
np. IO4 poszczególne rejestry 8255 będą widziane przez procesor kom−
puterka jako adresy:
PA – adres A000h (A1,A0 = 0,0)
PB – adres A001h (A1,A0 = 0,1)
PC – adres A002h (A1,A0 = 1,0)
CTRL – adres A003h (A1,A0 = 1,1)
Analogicznie, jeśli podłączylibyśmy linię wyboru /CS np. do sygnału
IO3 komputerka to wtedy jak się zapewne domyślasz, adresy
wyglądałyby odpowiednio tak: 8000h, 8001h, 8002h, 8003h.
Toteż, jeżeli po włączeniu zasilania komputerka z dołączonym do
niego układem 8255, procesor (51−ka) wykona instrukcję:
MOV DPTR, #A000h ; adres rejestru portu PA
MOVX A, @DPTR ; odczyt rejestru PA z 8255
to w efekcie w akumulatorze znajdzie się liczba której poszczególne
bity będą zgodne z poziomami sygnałów na liniach PA0...PA7 układu
8255. Podobnie można będzie odczytać linie PB0...PB7 w następujący
sposób:
MOV DPTR, #A001h
MOV A, @DPTR
i rejestru C
Rys.3 Układ 8255 w trybie pracy 0
MOV DPTR, #A002h
MOV A, @DPTR
W trybie programowania układu najstarszy bit (7) rejestru powinien
być zawsze ustawiony (“1”). Znaczenie pozostałych bitów jest
następujące:
O ile rejestr PA (a także PB) może pełnić rolę wejść lub wyjść
cyfrowych (nie jest możliwe aby niektóre bity tych rejestrów były wejś−
ciami a inne wejściami jednocześnie – w tej samej chwili), o tyle rejestr
PC ma szczególne dodatkowe właściwości. Otóż może on być tak
skonfigurowany (za pomocą rejestru kontrolnego CTRL), że w jed−
nocześnie z portu PC można odczytywać dane lub je zapisywać.
Oczywiście w takim przypadku wybrane linie PC będą pracowały
wyłącznie jako wejścia, pozostałe zaś jako wyjścia. Fizycznie w układzie
8255 w odróżnieniu do rejestrów PA i PB, które widziane są jako całe
8−mio bitowe rejestry, rejestr PC może być modyfikowany w dwóch
“połówkach”. I tak starsze cztery bity rejestru PC7...PC4 będą
oznaczane jako PCa młodsze PC3...PC0 jako PCb. Obrazowo wszystkie
3 rejestry portów przedstawiam poniżej.
bit 7 – w trybie programowania układu 8255 zawsze “1”.
bity D6 i D5 – określają wybór trybu pracy układu i rejestrów PA oraz
PCa, i tak:
00 = tryb 0
01 = tryb 1
10 lub 11 = tryb 2. Znaczenie poszczególnych trybów
omówię za chwilę.
bit D4 – określa kierunek pracy linii portu PA i tak
1 = PA jako wejście
0 = PA jako wyjście cyfrowe
W trybie 2 pracy układu 8255, bit ten nie ma znaczenia.
bit D3 – określa kierunek pracy linii portu
PCa (PC7...PC4) i tak
1 = PCa jako wejście
0 = PCa jako wyjście cyfrowe
bit D2 – określa wybór trybu pracy rejestru
PB, i tak:
0 = tryb 0
1 = tryb 1
bit D1 – określa kierunek pracy linii portu
PB, i tak:
1 = PB jako wejście
0 = PB jako wyjście cyfrowe
bit D0 – określa kierunek pracy linii portu
PCb (linie PC3...PC0) i tak
1 = PCb jako wejście
0 = PCb jako wyjście
Rejestr PA − końcówki 1−4 i 37−40 układu 8255
nr bitu: 7
6
5
4
3
2
1
0
bity
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
PA
Rejestr PB − końcówki 18−25 układu 8255
nr bitu: 7
6
5
4
3
2
1
0
bity
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
PB
Rejestr PC − końcówki 10−17 układu 8255
nr bitu: 7
6
5
4
3
2
1
Jak widać regułą jest, że ustawienie bitów
D0, D1, D3, D4 powoduje ustawienie
odpowiadających im portów jako wejścia,
natomiast wyzerowanie tych bitów powodu−
je ustawienie tych portów jako wyjścia
cyfrowe. W najprostszym trybie pracy
mamy zatem aż 16 kombinacji ustawień
portów PA, PB i dwóch połówek portu PC.
TRYB 0
Wspomniane tryby pracy (0, 1 lub 2) umożliwiają wybór sposobu
działania całego układu. Dla uproszczenia zajmijmy się na razie najprost−
szym trybem 0. W trybie tym jak
powiedziałem wcześniej każdy z
rejestrów PA, PB oraz dwóch połówek PC
(PCa i PCb) może pracować jako wejście
lub wyjście cyfrowe. Dane przesyłane sa z
szyny danych D0...D7 systemu mikropro−
cesorowego do rejestrów portu (ustaw−
0
bity
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
PC
rejestr PCa rejestr PCb
Ważną informacją jest to że odczyt rejestru kontrolnego CTRL (pod
adresem A003h) jest, uwaga, zabroniony! Rejestr ten można tylko
zapisywać. A czym go zapisywać? Otóż zapoznamy się teraz z budową
tego rejestru i jego bitami oraz ich znaczeniem dla pracy kostki 8255.
Rejestr kontrolny 8255 (CTRL) w trybie konfigurowania
nr bitu: 7
6
5
4
3
2
1
0
bity
1
D6
D5
D4
D3
D2
D1
D0
CTRL
E LEKTRONIKA DLA WSZYSTKICH 11/98
35
1128257.002.png
Też to potrafisz
bajt sterujący
zapis
port
port
port PC
Aby ułatwić konfigurowanie układu w trybie pracy 0
w praktycznych zastosowaniach, poniżej zamieszczam
tabelę 2, w której zapisane sa wszystkie wartości
rejestru kontrolnego CRTL, które dają jeden z 16
sposób ustawień portów PA, PB i PC.
W tabeli dla zwiększenia czytelności zapisałem
wartość wpisywaną do rejestru kontrolnego CTRL w
postaci binarnej oraz szesnastkowej. Dodatkowo
rozdzieliłem spacjami niektóre bity w zapisie binarnym,
tak abyś mógł łatwiej przeanalizować sposób ustaw−
ienia lub zerowania poszczególnych bitów zgodnie z
wcześniejszym opisem.
Teraz jeżeli chcemy ustawić porty PA, PB i PC jako
wyjścia (np. do sterowania 24−oma diodami LED)
wystarczy sięgnąć do tabeli i odczytać liczbę 80h jako
stosowną do zapisu do rejestru konfiguracyjnego
układu 8255. Potem wystarczy wykonać ciąg instrukcji:
CTRL (binarnie)
hex
PA
PB
linie PC7...PC4
linie PC3...PC0
100 1 1 0 1 1
9Dh
WE
WE
WE
WE
100 0 1 0 1 1
8Dh
WY
WE
WE
WE
100 1 1 0 0 1
99h
WE
WY
WE
WE
100 0 1 0 0 1
89h
WY
WY
WE
WE
100 1 0 0 1 1
93h
WE
WE
WY
WE
100 0 0 0 1 1
83h
WY
WE
WY
WE
100 1 0 0 0 1
91h
WE
WY
WY
WE
MOV A, #80h
MOV DPTR, #A003h
MOVX @DPTR, A
100 0 0 0 0 1
81h
WY
WY
WY
WE
;i układ 8255 skon−
figurowany
100 1 1 0 1 0
9Ah
WE
WE
WE
WY
Teraz jeżeli chcemy np. “zapalić” linie portu PA, to
wystarczy wydać polecenie
100 0 1 0 1 0
8Ah
WY
WE
WE
WY
100 1 1 0 0 0
98h
WE
WY
WE
WY
MOV A, #255
MOV DPTR, #A000h
MOVX @DPTR, A
100 0 1 0 0 0
88h
WY
WY
WE
WY
100 1 0 0 1 0
92h
WE
WE
WY
WY
W praktyce przy pisaniu programu źródłowego (kom−
puterowcy) warto posłużyć się deklaracją EQU dla
zdefiniowania poszczególnych portów układu 8255.
Wtedy nie trzeba będzie za każdym razie pamiętać, co
jakie adresy mają porty PA, PB czy PC. W naszym
przykładzie można to zrobić w sposób następujący:
100 0 0 0 1 0
82h
WY
WE
WY
WY
100 1 0 0 0 0
90h
WE
WY
WY
WY
100 0 0 0 0 0
80h
WY
WY
WY
WY
IO_PA
EQU
A000h
;deklarac−
Tabela 2
ja adresu portu PA
IO_PB
EQU
A001h
;j/w lecz
ionych jako wyjścia) lub odczytywane poprzez tą szynę do procesora w
sposób niezsynchronizowany.
Rys.3 obrazuje ideę pracy układu 8255 w trybie 0.
W przypadku kiedy procesor ustawi np. rejestr PA jako wyjście
cyfrowe, to zapisując potem ten rejestr za pomocą instrukcji:
portu PB
IO_PC
EQU
A002h` ;j/w lecz portu PC
IO_CTRL EQU
A003h
;wreszcie
rejestru kontrolnego 8255
MOVX @DPTR,A
Teraz wystarczy odpowiednio i elegancko ich używać, np. tak:
powoduje że dane z szyny danych D0...D7 pojawią się na liniach
portu PA7...PA0, zgodnie z daną umieszczoną w akumulatorze Acc). W
przypadku zaś odwrotnym, kiedy np. rejestr PA pracuje jako wejściowy,
odczyt rejestru za pomocą instrukcji
MOV A, #91h
;ustawiam: PA i PCb jako WE, PB i PCa
jako WY
MOV DPTR, #IO_CTRL
;adres rejestru kontrolnego
MOVX @DPTR, A
;i skonfigurowanie układu
MOVX A,@DPTR
MOV DPTR, #IO_PA
;adres rejestru PA
MOVX A, @DPTR
;i odczyt linii PA7...PA0
spowoduje pojawienie się na liniach D0...D7 szyny danych (a potem
w akumulatorze Acc) stanów linii portu PA7...PA0).
MOV DPTR, #IO_PB
;adres rejestru PB
MOV A, #55h
;ustaw naprzemiennie linie PB7...PB0
jako “01010101”
MOVX @DPTR, A
I tak dla przykładu zapiszmy słowo sterujące CTRL układu 8255 w taki
sposób żeby np.
port PA i PC pracowały jako WYJŚCIA
port PB jako WEJŚCIE,
;i zapis do rejestru PB
......
;itd.
Na szczególną uwagę zasługuje rejestr PC układu 8255. Otóż
możliwe jest selektywne ustawianie bądź zerowanie poszczególnych
bitów tego rejestru. Do tego celu służy zapis do rejestru kontrolnego
słowa z wyzerowanym najstarszym bitem D7. Poniżej przedstawiam
strukturę słowa rejestru CTRL dla takiego przypadku sterowania.
patrząc na opis bitów rejestru (wyżej) zapiszemy:
D6, D5 i D2 będą = 0 (tryb 0)
D4 = 0 to PA będzie wyjściem
D3 = 0 to PCa – wyjście
D1 = 1 to PB – wejście
wreszcie
D0 = 0 to PCb jako wyjście (podobnie jak PCa)
W trybie tym najstarszy bit (7) rejestru powinien być wyzerowany.
Znaczenie pozostałych bitów jest następujące:
bit 7 – zawsze “0”.
bity D6, D5, D4 – nie używane (dowolna wartość, zazwyczaj “0”)
zatem aby tak skonfigurować układ 8255 należy wykonać sekwencję
instrukcji:
MOV A, #10000010b
;bity D7,
Rejestr kontrolny 8255 (CTRL) w trybie modyfikacji rejestru PC
D1 = 1, reszta “0”
MOV DPTR, #A003h ;zakładam,
że /CS jest dopięty do /IO4 komputerka
MOVX @DPTR, A
nr bitu: 7
6
5
4
3
2
1
0
; i
bity
1
D6
D5
D4
D3
D2
D1
D0
CTRL
zapisanie konfiguracji do układu 8255
36
E LEKTRONIKA DLA WSZYSTKICH 11/98
1128257.003.png
Też to potrafisz
Rys.4 Znaczenie linii portów PA,PB i PC w trybie pracy 1.
zewnętrznego, pozwolą na zilustrowanie tego zagad−
nienia w sposób wystarczający do naszych zas−
tosowań w przyszłych wspólnie omawianych
układach.
TRYB 1
W tym trybie pracy dane mogą być przesyłane do i z
innych urządzeń poprzez porty PA lub PB. W tym try−
bie transmisja jest jednokierunkowa, tzn. dane mogą
być odczytywane przez cały czas do kolejnej rekonfig−
uracji układu 8255 lub wyłącznie zapisywane. Niektóre
z linii portu PC są w tym trybie przyporządkowane reje−
strowi PA lub PB, a służą do przesyłania sygnałów syn−
chronizujących transmisję, między rejestrami PA lub
PB a urządzeniem zewnętrznym. Rejestr PA z
odpowiednimi wybranymi liniami portu PC (PCa), które
synchronizują transmisję nazywa się grupą A, natomi−
ast rejestr PB z pozostałymi liniami portu PC (PCb) –
grupą B.
Tryby pracy linii grupy A i grupy B jest pro−
gramowany niezależnie. Toteż gdy jeden z rejestrów
PA lub PB wraz z odpowiednimi liniami portu PC może
pracować w trybie 1 to tryb pracy drugiego i linii PC
należącymi wraz z nimi do grupy może pracować w
trybie 1 lub 0. Rys.4 pokazuje jak układ 8255 pracuje w
trybie 1.
Jak wspomniałem port PC generuje na liniach
dodatkowe sygnały synchronizujące transmisję
danych pomiędzy 8255 a urządzeniem zewnętrznym.
znaczenie sygnałów tych jest następujące:
a) przy transmisji z układu 8255 do urządzenia
zewnętrznego
/OBF – (ang. “output buffer full”) sygnał ten przyj−
muje poziom niski podczas całego cyklu przyjęcia
danej z procesora (od narastającego zbocza sygnału
/WR) do odebrania danej przez układ zewnętrzny (który sygnalizuje
potwierdzenie odebrania znaku na linii /ACK)
/ACK – (ang. “acknowledge”) urządzenie zewnętrzne po odebraniu
znaku z portu (np. PA) potwierdza zakończenie odczytu wystawiając
poziom niski na tej linii, co 8255 odbiera jako zakończenie transmisji.
bity D3, D2, D1 – określają numer ustawianego lub zerowanego bitu
rejestru PC,
i tak:
kolejność “000” oznacza wybór bitu D0 (linia PC0)
kolejność “001” oznacza wybór bitu D1 (linia PC1)
kolejność “010” oznacza wybór bitu D2 (linia PC2)
kolejność “011” oznacza wybór bitu D3 (linia PC3)
kolejność “100” oznacza wybór bitu D4 (linia PC4)
kolejność “101” oznacza wybór bitu D5 (linia PC5)
kolejność “110” oznacza wybór bitu D6 (linia PC6)
kolejność “111” oznacza wybór bitu D7 (linia PC7)
bit D0 – powinien zawierać “1” jeżeli chcemy wybrany bit (linię portu)
rejestru PC ustawić lub “0” − jeżeli wyzerować
Rys.5 Zależności czasowe sygnałów synchronizacji transmisji podczas
odczytu danej (a) przez urządzenie zewnętrzne oraz zapisu (b) danej do
układu 8255 przez te urządzenie
Przykład: zapisaliśmy wcześniej w rejestrze PC następujące stany:
“10101010”,
teraz chcemy wyzerować także linię PC7. należy więc wydać
instrukcję:
MOV DPTR, #IO_CTRL
MOV A, #00001110b
;zeruj linię PC7
MOX @DPTR, A
;zapis do rejestru CTRL 8255
i gotowe! Selektywna modyfikacja bitów rejestru C możliwa jest
tylko w trybie 0 pracy rejestrów PA lub PB. Jeżeli np. rejestr PA pracu−
je w trybie 1 lub 2, a rejestr PB w trybie 0 to można modyfikować
jedynie bity rejestru PCb (z grupy B) i odwrotnie, dla PB pracującego w
trybie 1, a PA w trybie 0, modyfikowalne są tylko bity PCa.
Tryby 1 i 2 pracy układu 8255 nie są tak proste jak tryb 0. Dzięki nim
jednak możliwa jest synchronizacja transmisji pomiędzy układem 8255
a urządzeniem zewnętrznym. Można powiedzieć, ze w praktyce trybu 0
używa się kiedy po prostu chcemy sterować zewnętrznymi urządzenia−
mi dołączonymi (poprzez układy pośredniczące) do linii portów PA, PC
czy PC, lub także odczytywać stany tych linii w dowolnym momencie.
Istotną informacją jest to że w trybie 0 informacja zapisana do każdego
z rejestrów portów PA, PB, PC jest zapamiętywana do kolejnej mody−
fikacji wybranego rejestru. Natomiast w przypadku odczytu, rejestr
danego portu jest przezroczysty dla danych przesyłanych z urządzenia
zewnętrznego i nie zapamiętuje ich.
Natomiast tryby 1 i 2 używane są do bardziej złożonych zastosowań,
takich właśnie jak transmisja pomiędzy inteligentnymi układami pery−
feryjnymi, takimi jak np. drukarka, komputer, inny układ oparty o 8255
lub podobny. Zagadnienie jest bardzo rozbudowane, dlatego poniżej
skupię się do skróconego omówienia sposobu działania układu 8255 w
tych trybach. Przedstawione zaś w dalszej części artykułu przykłady
praktycznego zastosowania kostki 8255 w celach współpracy ze zwykłą
drukarką komputerową oraz do transmisji danych z innego urządzenia
E LEKTRONIKA DLA WSZYSTKICH 11/98
37
1128257.004.png 1128257.005.png 1128257.006.png 1128257.007.png 1128257.008.png 1128257.009.png 1128257.010.png 1128257.011.png 1128257.012.png 1128257.013.png 1128257.014.png 1128257.015.png 1128257.016.png 1128257.017.png
Zgłoś jeśli naruszono regulamin