WEJŚCIE-WYJŚCIE
Porty P1, P2
Strukturę jednej linii portu P1 lub P2 pokazano na rysunku:
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
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