#include "keys.h" void setupTimer0() { // Configure Timer0 for CTC mode TCCR0A |= (1 << WGM01); // Set Waveform Generation Mode bits for CTC TCCR0B |= (1 << CS01) | (1 << CS00); // Set prescaler to 64 OCR0A = 249; // Set Output Compare Register to 249 for ~1ms interrupt TIMSK0 |= (1 << OCIE0A); // Enable Timer0 Output Compare A Match interrupt } void setupRegisters(){ DDRD = 0xff; // Data direction register D (D0 -> D6) as output // PORTD = 0xff; // setting bit for 7-segment show 0 // => spielt keine Rolle, wird von der while Schleife �bernommen DDRB = 0x01; // Data direction register B (B0) as output and DDRB (B1, B2) as input PORTB |= (1 << PINB1) | (1 << PINB2) ; // setting bit for teens B0=0 and SW1-2 // PINB=0 => start with LED3 (Einer) // mit unserem Atmega nicht m�glich, da keine PCINT8_vect und PCINT9_vect vorhanden // DDRC = 0x00; // Data direction register C as input for SW1 and SW2 // PORTC |= (1< PINC0 and SW2 -> PINC1 cli(); // clear global interrupt flag: interrupts will be immediately disabled PCICR |= 0x01; // Pin Change Interrupt Control Register: turn on PortB PCMSK0 |= (1 << PINB1) | (1 << PINB2); // trigger interrupt when SW1 or SW2 is pressed sei(); // set global interrupt enable } void init(){ setupTimer0(); setupRegisters(); }