Guten Tag,

ich habe mit meinem mini-Programm ein Problem.

Jedes mal nach dem Neustarten oder Reseten des Kontrollers wird die Interrupt-Funktion ausgeführt und erst dann das Hauptprogramm.

Nun habe ich schon gelesen ,dass man in Assembler die erste Speicheradresse überspringen muss, um das zu unterbinden.
Aber ich finde nichts ,wie ich sowas in "C" machen kann.

Kann mir vlt. jemand helfen?

Vielen Dank!
Code:
/*
 * Ampel.c
 *
 * Created: 07.08.2013 10:36:06
 *  Author: en
 */ 

#define F_CPU 1600000UL

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

// eigene Bezeichnungen
#define		rot		PC0
#define		gelb	PC1
#define		gruen	PC2
#define		ein		1
#define		aus		0

//volatile unsigned char _taster=1;


ISR (INT1_vect)
{
	_delay_ms(80);
	PORTC	 |= (1 << PC4);
	_delay_ms(1000);
	PORTC &=~(1<<PC4);
	
	
}

void rot_schalten(unsigned int i)
{
	if (i==ein){PORTC	 |= (1 << rot);}   // Setzen
	else {PORTC &= ~(1 << rot);}  // Rücksetzen
	//_delay_ms(1000);
	
	
	};

void gelb_schalten(unsigned int i)
{
	if (i==ein){PORTC	 |= (1 << gelb);}   // Setzen
	else {PORTC &= ~(1 << gelb);}  // Rücksetzen
	//_delay_ms(1000);
	
	
};


void gruen_schalten(unsigned int i)
{
	if (i==ein){PORTC	 |= (1 << gruen);}   // Setzen
	else {PORTC &= ~(1 << gruen);}  // Rücksetzen
	//_delay_ms(1000);
	
	
};


int main(void)
{  cli();
	
	 GICR |= (1 << INT1);               
	 MCUCR |= (1 << ISC11);
	//PORT A als Ausgang
	PORTC	=	0x00;
	DDRA	=	0xFF;
	
	//PORT C als Ausgang
	PORTC	=	0x00;
	DDRC	=	0xFF;
	
	//PORT D als Eingang
	
	DDRD	=	1<<PD3;
	PORTD	=	1<<PD3;
	SREG |= (1<<7);
	
    while(1)
    {
		
		
		rot_schalten(ein); 
		_delay_ms(1000);
		gelb_schalten(ein);
		_delay_ms(600);
		rot_schalten(aus);
		gelb_schalten(aus);
		gruen_schalten(ein);
		_delay_ms(1000);
		gruen_schalten(aus);
		gelb_schalten(ein);
		_delay_ms(600);
		gelb_schalten(aus);
		
    }
}