// ================================================================== // Include C Libriaries // ================================================================== #include #include #include #include // ================================================================== // Definition der Segmente pro Ziffer // ================================================================== #define zifferNull PORTA = (1<=68)) // Empfang beendet, Ergebnisse in Display anzeigen { modus=1; } } // Modus "Zahl auf Display anzeigen" if (modus==1) { cli(); PORTB&=!(1< 0) { ziffer3 = zahl % 10; } else { ziffer3 = 10; } zahl = zahl / 10; // Hunderter if (zahl > 0) { ziffer2 = zahl % 10; } else { ziffer2 = 10; } zahl = zahl / 10; // Tausender if (zahl > 0) { ziffer1 = zahl % 10; } else { ziffer1 = 10; } zahl = zahl / 10; for (count = 1; count <= dauer; count++) { // alle Ziffern und Segmente ausschalten PORTA = 0; PORTB = 0b00000101; PORTD = 0; // Tausender PORTB = 0b00000101; aktiviereSegmente(ziffer1); PORTB |= (1<<7); // 3 + 4 _delay_us(200); // Hunderter PORTB = 0b00000101; aktiviereSegmente(ziffer2); PORTB |= (1<<6); // 3 + 3 _delay_us(200); // Zehner PORTB = 0b00000101; aktiviereSegmente(ziffer3); PORTB |= (1<<5); // 3 + 2 _delay_us(200); // Einser PORTB = 0b00000101; aktiviereSegmente(ziffer4); PORTB |= (1<<4); // 3 + 1 _delay_us(200); } // alle Ziffern und Segmente ausschalten PORTA = 0; PORTB = 0b00000101; PORTD = 0; } void aktiviereSegmente(uint8_t ziffer) { switch (ziffer) { case 0: zifferNull; break; case 1: zifferEins; break; case 2: zifferZwei; break; case 3: zifferDrei; break; case 4: zifferVier; break; case 5: zifferFuenf; break; case 6: zifferSechs; break; case 7: zifferSieben; break; case 8: zifferAcht; break; case 9: zifferNeun; break; case 10: zifferAus; break; } }