Von PIND liest du, wenn du einen Taster lesen möchtest etc.
Wenn du eine LED blinken lassen möchtest, schreibst du auf PORTD.
Du schreibst den Zustand der LED's 1 und 2 in PIND, nicht in PORTD,
weshalb der Controller das Resultat nicht an den LED-Ausgang anlegt.
PORTX Wenn du ein Signal ausgeben willst
PINX Wenn du es einlesen willst.
Wenn du in deinem Programm etwas von PORTX einliest, bekommst du an dem
jeweiligen Pin eine 1 wenn der Controller gerade die LED zum leuchten
bringt, und eine null wenn er sie gerade ausschaltet. Das nutzt
PORTD ^= LED7;
Hier wird die aktuelle Ausgabe vom Controller an PORTD eingelesen und
anschließend wird mit PORTD das gemacht:
PORTDvorher LED7 | PORTDnachher
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0
Steht an der Bitstelle in LED7 eine 1, so wird das gleichwertige Bit in
PORTD umgekehrt.
Siehe auch hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
Das Tutorial ist Gold wert. Auch wenn du C lernst, ein Blick in die
Assembler-Grundlagen lohnt.
http://openbook.galileocomputing.de/c_von_a_bis_z/000_c_vorwort_001.htm
Gutes C-Tutorial auch als Handbuch zu gebrauchen.