Du mußt Dir vor den Augen halten, daß ein Port sozusagen ein Byte darstellt
Ein Byte -> 8 Bits bei PortD kann man das ganz gut sehen. Man zählt immer von
rechts nach links und man Fängt immer bei null an:

PortD -> 0 0 0 0 0 0 0 0
in Pin augedrückt PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
damit ergeben sich 7 6 5 4 3 2 1 0
in zwier Potenz 128 64 32 16 8 4 2 1

mithin heißt ein Ausdruck wie sbi PORTD,PD4
setze am PORTD das Bit 4 mit dem Ergebnis 00010000

Bedenke daß man immer bei null anfangen muß.

Wie Du siehst ist es für Dich einfacher dem assembler zu sagen, daß Du PD4 setzen willst, als erstmal anfangen zu zählen, um welchen bit es sich handelt.

Gruß Sebastian

P.S. Na ja, früher oder später kommst Du um die interrupts nicht rum, aber
glaube mir, sie sind einfacher, als Du denkst.
Hauptsache Du begreifst erstmal, wie der Programmablauf funktioniert und was die
Ganzen Ports und Pins zu sagen haben