/* * EmbeddedSystemProject.c * * Created: 21/10/2021 16:55:21 * Author : n0x */ #include "Led.h" #include "Taster.h" #include "Timer.h" #include #define F_CPU 1000000 #include /* function declarations */ void buttonTest (void); void task1 (void); void task2 (void); void task3 (void); /* global variables */ volatile int g_counter = 0; int g_ledStatus = 0; uint16_t g_startMS; /* functions */ int main (void) { sei(); /* Initialize the LEDs and Buttons */ Led_init(); Taster_init(); Timer_init(); g_startMS=Timer_getTick(); while (1) { buttonTest(); //task1(); //task2(); //task3(); } } void buttonTest (void) { Taster1_get() ? Led1_On() : Led1_Off(); Taster2_get() ? Led2_On() : Led2_Off(); Taster3_get() ? Led3_On() : Led3_Off(); Taster4_get() ? Led4_On() : Led4_Off(); } /* Task 1 (2021-10-21) */ void task1 (void) { _delay_ms(100); /* Programmieren Sie ein Lauflicht. Nutzen Sie dazu die in „Led.h“ deklarierten * Funktionen. * 2.Schreiben Sie ein Programm mit folgenden Funktionen: * Wenn Taste 1 gedrückt wird, wird die Variable „Counter“ inkrementiert. * Wird Taste 2 gedrückt wird, wird die Variable „Counter“ dekrementiert. * Variable „Counter“ soll sich dabei zwischen 0 und 8 bewegen. * Der Inhalt des Wertes soll mit Hilfe der LEDs angezeigt werden. * 0 = keine LED an, 1 = LED1 an, 2 = LED1+LED2 an, usw. * 8 = alle LEDs an. */ /* Check if counter needs to be incremented */ if (Taster1_get()) g_counter++; /* Check if counter needs to be decremented */ if (Taster2_get()) g_counter--; /* Keep counter within boundaries (0-8) */ g_counter = (g_counter + 9) % 9; /* Set the LEDs according to the counter */ g_counter >= 1 ? Led1_On() : Led1_Off(); g_counter >= 2 ? Led2_On() : Led2_Off(); g_counter >= 3 ? Led3_On() : Led3_Off(); g_counter >= 4 ? Led4_On() : Led4_Off(); g_counter >= 5 ? Led5_On() : Led5_Off(); g_counter >= 6 ? Led6_On() : Led6_Off(); g_counter >= 7 ? Led7_On() : Led7_Off(); g_counter >= 8 ? Led8_On() : Led8_Off(); } /* Task 2 (2021-10-28) */ void task2 (void) { if(Timer_getTick() - g_startMS >= 1000) { /* Wait 1000ms before switching LED1 */ g_startMS=Timer_getTick(); if(g_ledStatus % 2 == 0){ Led1_On(); } else { Led1_Off(); } g_ledStatus++; } } void task3 (void) { // beep boop }