#include #include F_CPU #include F_CPU 4000000UL // Quarz mit 4.0 MHz #include // definiert _delay_ms() DDRC = (1 << DDC0) | (1 << DDC1); // portc pin 0 und 1 als ausgang definieren (zu poti) PORTC= (1< #include #ifndef F_CPU #define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */ #endif #include /* definiert _delay_ms() ab avr-libc Version 1.2.0 */ /* 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 Zeit zum Loslassen des Tasters geben */ _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 gedrueckt.. */ PORTD = PIND ^ ( 1 << PD7 ); /* ..LED an Port PD7 an- bzw. ausschalten */