Zitat Zitat von sast
Wenn sich der Zustand des Ausgangs mit dem Zustand des Eingangs ändern soll, dann musst du auch den Ausgang wieder zurück setzen
Damn, du hast recht - hatte ich zuerst auch in meinem Beitrag angekreidet und dann in einem Anfall geistiger Umnachtung wieder rausgenommen ...

@fuxx: Der zweite Teil deiner Fallunterscheidung fehlt - du setzt zwar den Ausgang auf High, aber wenn die Fallunterscheidung "false" ergibt, tust du genau - nichts, wie du beobachtet hast.

Korrigiert sähe es etwa so aus:
Code:
#include "asuro.h"
#include <avr/io.h>
#include <stdlib.h>
#include <avr/delay.h>
#include <inttypes.h>

int main(void) {
     DDRD = 0xff;
     DDRB = 0x00; //PB als EIngang
     PORTB = 0xff; //internen PULL-UP einschalten
     while (1) {
          if (PINB & (1<<PINB0)) {
               PORTD = (1<<PD3);
          } else {
               PORTD = 0x00;
          }
    }
}
mfG
Markus

Edit: Nachtrag, die Variante mit der Schleife ist ziemlicher Käse, solange wie die Bedingung erfüllt ist, rennt das Teil im Kreis - wenn du noch was anderes tun willst, gute Nacht ...