/* * SpaceInvaders.c * * Created: 22.05.2014 16:26:08 * Author: Ehlers */ #define F_CPU 1000000UL /* ---------------------------------------------- */ // Includes #include #include #include #include #include "avrx.h" #include "avrxfifo.h" #include "avrx-io.h" #include "avrx-signal.h" #include "hardware.h" #include "lcd.h" /* ---------------------------------------------- */ // Definitionen #define NUMBER_ALIEN_SPECIES 4 #define SYMBOL_SPACESHIP 1 #define SYMBOL_SPACESHIP_FIRE 2 #define SYMBOL_EXPLOSION 3 #define SYMBOL_MISS 4 /* ---------------------------------------------- */ // Globale Variablen // Position des Aliens in der erste Reihe uint8_t alienPosition; // Spezies des Aliens uint8_t alienSpecies = 5; // Position des Raumschiffes in der zweiten Reihe uint8_t spaceshipPosition = 0; // Fehlschuesse uint8_t spaceshipRemainingEnergie; // Punkte des Raumschiffes uint8_t spaceshipPoints = 0; // Spielzeit uint8_t playTime = 60; // Variablen zur Spielsteuerung uint8_t gameEnd = 1; uint8_t fire = 0; uint8_t alienBlocked = 0; /* ---------------------------------------------- */ // semaphoreData: Mutual exclusion der globalen Variablen AVRX_MUTEX(semaphoreData); // semaphoreStart: Start des Spiels AVRX_MUTEX(semaphoreStart); /* ---------------------------------------------- */ // Deklaration der Timer (Ein Timer kann nicht in mehreren Prozessen/Tasks genutzt werden) TimerControlBlock TickTimerClock; TimerControlBlock TickTimerAlien; TimerControlBlock TickTimerSpaceship; TimerControlBlock TickTimerButton; TimerControlBlock TickTimerLCD; /* ---------------------------------------------- */ // Deklaration der Nachrichten und der MessageQueue MessageControlBlock UpdateDisplay; MessageQueue LcdQueue; /* ---------------------------------------------- */ // AD-Wandlung uint16_t adc_read() { // AD-Wandlung starten ADCSRA |= (1<