Jops so macht das auch für meine (inzwischen) bescheidenen C Kenntnisse MEHR sinn.Code:#include <avr/io.h> #include <inttypes.h> #ifndef F_CPU #define F_CPU 3686400UL /*Quarz mit 3.6864 Mhz */ #endif #include <util/delay.h> /* definiert _delay_ms() */ /* Einfache Funktion zum Entprellen eines Tasters */ inline uint8_t debounce(volatile uint8_t *port, uint8_t pin) { if ( ! (*port & (1 << pin)) ) { /* Pin wurde auf Masse gezogen, 100ms warten */ _delay_ms(100); if ( ! (*port & (1 << pin)) ) { /* Anwender hat Zeit zum Loslassen des Tasters gegebn */ _delay_ms(100); return 1; } } return 0; } int main(void) { DDRB &= ~( 1 << PB0 ); /* PIN PB0 auf Eingang (Taster) */ PORTB |= ( 1 << PB0 ); /* Pullup-Widerstand Aktivieren */ if (debounce(&PINB, PB0)) /* Falls Taster an PIN PB0 Gedrückt */ { PORTD = PIND ^ ( 1 << PD7 ); /* LED an PinD7 an bzw ausschalten */ } PORTB = (1<<PB4); return 0; }
Aber: Die Sim mag immer noch nich. Ich mein es müsste ja zumindest PB4 immer auf 1 sein oder







Zitieren

Lesezeichen