|
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
Wszystkie porty AVR mogą być odczytywane, modyfikowane i zapisywane, gdy używa się ich jako ogólnych, cyfrowych portów wejścia/wyjścia. Oznacza to, iż kierunek jednej
końcówki portu
może zostać zmieniony bez niezamierzonej zmiany kierunku innych
końcówek portu za pomocą
instrukcji
SBI
i CBI. To samo dotyczy zmiany stanu
wyjściowego portu (jeśli jest skonfigurowany
jako wyjście) lub włączania/wyłączania oporników podciągających (jeśli jest skonfigurowany jako wejście).
Port B jest 6-bitowym, dwukierunkowym portem wejścia/wyjścia.

Dla portu B przydzielone są trzy adresy komórek w pamięci we/wy, po jednym dla rejestru danych (ang. Data Register – PORTB, 0x18), dla rejestru kierunku danych (ang. Data Direction Register – DDRB, 0x17) i dla rejestru danych wejściowych z końcówek (ang. Port B Input Pins – PINB, 0x16). Rejestr PINB jest tylko do odczytu, natomiast rejestry PORTB i DDRB można odczytywać i zapisywać.
Porty PB5:3 posiadają specjalne funkcje, co opisano w rozdziale "Konfiguracja wyprowadzeń".

Jeśli PB5 nie jest skonfigurowany jako zewnętrzny reset, jest portem wejściowym bez opornika podciągającego. W ATtiny12 może on również wyprowadzać logiczne zero, działając jako wyjście z otwartym drenem. Zwróć uwagę, iż ponieważ PB5 posiada tylko jedną możliwą wartość wyjściową, działanie wyjściowe tej końcówki jest sterowane tylko poprzez rejestr DDR. Jeśli PB4 i/lub PB3 nie są używane w funkcji zegara, to są końcówkami we/wy. Wszystkie końcówki we/wy posiadają indywidualnie wybierane oporniki podciągające.
Bufory wyjściowe portu B na liniach od PB0 do PB4 mogą
pochłaniać prąd
W poniższej tabeli przedstawiono alternatywne funkcje końcówek portu B:
![]() |
![]() |
|
Końcówka portu B |
Funkcje alternatywne | Mikrokontroler |
| PB0 | AIN0 (Wejście nieodwracające komparatora analogowego) | ATtiny11/12 |
| MOSI (Linia wejściowa danych przy programowaniu pamięci) | ATtiny12 | |
| PB1 | INT0 (Wejście dla przerwania zewnętrznego 0) | ATtiny11/12 |
| AIN1 (Wejście odwracające komparatora analogowego) | ATtiny11/12 | |
| MISO (linia wyjściowa danych przy programowaniu pamięci) | ATtiny12 | |
| PB2 | T0 (Wejście zewnętrzne dla timera/licznika 0) | ATtiny11/12 |
| SCK (Zegar szeregowy przy programowaniu pamięci) | ATtiny12 | |
| PB3 | XTAL1 (Wejście oscylatora) | ATtiny11/12 |
| PB4 | XTAL2 (Wyjście oscylatora) | ATtiny11/12 |
| PB5 | RESET (Końcówka zewnętrznego resetu) | ATtiny11/12 |
Gdy końcówki PB2:0 są używane dla alternatywnych funkcji, rejestry DDRB i PORTB muszą być ustawione zgodnie z opisem funkcji alternatywnych. Gdy końcówki PB5:3 są używane dla alternatywnych funkcji, wartości w odpowiednich bitach rejestrów DDRB i PORTB są ignorowane.
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0x18 | - | - | - | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
| Zapis/Odczyt | O | O | O | Z/O | Z/O | Z/O | Z/O | Z/O | |
| Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0x17 | - | - | (DDB5) | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
| Zapis/Odczyt | O | O | (Z)/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
| Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Uwaga: | bit DDB5 jest dostępny tylko w ATtiny12 |
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0x16 | - | - | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
| Zapis/Odczyt | O | O | O | O | O | O | O | O | |
| Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Adres PINB nie odnosi się do rejestru, a jedynie umożliwia dostęp do fizycznej wartości sygnału na każdej z końcówek portu B. Gdy odczytywany jest rejestr PORTB, to faktycznie odczytywana jest zawartość przerzutników Latch tego rejestru, a gdy odczytywany jest PINB, to odczytane zostają wartości logiczne obecne na końcówkach portu B.
Pięć najniższych końcówek portu B (PB4:0) posiada te same własności, gdy są wykorzystywane jako końcówki cyfrowego we/wy.

PBn, ogólna końcówka we/wy: Bit DDBn w rejestrze DDRB wybiera kierunek przesyłania danych w tej końcówce, jeśli DDBn jest ustawiony na 1, to końcówka PBn jest skonfigurowana do pracy jako wyjście, zapis danych. Jeśli DDBn jest wyzerowany, to PBn jest skonfigurowane jako końcówka wejścia, odczytu danych, a opornik podciągający zostaje aktywowany. W ATtiny12 ta funkcja może zostać wyłączona przez ustawienie bitu blokującego podciąganie (ang. Pull-up Disable Bit, PUD) w rejestrze MCUCR. Aby wyłączyć opornik podciągający, można wyzerować bit PORTBn, skonfigurować końcówkę jako wyjście, lub w ATtiny12 ustawić bit PUB. Końcówki portu przechodzą w stan wysokiej impedancji, gdy staje się aktywny warunek resetu, nawet jeśli zegar nie pracuje.
| DDBn | PORTBn | we/wy | podciąganie | Komentarz |
| 0 | 0 | Wejście | Nie | Stan wysokiej impedancji |
| 0 | 1 | Wejście | Tak | Końcówka PBn będzie
źródłem prądu, jeśli zostanie zewnętrznie wysterowana stanem niskim. W ATtiny12 oporniki podciągające można wyłączyć przez ustawienie bitu PUD. |
| 1 | 0 | Wyjście | Nie | Końcówka w stanie niskim. |
| 1 | 1 | Wyjście | Nie | Końcówka w stanie wysokim. |
n: 0,1,...,4 – numer końcówki portu B.
Zauważ, iż w ATtiny11 PB5 pracuje tylko jako wejście. W ATtiny12 PB5 jest wejściem lub
wyjściem z otwartym drenem.
Ponieważ końcówka ta jest używana do programowania 12V, nie ma zabezpieczenia diodowego ESD (ang.
electrostatic discharge – wyładowanie elektrostatyczne),
które ogranicza napięcie na końcówce do
![]() |
![]() |
Wszystkie końcówki portu B są podłączone z układem wykrywania zmian poziomu logicznego, który może wyzwalać przerwania przy zmianie stanu końcówki. Zobacz do podrozdziału "Przerwanie przy zmianie stanu końcówki". Dodatkowo port B posiada następujące funkcje alternatywne:
Gdy bit bezpiecznikowy RSTDISBL jest niezaprogramowany, to ta końcówka pełni funkcję zewnętrznego resetu. Gdy RSTDISBL jest zaprogramowany, to końcówka staje się końcówką ogólnego wejścia danych. W ATtiny12 może również być wyjściem z otwartym drenem.
XTAL2 jest wyjściem oscylatora. Gdy końcówka ta nie jest wykorzystywana do celów zegarowych, jest końcówką ogólnego we/wy.
XTAL1 jest wejściem oscylatora lub zegara. Gdy końcówka ta nie jest wykorzystywana do celów zegarowych, jest końcówką ogólnego we/wy.
Ta końcówka może służyć jako wejście zewnętrznego zegara dla timera/licznika 0. Więcej na ten temat znajdziesz w rozdziale "Timer/licznik 0 i licznik zegarowy". Jeśli zostało wybrane zewnętrzne taktowanie timera/licznika 0, to zmiany stanów na tej końcówce będą taktować zliczanie w liczniku, nawet jeśli końcówka pracuje jako wyjście (co umożliwia programowe sterowanie zliczania przez timer/licznik 0), W ATtiny12 i w trybie programowania szeregowego końcówka służy jako wejście dla zegara szeregowego, SCK.
Ta końcówka może służyć jako wejście dla zewnętrznego przerwania 0, INT0. Zobacz do podrozdziału "Obsługa przerwań", gdzie znajdziesz opis włączenia obsługi tego przerwania. Zauważ, iż aktywność na tej końcówce wyzwoli przerwanie nawet wtedy, gdy końcówka pracuje jako wyjście (pozwala to wygenerować programowo przerwanie zewnętrzne 0). Końcówka służy również jako wejście odwracające AIN1 dla wbudowanego w mikrokontroler komparatora analogowego. W ATtiny12 i w trybie programowania szeregowego końcówka służy jako wejście danych szeregowych, MISO.
Ta końcówka służy jako span>wejście nieodwracające AIN0 dla wbudowanego w mikrokontroler komparatora analogowego. W ATtiny12 i w trybie programowania szeregowego końcówka pełni rolę szeregowego wyjścia danych, MOSI.
Podczas trybu wyłączenia
zasilania (ang. Power-down Mode),
przerzutniki Schmitta cyfrowych wejść są odłączone od końcówek wejściowych komparatora analogowego. To pozwala na występowanie
napięcia analogowego bliskiego
![]() |
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.