WEJŚCIE-WYJŚCIE


Mikrokomputer 8048 ma 27 linii wejścia-wyjścia, zgrupowanych w trzy 8-bitowe porty: BUS, P1, P2, i trzy indywidualne linie wejściowe: T0, T1, / INT. W zasadzie tylko port P1 i bity od 4 do 7 portu P2 są przeznaczone do pracy jako układy bezpośredniego wejścia -wyjścia. Pozostałe linie, w zależności od konstrukcji systemu oraz oprogramowania, mogą spełniać inne funkcje. Tylko w systemie jednoukładowym, tzn. bez dodatkowych zewnętrznych układów pamięci, pamięci danych czy wejścia-wyjścia, wszystkie trzy porty mogą być wykorzystane jako linie bezpośredniego wejścia-wyjścia.

Porty P1, P2

Pseudodwukierunkowe (ang. quasibidirectional) porty P1 i P2 są pod względem elektrycznym takie same. Mogą pracować jako wejścia lub wyjścia bezpośrednio, przy czym jest możliwe mieszanie linii wejściowych i wyjściowych w jednym porcie. Dane wyjściowe wysyłane do portu są zapisywane w rejestrze buforowym i nie zmieniają się do chwili ponownego zapisywania. Przy odczytywaniu portu jest przesyłana wartość logiczna z końcówek układu. Poziomy wejściowe są w pełni zgodne ze standardem TTL. Wyjście może być obciążone przez jedno standardowe wejście TTL.

Strukturę jednej linii portu P1 lub P2 pokazano na rysunku:

Każda linia jest dołączona do napięcia + 5 V poprzez opornik podciągający (ang. pullup) - R o oporności ok. 50 kohm. Jeżeli linia pracuje jako wyjściowa, to stan na końcówce układu zależy od stanu przerzutnika D (buforowy rejestr wyjściowy). Wpisane jedynki logicznej do przerzutnika spowoduje zatkanie tranzystorów T1 i T2, a opornik R wymusi na wyjściu stan wysoki. Wpisane zera do przerzutnika D spowoduje nasycenie tranzystora T2, zawierającego linię do masy (ang. pulldown), a w konsekwencji wymuszenie stanu niskiego na wyjściu. Tranzystor T1 jest otwierany na chwilę (na czas około 1,5 cyklu maszynowego) i to zawsze w momencie zapisywania jedynki do przerzutnika. Powoduje to zbocznikowanie opornika R i dołączenie linii portu do napięcia + 5 V poprzez oporność ok. 5 kohm. Dzięki temu z kolei zmniejsza się czas przełączania 0 na 1 na wyjściu.

Jeżeli linia ma pracować jako wejście, to do przerzutnika D musi być wpisana jedynka. Wtedy stan na końcówce układu może być wymuszony przez wyjście bramki dołączonej do tej końcówki.

Do przesyłania danych (słów 8-bitowych) między portami i akumulatorem służą rozkazy IN i OUT. W przypadku, gdy w jednym porcie część linii jest wykorzystywana jako wejścia, a część jako wyjścia, należy pamiętać, aby przy wysyłaniu słowa danych do portu na bitach wejściowych były jedynki. Zapisywanie spowoduje chwilowe zbocznikowanie opornika R i zmniejszenie oporności wejściowej, co nie powinno być jednak szkodliwe dla wyjścia dołączonej bramki.

Wykonanie rozkazu IN powoduje przesłanie do akumulatora wartości logicznej z końcówek układu. Może się więc zdarzyć, że odczytany stan linii wyjściowej portu nie będzie zgodny ze stanem przerzutnika wyjściowego. Nastąpi to wtedy, kiedy do wyjścia dołączy się układ zmieniający poziom napięcia wyjściowego, np. bazę tranzystora. Operacja odczytania stanu wyjść przebiegnie poprawnie( tzn. będą odczytane ostatnio zapisane dane) tylko wtedy, kiedy do linii wyjściowych zostaną dołączone układy nie zmieniające poziomu napięcia (np. wejścia TTL).

Możliwe jest sterowanie pojedynczymi bitami wyjściowymi portów, tzn. ustawianie bitu na 1 za pomocą rozkazu ANL - w obu przypadkach z odpowiednią maską. Rozkazy te powodują odczytanie stanu portu z rejestru buforowego, wykonanie operacji i zapisanie wyniku do rejestru. Ponieważ odbywa się odczytywanie rejestru, to zawsze są pobierane ostatnio zapisane dane, a z bitów wejściowych - jedynki. Przy ustawianiu maski (zwłaszcza przy rozkazie ANL) należy uważać, by do bitu wejściowego nie zostało wpisane zero. Również w tym przypadku, przy wpisaniu jedynki do przerzutnika nastąpi chwilowe zbocznikowanie opornika podciągającego linię. Podczas zerowania mikrokomputera do rejestrów wyjściowych obu portów wpisują się jedynki - a zatem porty są ustawiane jako wejścia.

Mniej znacząca połowa portu P2 (bity od 0 do 3) może też być wykorzystana do dwóch innych funkcji (również jednocześnie):
- jako wyjście bardziej znaczących bitów adresu przy odczytywaniu z zewnętrznej pamięci programu,
- jako 4-bitowa magistrala do komunikacji z ekspanderem 8243.

W obu przypadkach nie jest w zasadzie możliwe jednoczesne używanie tych bitów jako linii wejścia- wyjścia. Można natomiast korzystać z bitów od 4 do 7 portu P2, bez względu na to, co zostało zapisane w bitach od 0 do 3.

PORT BUS

Jest to port w pełni dwukierunkowy (ang. bidirectional), z wyjściami trójstanowymi. Może być wykorzystany na trzy sposoby (do pracy w trybach), jako:
- bezpośrednie wejście lub wyjście,
- dwukierunkowy port ze strobowanymi operacjami zapisywania i odczytywania,
- dwukierunkowa multipleksowana magistrala adresowa i danych.

Sposób wykorzystania portu określa konstruktor systemu. To on decyduje, za pomocą jakich rozkazów będzie dokonywane przesyłanie danych z i do portu. Po wyzerowaniu systemu linie portu BUS są ustawione w stan dużej impedacji.

Tryb pracy portu BUS jako bezpośredniego wejścia lub wyjścia jest przeznaczony dla systemów jednoukładowych, gdy mikrokomputer nie korzysta z zewnętrznej pamięci programu lub danych (nie może być więcej wykorzystany w układach 8035, 8039, 8040).Port BUS pracuje wtedy podobnie, jak porty P1 i P2 z tym, że nie jest tu możliwe mieszanie linii wejściowych i wyjściowych. Dane są przesyłane do portu za pomocą rozkazów OUTL, ORL lub ANL (rozkazy mogą być umieszczone wyłącznie w wewnętrznej pamięci programu) i zapisywane w rejestrze wyjściowym. Po wykonaniu jednego z tych rozkazów linie portu są ustawione jako wyjścia. Odczytywanie portu (danych z końcówek układu) dokonuje się w wyniku użycia rozkazu INS. Wykonanie tego rozkazu nie zmienia stanu portu (stan dużej impedencji lub wyjście). Odczytanie portu pracującego jako wyjście, czyli wykonanie rozkazu INS po OUTL, daje skutki takie, jak w przypadku portów P1 i P2. Podczas wykonania rozkazu zapisywania (OUTL) lub odczytywania (INS) portu BUS, jest wysyłany na wyjście sterujące impuls strobujący - odpowiednio /WR lub /RD. Impuls ten, zwykle nie używany, może być wykorzystany jako sygnał gotowości danych lub potwierdzenia odczytania.

Tryb pracy portu BUS jako portu dwukierunkowego jest przeznaczony przede wszystkim do współpracy mikrokomputera z zewnętrzną pamięcią danych. W tym przypadku dane przesyłane za pomocą rozkazów MOVX są strobowane impulsami sterującymi:
Przy zapisywaniu - /WR. przy odczytywaniu - /RD. Dane wyjściowe z mikrokomputera są podawane do portu BUS i powinny być odczytane przez urządzenie zewnętrzne w chwili narastania zbocza sygnału /WR.
Dane wyjściowe z mikrokomputera są podawane do portu BUS i powinny być odczytane przez urządzenie zewnętrzne w chwili narastania zbocza sygnału /WR. Dane wejściowe są odczytywane z portu BUS w chwili narastania zbocza sygnału /RD. Każdorazowo po wykonaniu rozkazu MOVX port jest ustawiony w stan dużej impedancji. W szczególnych przypadkach (jeśli to konieczne) jest możliwe używanie na przemian rozkazów OUTL i INS oraz MOVX. Należy przy tym pamiętać, że wykonanie rozkazów MOVX niszczy zawartość rejestru wyjściowego portu.

W systemach z zewnętrzną pamięcią programu port BUS spełnia funkcję dwukierunkowej, multipleksowanej magistrali adresowej i danych do komunikacji zarówno z pamięcią programu, jak i z zewnętrzną pamięcią danych (za pomocą rozkazów MOVX). W tym przypadku nie wolno używać rozkazów zapisywania do portu BUS (OUTL, ORL, ANL) - ich wykonanie może spowodować zakłócenia w pracy systemu.

LINIE T0, T1, /INT

Trzy indywidualne linie T0, T1, /INT są wejściami sygnałów logicznych TTL, których stany stanowią warunki dla rozkazów skoków warunkowych. Wejścia te mogą być testowane tylko za pomocą tych właśnie rozkazów skoków. Poszczególne linie mogą też spełniać inne funkcje:
- /INT jest wejściem przerywającym, miejscem dołączenia sygnału zgłoszenia przerwania zewnętrznego,
- T0 jest wejściem sygnału zegarowego o częstotliwości fxtal/3 (fxtal- częstotliwość rezonatora kwarcowego)po wykonaniu rozkazu ENTO CLK;
- T1 jest po wykonaniu rozkazu STRC CNT wejściem impulsów zliczanych w układzie czasowo-licznikowym.

Powrót