54 Komunikacja programowa
Układy polaryzujące w portach PI, P2 i P3 nie są liniowymi i opornikami, lecz specjalnymi układami zbudowanymi z tranzystorów polowych. Przy każdej zmianie stanu 0 na 1 przerzutnika D występuje na czas trwania dwóch taktów zegarowych około 100-krotne zmniejszenie oporności układu polaryzującego - chodzi bowiem o zmniejszenie czasu przełączania stanu na wyjściu (pojemność pasożytnicza jest ładowana 100-krotnie większym prądem).
Komunikacja programowa
Porty PO, PI, P2 i P3 są umiesz-i czone w przestrzeni adresowej wewnętrznej pamięci danych jako rejestry specjalne. Ich bity są dostępne programowo (rys. 4.2). Odczytywanie i zapisywanie danych z i do portów może się więc odbywać za pomocą dowolnych rozkazów z adresem bezpośrednim, dotyczących wewnętrznej pamięci danych, oraz za pomocą rozkazów wykonujących operacje na bitach.
Dane przesłane do portu są zapisywane do buforowego rejestru wyjściowego i nie zmieniaj ą się aż do chwili ponownego zapisania. Nowe dane pojawiają się na końcówkach układu w stanie SI PI cyklu maszynowego, następnego po tym, w którym był wykonywany rozkaz zapisujący do portu.
Odczytywanie portu może się odbywać dwoma sposobami, realizowanymi za pomocą różnych rozkazów: przez pobranie danych z końcówek układu (odczytywanie poprzez dolną bramkę trójstanową, na rys. 19) lub z rejestru buforowego (odczytywanie poprzez górną bramkę trójstanową, na rys. 2.9).
Pobranie danych z końcówek układu jest realizowane przez te rozkazy, które służą do odczytania danych z wejść mikrokomputera i testowania ich (np. CJNE A,Pl,d; JB Pl.l,d) lub przesłania do pamięci albo rejestru procesora (np. MOV R1,P1; XCH A,P1; ADD AJP1; ANL1 A,P1). Końcówki układu są próbkowane w stanie S5P1 (port PO) lub S5P2 (pozostałe porty) pierwszego cyklu maszynowego rozkazu odczytywania.
Odczytywanie danych z buforowego rejestru wyjściowego portu jest natomiast realizowane przez te rozkazy, których wykonanie powoduje odczytanie, ewentualną modyfikację i zapisanie danych z powrotem do portu (ang. read-modify-wńte instructions). Rozkazy te dotyczą stanu wyjść mikrokomputera, który jest wymuszany przez zawartość rejestru wyjściowego portu, a w niektórych przypadkach, np. gdy do wyjścia jest dołączona baza przewodzącego tranzystora, stan ten nie jest zgodny ze stanem logicznym, określonym przez poziomy napięć na końcówkach układu. Do grupy tych rozkazów należą:
ANL Pp£ ORL Pp^ XRL Pp,s
INC Pp; DEC Pp
JBC Pp.b
DJNZ Pp,d
CPL Pp.b
MOV Pp.h,Q CLR Pp.b; SET Pp.b
gdzie s oznacza A lub # n, Pp - adres portu jako SFR, Pp.b - adres bitu b portu Pp, d - przesunięcie.
Trzy ostatnie rozkazy zaliczają się do tej grupy, ponieważ w wyniku ich wykonania jest pobierana zawartość całego portu (8 bitów), jest zmieniany wskazany bit, a całe słowo jest wpisywane z powrotem do portu.
CZASOWO-LICZNIKOWY
Układ czasowo-licznikowy (ang. ti-mer-counter) mikrokomputera 8051 zawiera dwa 16-bitowe liczniki TO i Tl. Mogą one zliczać impulsy zewnętrzne, doprowadzone do wejść, odpowiednio, TO (P3.4) lub Tl (P3.5), spełniając w ten sposób funkcję licznika (ang. event counter). Mogą też zliczać wewnętrzne impulsy zegarowe, w celu odmierzania opóźnień czy generowania przerwań zegarowych o zadanej częstotliwości W tym przypadku spełniają funkcję czasomierza (ang. timer). Poza tym każdy z nich może pracować w jednym z czterech indywidualnie ustawionych trybów.
Układ czasowo-licznikowy mikrokomputera 8052 zawiera dodatkowo trzeci - 16-bitowy licznik T2, który może pracować jako czasomierz, jako licznik impulsów zewnętrznych na wejściu T2 (P1.0) lub może być wykorzystany do określenia szybkości transmisji prowadzonej przez port szeregowy.