Hey Danke,
die Eingänge hingen wirklich in der Luft ;P
Habe es endlich geschafft dem IC Leben einzuhauchen 
Steuer den Demux jetzt mit nem ATmega32 an,
und verwende folgendes Programm:
Code:
#include <avr/io.h>
#include <stdint.h> int
#define F_CPU 512000UL
#include <util/delay.h>
#include <avr/interrupt.h>
void main() //Schaltet LED 1 - 5
{
DDRD = (1 << PD5) | (1 << PD6) | (1 << PD7); //Ausgänge definieren
DDRC = (1 << PC0) | (1 << PC1);
while ( 0 < 1)
{
int dauer = 10;
LED(1);
Sleep(dauer);
LED(2);
Sleep(dauer);
LED(3);
Sleep(dauer);
LED(4);
Sleep(dauer);
LED(5);
Sleep(dauer);
}
return(0);
}
void Sleep(int dauer)
{
TCNT1H=0; // Timer Daten Register Timer1 High auf 0 Setzen
TCNT1L=0; // Timer Daten Register Timer1 Low auf 0 Setzen
TCCR1B |= (1 << CS00) | (1 << CS02);
int zaehler= 0;
while ((TCNT1 < 500) | (zaehler < dauer))
{
zaehler++;
}
return(0);
}
void E(int w) //EINGÄNGE
{
switch(w)
{
case 1:
PORTC |= (1 << PC0); // DEMUX Eingang A
break;
case 2:
PORTD |= (1 << PD7); // DEMUX Eingang B
break;
case 3:
PORTD |= (1 << PD6); // DEMUX Eingang C
break;
case 4:
PORTD |= (1 << PD5); // DEMUX Eingang C
break;
}
return(0);
}
void LED(int n) //siehe Tabelle Demux 4514
{
switch(n)
{
case 1:
Str();
break;
case 2:
E(1);
Str();
break;
case 3:
E(2);
Str();
break;
case 4:
E(1);
E(2);
Str();
break;
case 5:
E(3);
Str();
break;
}
return(0);
}
void Str() //Strobe: damit der Demux Eingänge verarbeitet
{
PORTC |= (1 << PC1); //Strobe an
Sleep(1); // Ohne zu schnell für IC(komisch?)
PORTC &= ~(1 << PC1) | ~(1 << PC0); //Strobe und alle anderen Eingänge aus
PORTD &= ~(1 << PD5) | ~(1 << PD6) | ~(1 << PD7);
return(0);
}
Im Moment schalte ich also nur die Ausgänge S0 - S4,
es werden die Ausgänge aber komischerweise in folgender Reihenfolge geschaltet:
S0, S2 und S3.
Mehr geht nicht.
S1 und S4 lässt er einfach aus 
Dort ist auch keine Zeitverzögerung festzustellen.
Hat einer von euch ne Idee?
Bin auf jeden Fall schonmal richtig happy das das jetzt geklappt hat 
Vielen Dank,
Grüße mize03
Lesezeichen