Hallo, erstmal langsam.
Ein AVR hat 3 Register für die Ports PINx = zustand des Ports, wenn der extern angesprochen wurde.
DDRx = Data Direction Register eine 1 bedeutet es ist ein Ausgang eine 0 - es ist ein Eingang.
PORTx = gezieltes setzen eines Ports auf 0 oder 1. Wenn auf dem entsprechenden Bit im DDRx eine 0 steht, wird der interne Pullup bei einer 1 im PORTx Register aktiviert.
In deinem Mini Prog fragst Du den Zustand des PORTB.0 ( PINB &(1<<PB0)) ab.
Das ist ja kein aktives setzen des Ports, sondern eine Zustandsabfrage ( "if" ).
Wenn Du den Port setzen willst musst Du "PORTB | = (1<<PB0);" ( das entspricht PORTB | = 0b00000001; ) eingeben.
Das entsprechende Bit im DDRB muss dazu aber auch auf 1 gesetzt sein, sonst wird nur der Pullup des Ports aktiviert.
Auch wenn Du es nicht glauben magst - Datenblatt lesen hilft!
Lesezeichen