|
Wyjście Spis treści Wstecz Dalej
Autor artykułu |
©2026 mgr Jerzy Wałaszek
|

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s
permission is not required when using copyrighted material in:
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines



Końcówki GP0, GP1 i GP3 mogą zostać skonfigurowane do pracy ze słabymi opornikami podciągającymi jak również do wybudzania mikrokontrolera z trybu uśpienia przy zmianie stanu końcówki. Funkcje te są wybierane globalnie dla wszystkich trzech końcówek. Jeśli końcówka GP3/MCLR zostanie skonfigurowana jako MCLR, to słaby opornik podciągający jest zawsze do niej podłączony a wybudzanie przy zmianie stanu nie jest włączone.
| Adres | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
| 06h | – | – | – | – | GP3 | GP2 | GP1 | GP0 |
| U | U | U | U | W/R-x | W/R-x | W/R-x | W/R-x |
| Legenda: | R = bit odczytywalny; |
| Bit | Opis |
| bity 7:4 | Niezaimplementowane Przy odczycie zwracają 0 |
| bity 3:0 | GP3:0: Przy odczycie bity zwracają stan logiczny panujący na powiązanych z nimi końcówkach portu. Przy zapisie bity są zatrzaskiwane w rejestrze we/wy i ich stan pojawia się na powiązanych z nimi końcówkach, jeśli końcówki pracują jako wyjścia. |
| Priorytet | GP0 | GP1 | GP2 | GP3 |
| 1 | CIN+ | CIN- | FOSC4 | I/MCLR |
| 2 | TRIS GPIO | TRIS GPIO | COUT | — |
| 3 | — | — | T0CKI | — |
| 4 | — | — | TRIS GPIO | — |
| Uwaga: | Odczyt portów zwraca stan końcówek, nie wyjściowych zatrzasków danych. Oznacza to, iż jeśli włączono na końcówce driver wyjściowy i wysterowano go w stan wysoki, lecz zewnętrzny obwód wymusza na tej końcówce stan niski, to odczyt portu zwróci 0, informując o stanie niskim na końcówce. |
Rejestry TRIS są rejestrami tylko do odczytu i przy resecie ich bity są ustawiane na 1 (drivery wyjściowe wyłączone).
Wszystkie końcówki portu, z wyjątkiem GP3 będącą tylko do odczytu, mogą być używane zarówno w operacjach odczytu jak i zapisu. Przy odczycie dane nie są zatrzaskiwane w porcie. Każda dana wejściowa musi być obecna na końcówce aż do jej odczytu przez instrukcję wejścia (np. MOVF GPIO, W). Dane wyjściowe zostają zatrzaśnięte w przerzutniku a do ich nadpisania inną wartością.
Aby używać końcówki portu jako wyjście danych, odpowiadający jej bit sterowania kierunkiem w rejestrze TRIS musi być wyzerowany. Przy używaniu jako wejście bit ten należy ustawić na jeden. Każda końcówka we/wy (z wyjątkiem GP3) może być zaprogramowana indywidualnie jako wejście lub wyjście.
| Adres | Nazwa | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Wartość
przy resecie przy włączeniu |
Wartość przy wszystkich innych resetach |
| N/A | TRIS | — | — | — | — | Rejestr sterujący we/wy | ---- 1111 |
---- 1111 |
|||
| N/A | OPTION | GPWU | GPPU | T0CS | T0SE | PSA | PS2 | PS1 | PS0 | 1111 1111 |
1111 1111 |
| 03h | STATUS | GPWUF | CWUF | — | TO | PD | Z | DC | C | 00-1 1xxx |
qq-q quuu(1)(2) |
| 06h | GPIO | — | — | — | — | GP3 | GP2 | GP1 | GP0 | ---- xxxx |
---- uuuu |
Niektóre instrukcje działają wewnętrznie jak odczyt, którym następuje operacja zapisu. Na przykład instrukcje BCF i BSF odczytują do mikroprocesora cały port, wykonują operację bitową i zapisują z powrotem wynik. Należy podjąć środki ostrożności, gdy te instrukcje zostaną użyte do portu, w którym jedna lub więcej końcówek pracuje jako wejścia/wyjścia. Na przykład instrukcja BSF na bicie 2 rejestru GPIO spowoduje odczyt do mikroprocesora wszystkich ośmiu bitów, ustawi na 1 bit 2 i wartość GPIO zostanie zapisana do zatrzasków wyjściowych. Jeśli inny bit rejestru GPIO jest używany jako dwukierunkowa końcówka we/wy (powiedzmy bit 0), a została ona zdefiniowana w tym czasie jako wejście, to sygnał obecny na końcówce zostanie wczytany do mikroprocesora, a następnie zapisany do zatrzasku danych tej konkretnej końcówki, nadpisując poprzednią zawartość. Tak długo jak końcówka pozostaje w trybie odczytu nie pojawi się żaden problem. Jednakże, jeśli bit 0 zostanie przełączony później w tryb zapisu, to zawartość zatrzasku danych może być nieokreślona. Poniższy przykład pokazuje efekt dwóch kolejnych instrukcji odczytu-modyfikacji-zapisu (np. BCF, BSF, itp.) na porcie we/wy.
;Początkowe ustawienia GPIO ;GPIO<3:2> Wejścia ;GPIO<1:0> Wyjścia ; ; Zatrzask GPIO końcówki GPIO ; ---------- ---------- BCF GPIO, 1 ;---- pp01 ---- pp11 BCF GPIO, 0 ;---- pp10 ---- pp11 MOVLW 007h ; TRIS GPIO ;---- pp10 ---- pp11 ;
| Uwaga | 1. | Użytkownik może spodziewać się wartości
----pp00 na końcówkach. Druga instrukcja BCF spowodowała
zatrzaśnięcie GP1 jako wartości wysokiej na końcówce. |
Końcówka aktywnie wyprowadzająca wartość wysoką lub niską nie powinna być w tym samym czasie wysterowywana przez zewnętrzne urządzenia w celu zmiany poziomu na tej końcówce (suma montażowa, iloczyn montażowy). Powstające w wyniku wysokie prądy wyjściowe mogą uszkodzić układ.
Faktyczny zapis do portu we/wy odbywa się na końcu cyklu rozkazowego, gdzie przy odczycie dane muszą być poprawne na początku cyklu rozkazowego.
Poniższy przykład pokazuje zapis do GPIO, po którym następuje odczyt z GPIO.
Czas ustalania się danych = (0,25·TCY-TPD)
gdzie:
TCY = cykl rozkazowy
TPD = opóźnienie propagacji
Dlatego przy wyższych częstotliwościach zegarowych zapis, po którym następuje
odczyt, może być problematyczny.

Dlatego należy bardzo uważać, jeśli po zapisie następuje bezpośrednio odczyt w tym samym porcie we/wy. Ciąg instrukcji powinien umożliwić ustabilizowanie się napięcia na końcówce (zależy to od obciążenia) zanim następna instrukcja wczyta stan końcówki do mikroprocesora. W przeciwnym razie do mikroprocesora zostanie wczytany poprzedni stan końcówki, a nie nowy. W razie wątpliwości lepiej rozdzielić w kodzie takie instrukcje instrukcją NOP lub inną, która nie operuje na porcie we/wy.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.