Ich hab das ganze Projekt jetzt mal kopiert und alles rausgeschmissen, was ich nicht brauche. Hier die LED-Board.c:

Code:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#include <util/delay.h>
#include "ledboard.h"




const prog_char char_A[6] = {    0b00111111,
                                0b01001000,
                                0b01001000,
                                0b01001000,
                                0b00111111};
                                
const prog_char char_B[6] = {    0b01111111,
                                0b01001001,
                                0b01001001,
                                0b01001001,
                                0b00110110};
                                
const prog_char char_C[6] = {    0b00111110,
                                0b01000001,
                                0b01000001,
                                0b01000001,
                                0b00100010};


unsigned char LEDTable_text[30];


void putaintoled (void)
{
    unsigned char Pos_2;
    unsigned char Pos_1;


    Pos_1 = 0;
    Pos_2 = 0;
    while(Pos_2 <=4)
    {
        LEDTable_text[Pos_1] = char_A[Pos_2];
        Pos_1 = Pos_1 +1;
        Pos_2 = Pos_2 +1;
    }
            
    LEDTable_text[5] = 0b10000000;
}

// ------------------------------- Ab hier nur noch Funktionen um den Text mit den LEDs auszugeben -----------------------


void PrintByte2LEDs (unsigned char data, unsigned char posonboard) // Spalte der LED-Matrix ansteuern
{
    unsigned char Data_for_Block_dez = 0;
    if(1)
    {
        BOARDHORIZ_PORT = BOARDHORIZ_PORT & ~BOARDHORIZ1 & ~BOARDHORIZ2 & ~BOARDHORIZ3 & ~BOARDHORIZ4 & ~BOARDHORIZ5 & ~BOARDHORIZ6 & ~BOARDHORIZ7;
        if(data & 0b00000001)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ1;
        if(data & 0b00000010)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ2;
        if(data & 0b00000100)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ3;
        if(data & 0b00001000)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ4;
        if(data & 0b00010000)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ5;
        if(data & 0b00100000)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ6;
        if(data & 0b01000000)
            BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ7;
            
        if(posonboard<=8)
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
            Data_for_Block_dez = posonboard;
        }
        if((posonboard>8) && (posonboard<=16))
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
            Data_for_Block_dez = posonboard - 8;
        }
        if((posonboard>16) && (posonboard<=24))
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
            Data_for_Block_dez = posonboard - 16;
        }
        if((posonboard>24) && (posonboard<=32))
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
            Data_for_Block_dez = posonboard - 24;
        }
        if((posonboard>32) && (posonboard<=40))
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
            Data_for_Block_dez = posonboard - 32;
        }
        if((posonboard>40) && (posonboard<=48))
        {
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
            BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE6;
            Data_for_Block_dez = posonboard - 40;
        }
        unsigned char Data_for_Block_bin = 1<<(Data_for_Block_dez-1);
        
        BLOCKDATA_PORT = BLOCKDATA_PORT & ~BLOCKDATA1 & ~BLOCKDATA2 & ~BLOCKDATA3 & ~BLOCKDATA4 & ~BLOCKDATA5 & ~BLOCKDATA6 & ~BLOCKDATA7 & ~BLOCKDATA8;
        if(Data_for_Block_bin & 0b00000001)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA1;
        if(Data_for_Block_bin & 0b00000010)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA2;
        if(Data_for_Block_bin & 0b00000100)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA3;
        if(Data_for_Block_bin & 0b00001000)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA4;
        if(Data_for_Block_bin & 0b00010000)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA5;
        if(Data_for_Block_bin & 0b00100000)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA6;
        if(Data_for_Block_bin & 0b01000000)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA7;
        if(Data_for_Block_bin & 0b10000000)
            BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA8;
    }
}


void PrintText2LEDs (void)  //LEDTable_text auf die LED-Matrix ausgeben (muss periodisch aufgerufen werden)
{
    unsigned char Pos_in_LEDTable_text;
    for(Pos_in_LEDTable_text = 0; LEDTable_text[Pos_in_LEDTable_text]!=0b10000000; Pos_in_LEDTable_text++)
    {
        PrintByte2LEDs(0, Pos_in_LEDTable_text+1);
        _delay_us(1);
        PrintByte2LEDs(LEDTable_text[Pos_in_LEDTable_text], Pos_in_LEDTable_text+1);
        _delay_us(2);
        
    }
}


void LEDInitIO (void)
{
    BLOCKENABLE_DDR = BLOCKENABLE_DDR | BLOCKENABLE1 | BLOCKENABLE2 | BLOCKENABLE3 | BLOCKENABLE4 | BLOCKENABLE5 | BLOCKENABLE6;
    BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1 | BLOCKENABLE2 | BLOCKENABLE3 | BLOCKENABLE4 | BLOCKENABLE5 | BLOCKENABLE6;
    
    BLOCKDATA_DDR = BLOCKDATA_DDR | BLOCKDATA1 | BLOCKDATA2 | BLOCKDATA3 | BLOCKDATA4 | BLOCKDATA5 | BLOCKDATA6 | BLOCKDATA7 | BLOCKDATA8;
    BLOCKDATA_PORT = BLOCKDATA_PORT & ~BLOCKDATA1 & ~BLOCKDATA2 & ~BLOCKDATA3 & ~BLOCKDATA4 & ~BLOCKDATA5 & ~BLOCKDATA6 & ~BLOCKDATA7 & ~BLOCKDATA8;
    
    BOARDHORIZ_DDR = BOARDHORIZ_DDR | BOARDHORIZ1 | BOARDHORIZ2 | BOARDHORIZ3 | BOARDHORIZ4 | BOARDHORIZ5 | BOARDHORIZ6 | BOARDHORIZ7;
    BOARDHORIZ_PORT = BOARDHORIZ_PORT & ~BOARDHORIZ1 & ~BOARDHORIZ2 & ~BOARDHORIZ3 & ~BOARDHORIZ4 & ~BOARDHORIZ5 & ~BOARDHORIZ6 & ~BOARDHORIZ7;


}
Wie man sehen kann: Die Buchstaben A, B, und C liegen und bleiben im Flash, der LEDTable_text liegt im Ram (muss ja verändert werden)

Vielen Dank schonmal :-D
-schumi-