Das ergibt ein blinken einer Led an PD5 im Sekundentakt.Code:#include <avr/io.h> #include <avr/interrupt.h> volatile unsigned char time; ISR(TIMER1_COMPA_vect){ /* ISR Timer1 Output Compare Match */ time++; /* Variable wird um 1 erhöht */ } int main(void){ DDRD=0xff; /* Gesamtes PortD ist Ausgang */ OCR1A=625; /* Compare Match Wert, ergibt mit Prescaler einen 10msec Takt */ TIMSK=(1<<OCIE1A); /* Compare Match freigeben */ TCCR1B= (1<<WGM12)|(1<<CS12); /* Compare Match, Prescaler /256 */ sei(); for(;;){ if (time>=100){ /* Takt mal 100 ergibt 1sec */ PORTD^=(1<<PD5); /* PortD5 wird getoggled */ time=0; /* time auf 0 stellen */ } } }
Lesezeichen