Also der gepostede Code erweckt garantiert nur den Eindruck das alles funktioniert, auch mit PIND == 0xff als while Bedingung. In wirklichkeit rennt der Controller jedes mal in einen Rest sobald PIND == 0xff nicht mehr erfüllt ist. Das ist hochgradiger Pfusch
Programme die innerhalb von main keine while(1) Schleife enthalten, sind meistens böse.
Was du machen möchtest, sollte man so realisieren.
Code:#include <avr/io.h> #include <util/delay.h> int main(void){ DDRB |= 0xff; DDRD |= 0x00; while(1){ if(PIND == 0x00){ PORTB &= ~0xff; _delay_ms(1000); PORTB |= 0xff; _delay_ms(1000); } } return 0; //Diese Zeile darf niemals ausgeführt werden! Ansonsten -> undefiniert, meist Reset }







Zitieren

Lesezeichen