// Multiplex7seg V 1.0 (c) Oliver Mezger 9.1.2010 #include // Definitionen laden #include // Delay-Bibliothek laden #include // Zuordnungen zu Ports #define SegmentIn PINA #define SegmentOut PORTA #define SegmentDdr DDRA #define TastaturIn PINB #define TastaturOut PORTB #define TastaturDdr DDRB #define StelleIn PINC #define StelleOut PORTC #define StelleDdr DDRC const unsigned char bcd_7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; volatile unsigned char anzeige[4]={0,0,0,0}; ISR(TIMER0_OVF_vect){ static unsigned char spalte=1,dzeiger=0; TCNT0=150; SegmentOut = bcd_7[anzeige[dzeiger++]]; // Segmentmuster ausgeben StelleOut = (StelleOut & 0b11100000) | spalte; // Stelle einschalten spalte *= 2; // naechste Spalte if (dzeiger >3){ spalte = 1; dzeiger = 0; } } void zaehle(){ // erhoehe Zaehler um 1 unsigned char i; anzeige[0]++; for(i=0;i<3;i++){ if (anzeige[i] > 9){ anzeige[i]=0; anzeige[i+1]++; } } } int main(){ unsigned char led =0; TCCR0 = 3; // Systemtakt / 64 TIMSK |= (1<