ATMEGA 8 |
ATMEGA 16/32 |
---|---|
ATTINY 13 |
|
ATTINY 25 |
|
ATTINY 2313 |
Pierwszy rejestr to DDRX (X to oznaczenie portu). W rejestrze tym ustawia się kierunek działania tego portu. Jedynka to wyjście na danej końcówce, zero to wejście.
W Bascomie ustawia się to instrukcją Config Port X = Input lub [Output] lub [255] lub [0] lub dowolna wielkość od 0 - 255 dziesiętnie, binarnie, szesnastkowo jak kto lubi. Jeśli kogoś interesuje tylko dana końcówka stosuje Config PinX.Y (Y to numer końcówki portu X). Np Config Pinb.1 = 1 lub 0 lub input lub output.
Drugi rejestr to PortX (Port X.Y). Jest to rejestr wyjściowy. To co w nim zapiszemy pojawi się na końcówkach ustawionych jako wyjścia.
W Bascomie stosujemy nazwę rejestru i piszemy Portb.1 = 1 - końcówka b.1 przyjmuje stan wysoki.
Trzeci rejestr to PINX. Jeśli końcówka ustawiona jest jako wejście to jej stan jest uwidoczniony w rejestrze PINX. Chcąc zareagować na stan końcówki piszemy IF PINX.Y Then ...
Jeśli napiszemy IF PORTX Then to działać nie będzie. Nie można zapisać nic do rejestru PIN. Jest to rejestr tylko do odczytu (nie dotyczy nowych AVR'ów).
Końcówki ustawione jako wejścia możemy natomiast "modyfikować" zmieniając dane w rejestrze PORTX. Przypisanie do danej końcówki jedynki poprzez PORTb.1 = 1 uzyskujemy załączenie rezystora podciągającego końcówkę do Vcc. PORTB.1 = 0 ustawie końcówkę wejściową w stanie wysokiej impedancji.
Przykład: Końcówka b.1 jako wejście podciągnięte do Vcc
Config Pinb.1 = 0 : Portb.1 = 1 |
Ta sama końcówka jako wyjście, stan początkowy wysoki
Config Pinb.1 = 1 : Portb.1 = 1 |
Końcówka jako wejście, stan wysokiej impedancji
Config Pinb.1 = 0 : Portb.1 = 0 |
Końcówka jako wyjście, stan początkowy niski
Config Pinb.1 = 1 : Portb.1 = 0 |
Na końcówce jako wyjście wystawiamy poziom wysoki:
Portb.1 = 1 'niski Portb.1 = 0 |
Sprawdzamy stan końcówki ustawionej jako wejście:
If Pinb.1 = 1 Then ... |
Na porcie b ustawiamy same jedynki:
Portb = 255 |
Sprawdzamy czy na wszystkich końcówkach portu b jako wejście jest jedynka
IF Pinb = 255 Then ... |