Układ uniwersalnego, równoległego portu wejścia/wyjścia 8255
Wstępne wiadomości o układzie
Układ 8255 jest programowalnym równoległym portem wejścia/wyjścia. Jego polski odpowiednik to MCY7855, zgodny w zakresie topologii wyprowadzeń, parametrów elektrycznych jak i czasowych. Na Rys. 1 przedstawiono ten układ wraz z nazwami sygnałów.
Rys. 1. Topologia wyprowadzeń układu 8255 (MCY 7855)
Uaktywnienia układu 8255 dokonuje się za pomocą trzech sygnałów /CS, A0 i A1. Zasadniczym sygnałem uaktywniającym układ jest sygnał /CS (ang. Chip Select), który należy ustawiać w stan "0" logicznego. Gdy /CS=1, trójstanowe wzmacniacze buforowe odłączają układ od magistrali danych mikroprocesora. Wyprowadzenia D0-D7 są wtedy w stanie tzw. wysokiej impedancji. Sygnały A0 i A1 umożliwiają adresowanie jednego z trzech portów A, B i C, albo rejestru sterującego; przy adresowaniu rejestru sterującego jest możliwe tylko wpisanie do niego słowa sterującego, natomiast nie jest możliwe odczytanie tego rejestru. Sygnał /RD=0 umożliwia czytanie zawartości zaadresowanego portu przez mikroprocesor; natomiast /WR=0 umożliwia wpisanie z magistrali danych procesora na zaadresowany port. Sygnał wejściowy RESET - jak zwykle zeruje wszystkie rejestry elementu 8255.
Wszystkie kombinacje sygnałów sterujących oraz wykonywane dzięki nim operacje zobrazowano na Rys. 2. Znaki X oznaczają, że sygnał może mieć dowolną wartość.
Rys. 2. Kombinacje sygnałów sterujących układem 8255
Programowalność układu 8255 oznacza, że jego przeznaczenie nie jest całkowicie zdeterminowane przez mikroarchitekturę, lecz może w pewnym zakresie być określone przez konstruktora mikrosystemu na drodze wprowadzenia do rejestru sterującego układu 8255 odpowiedniego słowa sterującego. Rozwiązanie takie umożliwia łączenie korzyści, jakie daje daleko posunięta standaryzacja elementu z korzyściami wynikłymi z dopasowania elementów do potrzeb konkretnych użytkowników. Od strony współpracujących z nim układów zewnętrznych, układ 8255 posiada 24 końcówki wejścia/wyjścia przyporządkowane trzem 8-bitowym rejestrom, oznaczonym literami A, B, C, które są też zwane portami. Ośmiobitowe porty A i B mogą być ustawione jako wejścia bądź wyjścia, natomiast port C podzielony jest na dwie czterobitowe części, które możemy oddzielnie programować jako wejście lub jako wyjście. Wyboru rodzaju pracy dokonuje się wprowadzając odpowiednie słowo sterujące do rejestru sterującego. Na Rys. 3. przedstawiono schemat blokowy układu 8255. (przepraszam za wielkość...)
Rys. 3. Schemat blokowy układu MCY 7855 (8255)
Od strony mikroprocesora port 8255 ma 8 końcówek dwukierunkowej buforowanej trójstanowej magistrali danych. Wymiana danych miedzy mikroprocesorem a wymienionym buforem odbywa się albo drodze realizacji rozkazów wejścia/wyjścia: IN lub OUT, albo na drodze realizacji rozkazów czytania pamięci i pisania do pamięci. Wówczas przyporządkowuje się elementowi 8255 cztery komórki przestrzeni adresowej: trzy - dla portów A, B i C, natomiast czwartą - dla rejestru sterującego. Sposób sterowania układem 8255 za pomocą słowa sterującego, wpisywanego do rejestru sterującego, podano na Rys. 4.
Rys. 4. Znaczenie bitów słowa sterującego układu 8255
Tryby pracy układu 8255
Tryb 0
Jest on przeznaczony do realizacji bezwarunkowych operacji wejścia/wyjścia. Na Rys. 5. pokazano sposób pracy układu i współprace z elementami zewnętrznymi.
Pracujący w tym trybie układ 8255 posiada:
dwa porty 8-bitowe i dwa porty 4-bitowe
możliwość zaprogramowania każdego portu jako wejścia lub jako wyjścia
wyjścia z rejestrami zatrzaskowymi
wejścia bez rejestrów zatrzaskowych
możliwość realizacji szesnastu różnych kombinacji wejść i wyjść określonych przez wszystkie bity D4, D3, D2 i D0 rejestru sterującego.
Rys. 5. Sposób pracy układu 8255 w trybie 0
Należy tutaj zaznaczyć, że jest to tryb najczęściej, i najchętniej używany ze wszystkich trybów pracy układu 8255. Jest to podyktowane elastycznością tegoż trybu.
Tryb 1
Jest przeznaczony do realizacji operacji wejścia/wyjścia z przerwaniem, przy jednym kierunku przesyłania danych. Potrzebne do tego celu sygnały żądania przerwania, statusu i strobu są wyprowadzane lub wprowadzane z wykorzystaniem linii portu C.
Na Rys. 6. przedstawiono sposób pracy układu w trybie 1.
Rys. 6. Sposób pracy układu 8255 w trybie 1
Pracujący w tym trybie układ 8255 posiada:
dwie grupy wyprowadzeń: A i B. Obie grupy składa się z odpowiedniego portu 8-bitowego do przesyłania danych i z pomocniczego portu 4-bitowego przeznaczonego do przesyłania sygnałów sterujących
możliwość zaprogramowania każdego 8-bitowego portu jako wejścia lub wyjścia, przy czym zarówno wejścia jak i wyjścia mają rejestry zatrzaskowe
możliwość zaprogramowania jako wejścia lub wyjścia tych linii portu C, które służą do przekazywania sygnałów sterujących
Przeznaczenie tych linii portu C, które służą do przekazywania sygnałów sterujących portami A i B, pracującymi jako wejścia pokazano na Rys. 7.
Rys. 7. Opis linii Portu C, które sterują wejściowymi Portami A i B
Sygnał INTR (ang. Interrupt Request) jest żądaniem przerwania. Sygnał ten jest uaktywniany gdy sygnały: STB, IBF i INTE są w stanie jedynki logicznej; natomiast zerowany przez opadające zbocze sygnału /RD . Należy pamiętać, że:
INTE A jest ustawiane i zerowane za pośrednictwem bitu PC4 (patrz rozdział 3.1.3)
INTE B jest ustawiane i zerowane za pośrednictwem bitu PC2
IBF (ang. Input Buffer Full) jest sygnałem zapełnienia wyjściowego rejestru zatrzaskowego, ustawiany przez /STB=0 i zerowany przez narastające zbocze /RD.
/STB jest sygnałem strobu (ang. Strobe) wpisującym dane do wejściowego rejestru zatrzaskowego przy aktywowaniu go zerem logicznym.
Przeznaczenie tych linii portu C, które służą do przekazywania sygnałów sterujących portami A i B, pracującymi jako wyjścia pokazano na Rys. 8.
Rys. 8. Opis linii Portu C, które sterują wyjściowymi Portami A i B
Sygnał INTR (ang. Interrupt Request) jest żądaniem przerwania. Jest on ustawiany gdy: /ACK, /OBF, INTE są w stanie jedynki logicznej, a zerowany poprzez opadające zbocze /WR, przy czym:
INTE A jest ustawiane i zerowane za pośrednictwem bitu PC6
INTE B jest ustawiane i zerowane za pośrednictwem bitu PC2
/OBF (ang. Output Buffer Full) jest sygnałem zapełnienia wyjściowego rejestru zatrzaskowego, ustawiany poprzez /ACK=0 a zerowany przez narastające zbocze /WR
/ACK (ang. Acknowlegde) potwierdza odebranie przez element zewnętrzny danych z Portu A lub B, jest uaktywniany przez element zewnętrzny w chwili przyjęcie danych.
Tryb 2
Jest on przeznaczony do realizacji operacji wejścia/wyjścia z przerwaniem, tylko poprzez port A - przy dwóch kierunkach przesyłu danych. Umożliwia on więc wymianę danych z elementem zewnętrznym za pomocą jednej, 8-bitowej magistrali danych. Potrzebne do tego celu sygnały żądania przerwania, statusu i strobu są również wyprowadzane przez port C; możemy to zobaczyć na Rys. 9.
Rys. 9. Sposób pracy układu 8255 w trybie 2
Pracując w tym trybie, element 8255 posiada:
jedną grupę końcówek (grupę A), składającą się z dwukierunkowego portu A oraz z pięciu bitów portu C
możliwość zaprogramowania portu A jako wejścia i wyjścia równocześnie, przy czym zarówno wejście jak i wyjście mają rejestry zatrzaskowe.
możliwość zaprogramowania jako wejścia lub jako wyjścia tych linii portu C, które nie służą do przekazywania sygnałów sterujących.
Sygnał INTR jest żądaniem przerwania zarówno dla operacji wejścia jak i wyjścia.
Dla operacji wejścia:
ustawiane gdy /STB, IBF i INTE 2 są w stanie jedynki logicznej
zerowane przez opadające zbocze /RD
Dla operacji wyjścia:
ustawiane gdy /ACK, /OBF i INTE 1 są w stanie jedynki logicznej
zerowane przez opadające zbocze /WR
Rys. 10. Opis linii Portu C, które sterują pracą układu w trybie 2
Poza tym:
INTE 1 jest ustawiane i zerowane za pośrednictwem bitu PC6.
INTE 2 jest ustawiane i zerowane za pośrednictwem bitu PC4.
/STB jest sygnałem strobu wpisującym dane do wejściowego rejestru zatrzaskowego Portu A za pomocą sygnału sterującego /STB=0.
IBF jest sygnałem zapełnienia wejściowego rejestru zatrzaskowego Portu A ustawianym przez sygnał /STB=0 i zerowany przez narastające zbocze /RD.
/ACK jest sygnałem potwierdzającym przyjęcie przez element zewnętrzny danych.
/OBF jest sygnałem zapełnienia wyjściowego rejestru zatrzaskowego Portu A, ustawianym przez sygnał /ACK=0 i zerowanym przez narastające zbocze /WR.
Uwagi ogólne
Zarówno przy pracy w trybie 1 jak i w trybie 2, poszczególne bity portu C mogą być ustawiane lub zerowane na drodze przesłania odpowiedniego słowa do rejestru sterującego układu 8255. Konstrukcję tegoż słowa pokazuje Rys. 11. Z możliwości tej korzysta się w celu programowego blokowania i odblokowywania żądań przerwania przy pracy w trybach 1 i 2. Ustawianie lub zerowanie określonych bitów powoduje odpowiednie im ustawianie przerzutników maskujących INTE (ang. Interrupt Enable). Na Rys. 11 zestawiono wszystkie możliwe sposoby pracy układu 8255.
Rys. 11. Sposób ustawiania masek przerwań za pomocą rejestru sterującego