//Funktion für die Initialisierungsphase
void Initialization (void)
{
uint16_t Counter1 = 0; //Zahler für die fünf Sekunden Schleife
uint8_t Counter2 = 0; //Zähler für die zwei Sekunden Schleife
DDRB |= (1<<DDB0)|(1<DDB2); //PIN0 und PIN2 an PORTB als Ausgang
DDRC |= (1<<DDC2)|(1<<DDC3)|(1<<DDC4)|(1<<DDC5); //PIN2, PIN3, PIN4 und PIN5 an PORTC als Ausgang
DDRC &= ~(1<<DDC0); //PIN0 an PORTB als Eingang
DDRD &= ~((1<<DDD0)|(1<<DDD1)|(1<<DDD2)|(1<<DDD3)); //PIN0, PIN1, PIN2 und PIN3 an PORTD als Eingang
PORTD |= (1<<PD0)|(1<<PD1); //Interne PullUps an PIN0 und PIN1 des PORTD aktivieren
Status_LED (1); //PIN2 an PORTB einschalten
Level_LED_Red (1); Level_LED_Green (1); Mode_LED_Red (1); Mode_LED_Green (1); //PIN2, PIN3, PIN4 und PIN5 an PORTC einschalten
_delay_ms (250);
Status_LED (0); //PIN2 an PORTB ausschalten
Level_LED_Red (0); Level_LED_Green (0); Mode_LED_Red (0); Mode_LED_Green (0); //PIN2, PIN3, PIN4 und PIN5 an PORTC ausschalten
_delay_ms (250);
for (Counter1 = 0; Counter1 < 500; Counter1++) //Fünf Sekunden Initialisierung
{
_delay_ms (10);
if (((PIND & (1<<PD1)) == 0) && ((PIND & (1<<PD0)) == 0)) //Wenn beide Taster gedrückt sind
{
for (Counter2 = 0; ((Counter2 < 200) && (((PIND & (1<<PD1)) == 0) && ((PIND & (1<<PD0)) == 0))); Counter2++) //Zwei Sekunden Schleife
{
_delay_ms (10);
}
if (Counter2 == 200)
{
Level_LED_Red (1); Level_LED_Green (1); Mode_LED_Red (1); Mode_LED_Green (1); //PIN2, PIN3, PIN4 und PIN5 an PORTC einschalten
while (((PIND & (1<<PD1)) == 0) || ((PIND & (1<<PD0)) == 0)) //Warten bis beide Taster losgelassen werden
{
}
Level_LED_Red (0); Level_LED_Green (0); Mode_LED_Red (0); Mode_LED_Green (0); //PIN2, PIN3, PIN4 und PIN5 an PORTC ausschalten
_delay_ms (250);
Interrupts_Timer (1, 2); //Funktion zur Interrupt und Timer Aktivierung
Level_Function (); //Wechseln zur Anwender Programmierung
}
}
}
Status_LED (1); //PIN2 an PORTB einschalten
Level_LED_Red (1); Level_LED_Green (1); Mode_LED_Red (1); Mode_LED_Green (1); //PIN2, PIN3, PIN4 und PIN5 an PORTC einschalten
_delay_ms (250);
Status_LED (0); //PIN2 an PORTB ausschalten
Level_LED_Red (0); Level_LED_Green (0); Mode_LED_Red (0); Mode_LED_Green (0); //PIN2, PIN3, PIN4 und PIN5 an PORTC ausschalten
_delay_ms (250);
}
//Hauptschleife
int main (void)
{
Initialization (); //Funktion für die Initialisierungsphase
...