Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
#include <avr/signal.h>
uint8_t second=0;
uint8_t secled=0;
uint8_t minute=0;
uint8_t hour=0;
SIGNAL (SIG_OVERFLOW1)
{
second ++;
PORTD ^= (1<<PD0);
if(second == 60)
{
second = 0;
minute ++;
};
if(minute == 60)
{
minute = 0;
hour ++;
};
if(hour == 24)
{
hour = 0;
};
};
int main(void)
{
DDRD = 0xff;
DDRB = 0xff;
OCR1AL = 0x8d;
OCR1AH = 0x5b;
TCNT1L = 0x73;
TCNT1H = 0xa4;
TIMSK |= (1 << TOIE1);
TCCR1B |= (1<<CS10)|(1<<CS11); //64
sei();
while(1)
{
};
}
so funzts mit meinem ATMEGA16 und 6Mhz Quarz, ich weiß zwar nicht wa sbei dir falsch ist , aber vielleicht hilft dir mein code
EDIT//
wenn ich das richtig sehe benutzt du den Timeroverflow ja gar nicht das musst du soviel ich weiß mit dem SIGNAL (SIG_OVERFLOW1)
{;} machen , also alles was in der { } ist führt er aus sobald der timer neu anfängt
Lesezeichen