SBI verhält sich anders als SBR!!

Mit SBI wird immer nur ein einzelnes Bit gesetzt, Adressierung ist also 0...7. Mit SBI PORTB, 1 hast Du also PB1 geschaltet, nicht PB0.

Das mit den internen pullups funktioniert schon. Du mußt allerdings drauf achten, das Du bei Ausgaben in der Art out PORTB, Temp immer alle 8bit beschreibst, da in Deinem Programm in der Schleife Temp mit 0 oder 1 geladen wird überschreibst Du das vorher gesetzte Bit 1 im PortD.

Zu guter letzt: beim einlesen von PINB isteine Maskierung des Einganges sinnvoll. Also ANDI Temp, 0x02. Auch die von Dir als Ausgang eingeschalteten Pins werden nämlich als "1" im PIND zurückgelesen.

Rajko