//PORTA und PortD mit Pull-up Widerständen, PORTA = 8xTaster u. PORTD = 8xLED´s //*** Header Dateien für Preprozessor ******************************** #define F_CPU 3686400 // Taktfrequenz des Boards (ATmega16) #include // AVR Register und Konstantendefinitionen #include // Zeitfunktionen #include // diverse int-Datentypen //*** Portbelegung *************************************************** //PORTB Counter //PORTC PC1 Display **Daten // PC0 Display **Takt //PORTA PA0 Taster1 **Hochzählen (Werteinstellung) "Ein // PA1 Taster2 **Lichtschranke Zählvorgang "Ein" // PA2 Taster3 **Runterzählen (Werteinstellung) "Ein // PA3 Taster4 **Reset von (Werteinstellung und Lichtschranke) "Ein" //PORTD PD0 LED (Ausgang) //*** Unterprogramm Ausgang LED ********************************** void LED_Ausgang(void) { PORTD|= (1<= 1) && (StartAnzahl >= 1)) { LED_Ausgang(); } { while(1) { switch (PINA) //PORTA wird eingelesen { case 0xFE: //Taste1(PA0) Vorgabewert einstellen VorgabeAnzahl = 1; break; case 0xFD: //Taste2(PA1) Reset VorgabeAnzahl = 0; break; case 0xFB: //Taste3(PA2) Vorwaerts Zaehlwert = 0; break; case 0xF7: //Taste4(PA3) Rueckwaerts !!!Vielleicht auch >=1 Zaehlwert = 1; break; } if (VorgabeAnzahl == 1) { if (Zaehlwert == 0) Counter1++; if (Zaehlwert == 1) Counter1--; PORTB = Counter1; _delay_ms(200); //PORTD = 0xfe; //PORTD PD0 LED //return ; } } while(1) { switch (PINA) //PORTA wird eingelesen { case 0xef: //Taste5(PA4) Startwert einstellen StartAnzahl = 1; break; case 0xdf: //Taste6(PA5) Reset StartAnzahl = 0; break; case 0xbf: //Taste7(PA6) Vorwaerts Zaehlwert = 0; break; } if (StartAnzahl == 1) { if (Zaehlwert == 0) Counter2++; PORTB = Counter2; _delay_ms(200); //PORTD = 0xfd; //PORTD PD1 LED //return ; } } //return 0; } }