habe jetzt mal das 1. programm geschrieben, sowie ich denke dass es sinn macht. ist jetzt so aufgebaut dass er i hochzählen lässt. bei jedem i wird x0 berechnet. es leuchtet die kontrollled dass er auch rechnet. dann wird mit if abgefragt ob x0=y0. wenn es der fall ist, dann leuchtet die LED des Bandpasses. Und gegebenenfalls wird mit SerWrite ein Fallx gesendet.Außerdem wird am Ende der if schleife alle Variablen wieder auf 0 gesetzt, dass x0 immer neu berechnet werden kann.

habe leider viele errors drin. es wird wohl gesagt dass die Pins nicht deklariert sind oder so...

Code:
#include <inttypes.h>

void bpfilter(int8_t *input,int8_t *output, uint16_t *length, int32_t koeff)
{

int32_t a2;                                       	/* a2 als Integervariable festlegen*/
int32_t a3;                                       	/* a3 als Integervariable festlegen*/
int32_t GAIN_FRAC;                                	/* GAIN_FRAC als Integervariable festlegen*/
int32_t x0,x1,x2;                                 	/* x0,x1,x2 als Integervariable festlegen*/
int32_t y0,y1,y2;                                 	/* y0,y1,y2 Integervariable festlegen*/
uint16_t n;                                       	/* n Integervariable festlegen*/
uint16_t i;                                       	/* i als Integervariable festlegen*/


x1=0;                                             		/* Wert für x1 festlegen*/
x2=0;                                             		/* Wert für x2 festlegen*/
y0=0;                                             		/* Wert für y0 festlegen*/
y1=0;                                             		/* Wert für y1 festlegen*/
y2=0;                                             		/* Wert für y2 festlegen*/
x0=1;                                             		/* Wert für x0 festlegen*/
length=100;		                          				/* Wert für length festlegen*/



  for (i=1;i<7;i++)				        				/* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
  {
    if (i==1)                                           /* Schleife 1 mit den Werten für Bandpass 1*/
	   {
	    a2=2;
	    a3=3;
	    GAIN_FRAC=4;

		for (n=0;n<length;n++)                  		/* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                                	/* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);    	/* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);          	/* Gleichung um Ausgang zu berechnen*/

	       DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/
		

		   if (y0==x0)
		   		{
		    	DDRC|=(1<<PC1);								/*Setze PC_1 auf output*/
		    	PORTC|=(1<<PC1);							/*Setze PC_1 auf 1 --> LED 1 leuchtet*/
				Sleep(100);
				PORTC&=~(1<<PC1);							/*Setze PC_1 auf 0 --> LED 1 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/
				}	
		   }
	   }

	if (i==2)	                                		/* Schleife 2 mit den Werten für Bandpass 2*/
	   {
        a2=1;
	    a3=2;
	    GAIN_FRAC=3;

		for (n=0;n<length;n++)                  		/* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                                	/* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);    	/* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);          	/* Gleichung um Ausgang zu berechnen*/
		   
           DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/
		   
		   if (y0==x0)
		   		{
				DDRC|=(1<<PC4);								/*Setze PC_4 auf output*/
		    	PORTC|=(1<<PC4);							/*Setze PC_4 auf 1 --> LED 2 leuchtet*/
				Sleep(100);
				PORTC&=~(1<<PC4);							/*Setze PC_4 auf 0 --> LED 2 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

				SerWrite("fall 1");							/*Über IR-Diode Fall1 senden*/
				Msleep(100);
				}
			}

	   }

	if (i==3)                                       	/* Schleife 3 mit den Werten für Bandpass 3*/
	   {
        a2=3;
	    a3=2;
	    GAIN_FRAC=1;

		for (n=0;n<length;n++)                  		/* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                                	/* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);    	/* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);          	/* Gleichung um Ausgang zu berechnen*/

           DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

			if (y0==x0)
		   		{
				DDRC|=(1<<PC3);								/*Setze PC_3 auf output*/
		    	PORTC|=(1<<PC3);							/*Setze PC_3 auf 1 --> LED 3 leuchtet*/
				Sleep(100);
				PORTC&=~(1<<PC3);							/*Setze PC_3 auf 0 --> LED 3 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

				SerWrite("fall 2");							/*Über IR-Diode Fall2 senden*/
				Msleep(100);
				}
		   }
	   }

    if (i==4)                                          /* Schleife 4 mit den Werten für Bandpass 4*/
	   {
        a2=4;
	    a3=2;
	    GAIN_FRAC=3;

		for (n=0;n<length;n++)                  		/* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                               		/* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);    	/* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);          	/* Gleichung um Ausgang zu berechnen*/

           DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

		   if (y0==x0)
		   		{
			    DDRB|=(1<<PB5);								/*Setze PB_5 auf output*/
		    	PORTB|=(1<<PB5);							/*Setze PB_5 auf 1 --> LED 4 leuchtet*/
				Sleep(100);
				PORTB&=~(1<<PB5);							/*Setze PB_5 auf 0 --> LED 4 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

				SerWrite("fall 3");							/*Über IR-Diode Fall3 senden*/
				Msleep(100);
				}
		   }
	   }

    if (i==5)                                          /* Schleife 5 mit den Werten für Bandpass 5*/
	   {
        a2=1;
	    a3=1;
	    GAIN_FRAC=1;

		for (n=0;n<length;n++)                 		   /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                                   /* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);       /* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);             /* Gleichung um Ausgang zu berechnen*/

           DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

           if (y0==x0)
		   		{
			    DDRB|=(1<<PB4);								/*Setze PB_4 auf output*/
		    	PORTB|=(1<<PB4);							/*Setze PB_4 auf 1 --> LED 5 leuchtet*/
				Sleep(100);
				PORTB&=~(1<<PB4);							/*Setze PB_4 auf 0 --> LED 5 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

				SerWrite("fall 4");							/*Über IR-Diode Fall4 senden*/
				Msleep(100);
				}
		   }
	   }

    if (i==6)                                         /* Schleife 6 mit den Werten für Bandpass 6*/
	   {
        a2=2;
	    a3=4;
	    GAIN_FRAC=3;

		for (n=0;n<length;n++)                  	  /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
		   {
		   x0=input;                                  /* x0 als Eingang festlegen*/
		   y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16);      /* Gleichung um y0 zu berechnen*/		   
		   x2=x1;
		   x1=x0;
		   y2=y1;
		   y1=y0;

		   output[n]=((y0*GAIN_FRAC)>>16);            /* Gleichung um Ausgang zu berechnen*/

           DDRB|=(1<<PB1);								/*Setze PB_1 auf output*/
		   PORTB|=(1<<PB1);							    /*Setze PB_1 auf 1 --> KontrollLED leuchtet*/
		   Sleep(100);
		   PORTB&=~(1<<PB1);							/*Setze PB_1 auf 0 --> KontrollLED geht aus*/
		   x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
		   y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

           if (y0==x0)
		   		{
			    DDRB|=(1<<PB0);								/*Setze PB_0 auf output*/
		    	PORTB|=(1<<PB0);							/*Setze PB_0 auf 1 --> LED 6 leuchtet*/
				Sleep(100);
				PORTB&=~(1<<PB0);							/*Setze PB_0 auf 0 --> LED 6 geht aus*/
				x0=x1=x2=0;									/*Alle Variablen auf 0 setzen*/
				y0=y1=y2=0;									/*Alle Variablen auf 0 setzten*/

				}
		   }
	   }
	      
  }

}
habe jetzt diese errors:
../ZUSATZ1552.c: In function 'bpfilter':
../ZUSATZ1552.c:30: warning: assignment makes pointer from integer without a cast
../ZUSATZ1552.c:42: warning: comparison between pointer and integer
../ZUSATZ1552.c:44: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:53: error: 'DDRB' undeclared (first use in this function)
../ZUSATZ1552.c:53: error: (Each undeclared identifier is reported only once
../ZUSATZ1552.c:53: error: for each function it appears in.)
../ZUSATZ1552.c:53: error: 'PB1' undeclared (first use in this function)
../ZUSATZ1552.c:54: error: 'PORTB' undeclared (first use in this function)
../ZUSATZ1552.c:55: warning: implicit declaration of function 'Sleep'
../ZUSATZ1552.c:63: error: 'DDRC' undeclared (first use in this function)
../ZUSATZ1552.c:63: error: 'PC1' undeclared (first use in this function)
../ZUSATZ1552.c:64: error: 'PORTC' undeclared (first use in this function)
../ZUSATZ1552.c:79: warning: comparison between pointer and integer
../ZUSATZ1552.c:81: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:99: error: 'PC4' undeclared (first use in this function)
../ZUSATZ1552.c:106: warning: implicit declaration of function 'SerWrite'
../ZUSATZ1552.c:107: warning: implicit declaration of function 'Msleep'
../ZUSATZ1552.c:119: warning: comparison between pointer and integer
../ZUSATZ1552.c:121: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:139: error: 'PC3' undeclared (first use in this function)
../ZUSATZ1552.c:158: warning: comparison between pointer and integer
../ZUSATZ1552.c:160: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:178: error: 'PB5' undeclared (first use in this function)
../ZUSATZ1552.c:197: warning: comparison between pointer and integer
../ZUSATZ1552.c:199: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:217: error: 'PB4' undeclared (first use in this function)
../ZUSATZ1552.c:236: warning: comparison between pointer and integer
../ZUSATZ1552.c:238: warning: assignment makes integer from pointer without a cast
../ZUSATZ1552.c:256: error: 'PB0' undeclared (first use in this function)
Build failed with 13 errors and 16 warnings...