Dein Pgm sollte so aussehen:
#include <avr/io.h>
int main( void )
{
DDRD = (1 << PB5); // Den Port D, Pin 5 als Ausgang
PORTD = (1 << PB5); // Den Pin 5 auf 1 schalten
// und den Prozessor durch eine Endlosschleife beschaeftigen
while( 1 ) {
}
}
Wenn die die Schreibweise 1 << PB5 noch nichts sagt,
kannst du auch schreiben
DDRD = 0x20; // Bit 5 gesetzt
PORTD = 0x20; // Ebenfalls Bit 5 gesetzt
Bei 0x20 sieht man halt nicht so gut, welches Bit gemeint
ist. Bei 1 << PB5 ist das klarer.
Eine andere Schreibweise wäre:
DDRD = 0b00100000;
PORTD = 0b00100000;
auch hier sieht man wieder besser, welches Bit gemeint ist.
Aber am besten gewöhnst du dir gleich die 1. Schreibweise
an.
PS: Bist du sicher, dass deine LED leuchten, wenn eine
1 am Portausgang anliegt. Meist ist es nämlich umgekehrt:
Um die Led zum leuchten zu kriegen, muss man eine 0 ausgeben.
Probier mal folgendes:
//
// Sowohl Pin4 als auch Pin5 als Ausgang
//
DDRD = ( 1 << PB5 ) | ( 1 << PB4 );
//
// Aber nur an Pin5 eine 1
//
PORTD = ( 1 << PB5 );
eine der beiden Led, entweder die an Pin 4 oder die an Pin 5
muss jetzt leuchten. Wenn die an Pin5 leuchtet, dann muss
man eine 1 an den Pin geben. Wenn die an Pin 4 leuchtet,
dann muss man eine 0 ausgeben.