Porty

     Linie we/wy mikrokontrolera 8051 pogrupowane są w cztery 8-bitowe porty:
•  P0 - linie P0.0/AD0 - P0.7/AD7
•  P1 - linie P1.0 - P1.7
•  P2 - linie P2.0/A8 - P2.7/A15
•  P3 - linie P3.0/RxD', P3.1/TxD', P3.2/INT0', P3.3/INT1', P3.4/T0, P3.5/T1, P3.6/WR', P3.7/RD'
   Wszystkie linie portów P0-P3 pracujące jako standardowe linie wejścia/wyjścia są niezależne pod względem kierunku przesyłania informacji. Rejestry P0-P3 złożone z przerzutników poszczególnych linii wchodzą w skład bloku rejestrów specjalnych, przy czym możliwe jest adresowanie ich poszczególnych bitów, co umożliwia bezpośrednie sterowanie pojedynczymi liniami we/wy.
   Funkcje i struktura linii we/wy są odmienne dla każdego z układów P0-P3
 
Struktura portu P0.

 

 


   Na rysunku przedstawiono strukturę pojedynczej linii portu P0.Osiem takich struktur tworzy port P0 dostępny poprzez blok rejestrów specjalnych. W czasie normalnej pracy jako wejście/wyjście (stan 0 na linii sterowanie) tranzystor T1 jest wyłączony, a stan tranzystora T2 zależy bezpośrednio od stanu przerzutnika D, który wchodzi w skład rejestru P0 bloku SFR. Jeżeli w przerzutniku zapisana jest jedynka, to tranzystor T2 jest wyłączony i wyjście układu przechodzi w stan wysokiej impedancji. W przypadku wpisania zera, T2 jest włączony i na wyjściu panuje stan niski. Wyjścia układu P0 podczas wyprowadzania informacji zachowują się jak linie typu otwarty dren. Wymaga to dołączenia zewnętrznego rezystora podciągającego w celu uzyskania wysokiego poziomu napięcia odpowiadającego jedynce wpisanej do przerzutnika. Podczas wprowadzania informacji stan linii zewnętrznej jest wprowadzany poprzez bufor na wewnętrzną szynę danych, jednak aby odczyt linii portu był możliwy, wcześniej do przerzutnika musi zostać wpisana jedynka.
   Istnieje grupa rozkazów mikrokontrolera, które odczytują, modyfikują i ponownie zapisują zawartość rejestru P0 (P1, P2, P3). Są to rozkazy typu RMW (ang. Read-Modify-Write). Poszczególne bity rejestru odczytywane są przez bufory dołączone do wyjścia Q przerzutnika, ich wartość jest przekazywana do arytmometru, gdzie następuje wykonanie operacji, a następnie nowa wartość jest ponownie wprowadzana do przerzutnika.
   Układ P0 oprócz funkcji we/wy pełni rolę szyny danych multipleksowanej z mniej znaczącą częścią szyny adresowej podczas realizacji dostępu do pamięci zewnętrznej. Wtedy stan linii sterującej S=1 i tranzystory T1 i T2 są sterowane wewnętrzną linią adresu/danych. Poziom niski włącza T2 i wyłącza T1 co powoduje stan "0" na wyjściu układu; poziom wysoki wyłącza T2 i włącza T1 powodując stan wysoki na wyjściu - nie ma przy tym konieczności instalowania rezystora podciągającego. Dane z szyny danych odczytywane są w taki sam sposób jak przy pracy portu jako wejście/wyjście.
   Wykonanie dostępu do pamięci zewnętrznej powoduje zapisanie samych jedynek do rejestru P0, niszcząc tym samym przechowywaną w nim informację. Z tego powodu korzystanie z pamięci zewnętrznej wyklucza w zasadzie możliwość korzystania z P0 jako wejścia/wyjścia. Każdą linię portu P0 można obciążyć ośmioma wejściami TTL-LS.
 
 
 
Struktura portu P1.
   Na rysunku przedstawiono pojedynczą linię portu P1.

 

 


Przerzutnik D będący jej elementem wchodzi w skład rejestru P1 bloku SFR. Modyfikacji stanu przerzutnika D można dokonać rozkazami zapisu lub RMW, tak jak w przypadku układu P0. Przerzutnik D steruje bezpośrednio tranzystorem wyjściowym. Rezystor zapewnia ustalenie wysokiego poziomu napięcia przy wyłączonym tranzystorze (jedynka w przerzutniku). Podczas wprowadzania informacji rozkazami odczytu linii zewnętrznej wymagane jest zapisanie jedynki do przerzutnika D. Linie układu P1 nie pełnią żadnych dodatkowych funkcji. Można je obciążać czterema wejściami TTL-LS.
 
 
Struktura portu P2.

 


   Na rysunku przedstawiono budowę pojedynczej linii portu P2.Zasada działania linii portu P2 jest taka sama jak portu P1, pod warunkiem, że dodatkowe funkcje tego układu nie są wykorzystywane (stan niski na linii sterowanie). Dodatkowo jednak, podczas dostępu do pamięci zewnętrznej, port P2 pełni rolę bardziej znaczącej części szyny adresowej (A8-A15). Wtedy przy pomocy linii S=1 (sterowanie) zostaje przełączony multiplekser i sterowanie tranzystora wyjściowego pochodzi z wewnętrznej linii adresu. Zawartość przerzutnika D nie jest niszczona i jego zapisany w nim stan pojawia się na wyjściu portu po zakończeniu cyklu dostępu o pamięci.
   W przypadku realizacji dostępu do zewnętrznej pamięci danych przy użyciu rejestrów indeksowych R0 i R1 mikroprocesor ustawia tylko młodsze osiem bitów adresu, a stan portu P2 nie zmienia się.
   Linie portu P2 można obciążać czterema wejściami TTL-LS.
 
 
Struktura portu P3.

 

 

 


   W porcie P3 wszystkie linie pełnią dodatkowe funkcje, jednak w podstawowym trybie pracy jako wejście/wyjście działanie portu P3 nie różni się w niczym od działania portów P1 i P2.W zależności od tego czy realizowana funkcja dodatkowa jest wyjściem (TxD, RD', WR') czy wejściem (pozostałe oprócz RxD) lub pełni obie funkcje (RxD), różna jest struktura linii portu. Wykorzystanie dodatkowej funkcji linii jest możliwe jedynie po zapisaniu jedynki do przerzutnika D. W przypadku wyjść (P3.1/TxD', P3.6/WR', P3.7/RD') tranzystor T sterowany jest odpowiednim sygnałem wewnętrznym realizującym daną funkcję. Dla realizacji funkcji będącej wyjściem stan wyprowadzenia zewnętrznego podawany jest za pośrednictwem stale otwartego bufora na wewnętrzną linię mikrokontrolera.
   Linie portu P3 można obciążać czterema wejściami TTL-LS.
 
 
   Tranzystor symbolizujący stopień wyjściowy linii portów jest w rzeczywistości bardziej skomplikowaną strukturą, której schemat przedstawia rysunek.   Zapis do przerzutnika następuje w ostatniej fazie cyklu maszynowego, a wpisana wartość pojawia się na wyjściu linii portu w pierwszej fazie następnego cyklu maszynowego - wyjściowy bufor linii portu sprawdza stan przerzutnika  tylko podczas pierwszej fazy każdego cyklu zegarowego, a wykryty stan utrzymuje przez czas trwania drugiej fazy. Zmiana zawartości przerzutnika ze stanu niskiego na wysoki powoduje włączenie tranzystora T1, który pozostaje aktywny przez dwa cykle zegarowe. Tranzystor ten ma dużą wydajność prądową, spełnia rolę rezystora podciągającego o małej wartości rezystancji, a jego włączenie ma na celu przyspieszenie przejścia ze stanu logicznego 0 do 1. Wpisanie do przerzutnika "1" powoduje dodatkowo włączenie T2, który jest włączony do momentu zmiany zawartości przerzutnika na "0". T2 stanowi rezystor podciągający o dużej wartości rezystancji i ma za zadanie utrzymanie linii w stanie wysokim. Włączenie T1 powoduje również włączenie T3, który również stanowi rezystor podciągający o dużej rezystancji. T3 jest jednak aktywny tylko wtedy, gdy napięcie na linii portu jest wyższe niż 1-1.5V. Jeżeli zostanie na linii portu wymuszony stan niski, to T3 jest wyłączony i jako jedyne obciążenie pozostaje tranzystor T2, co wpływa korzystnie na zmniejszenie strat mocy w układzie. Jeżeli zaś linia pracuje jako wyjście, to równoczesna praca T2 i T3 powoduje zwiększenie wydajności prądowej wyjścia. Jeżeli do przerzutnika zostaje wpisane "0" to aktywny jest tylko tranzystor T4.
 

 W mikroprocesorze 8051 wbudowano szeregowy port we/wy, który może być wykorzystany do łączenia urządzeń peryferyjnych wykorzystujących standardowe protokoły asynchroniczne z zachowaniem pełnego duplexu. Wykorzystując dodatkowy rejestr przesuwający CMOS lub TTL, port szeregowy może również pracować w trybie synchronicznym. Zastosowane rozwiązania układowe pozwalają na transmisję o tak dużych szybkościach, na jakie pozwoli oprogramowanie. W odpowiedzi na żądanie przerwania od portu szeregowego wystarczy tylko odczyt lub zapis bufora CPU.

 

Komentarze



link Prezentujemy listę instrukcji - mikroprocesor 8051 ( Intel 8051 ): ACALL addr11 Dzialanie: (PC)  (PC) + 2 (SP)  (SP) + 1 ((SP))  (PC7-0) (SP)  (SP) + 1 ((SP))  (PC15-8) (PC10-0)  addr11