habs jetzt so abgeändert, LED blinkt auch.. allerdings net im Sekundentakt. Falsch gerechnet ?!?!

Code:
#include <iom88.h>
#include <ina90.h>

#define  DLY_1_SEC        1953     // Formula: Time for one Timer0 Overflow t=(Prescalevalue*256)/fosc
                                   // Prescalevalue=8, fosc=4MHz --> t=0,512 msec for one overflow
                                   // To get a delay of 1 sec --> 1sec/0,512msec=1953 overflows are needed

volatile unsigned int pause_timer; // must be volatile or the interrupt routine will not change the value

void delay_init(void);

void delay(int tvalue);

__task void main(void)
{
  delay_init();

  while(1)
  {
    delay(DLY_1_SEC);
    PORTB ^= (1<<PB0);  // toggle LED
  }
}


void delay_init(void)
{
  DDRB = 0xff; 	// set for all outputs
  PORTB = 0xff;	// turn off all leds
	
  TCCR0B |= (1 << CS01);  // Timer clock = system clock / 8
}



// Generates an interrupt every 0.512 ms for fosc = 4 MHz and prescale of 8

#pragma vector=TIMER0_OVF_vect
__interrupt void tim0_ovf(void)
{
	// Decrement timer if timer is not 0
          pause_timer--;
          if(pause_timer ==0)
          {
            TIMSK0 &=~(1<<TOIE0); // Disable T/C0 overflow interrupt
            TIFR0  |= (1<<TOV0);  // Clear T/C0 overflow flag
          }
}


void delay(int tvalue)
{
  pause_timer = tvalue;

  TIMSK0 |= (1<<TOIE0);	  // Enable T/C0 overflow interrupt

  __enable_interrupt();   // enable interrupts

  while(1)
  {
    if(!(TIMSK0 & (1<<TOIE0))) break;
  }

  __disable_interrupt();   // disable interrupts
}