/*
------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------- Globaler Header ---------------------------------------------------
************************************************** switches.h ** V1.1 **************************************************
------------------------------------- Zur Definition der Tasten auf dem Testboard --------------------------------------
------------------------------------------------------------------------------------------------------------------------
 Version..............: 1.1
 Compiler.............: CodeVisionAVR
 Chip.................: ATmega88
 Datum................: Juni 2009
 Autor................: Alwin Lenck (ALE23) basierend auf der Header-Datei switches.h von Udo Juerss
------------------------------------------------------------------------------------------------------------------------
Allgemeines:
In dieser Header-Datei werden Tasten-Makros fuer die Tasten auf dem Testboard definiert.
*/

//----------------------------------------------------------------------------------------------------------------------
// Abfrage, ob diese Header-Datei bereits aufgerufen wurde. Wenn JA, dann alle Anweisungen ignorieren!
//----------------------------------------------------------------------------------------------------------------------
#ifndef __SWITCHES_H
#define __SWITCHES_H                             // Wenn NEIN, dann wird hier der Schalter gesetzt, dass zukuenftig
                                                 // diese Header-Datei nicht noch einmal hinzugefuegt wird.

//----------------------------------------------------------------------------------------------------------------------
// Definitionen von Tasten-Makros
//----------------------------------------------------------------------------------------------------------------------
#define S1_INIT() {S1_DDR &= ~S1_BIT; S1_PRT |= S1_BIT;} // Setze S1-Pin (K8.1) der Taste 1 auf Eingabe
#define S2_INIT() {S2_DDR &= ~S2_BIT; S2_PRT |= S2_BIT;} // Setze S2-Pin (K8.2) der Taste 2 auf Eingabe
#define S3_INIT() {S3_DDR &= ~S3_BIT; S3_PRT |= S3_BIT;} // Setze S3-Pin (K8.3) der Taste 3 auf Eingabe

#define S1_NOT_PRESSED() (S1_PRT & S1_BIT)               // Abfrage, ob Taste 1 nicht gedrueckt ist
#define S2_NOT_PRESSED() (S2_PRT & S2_BIT)               // Abfrage, ob Taste 2 nicht gedrueckt ist
#define S3_NOT_PRESSED() (S3_PRT & S3_BIT)               // Abfrage, ob Taste 3 nicht gedrueckt ist

#define S1_PRESSED() (!(S1_NOT_PRESSED()))               // Abfrage, ob Taste 1 gedrueckt ist
#define S2_PRESSED() (!(S2_NOT_PRESSED()))               // Abfrage, ob Taste 2 gedrueckt ist
#define S3_PRESSED() (!(S3_NOT_PRESSED()))               // Abfrage, ob Taste 3 gedrueckt ist

#define S1_WAIT_PRESSED() {while (S1_NOT_PRESSED()) ;}   // Warten, solange Taste 1 noch gedrueckt ist
#define S2_WAIT_PRESSED() {while (S2_NOT_PRESSED()) ;}   // Warten, solange Taste 2 noch gedrueckt ist
#define S3_WAIT_PRESSED() {while (S3_NOT_PRESSED()) ;}   // Warten, solange Taste 3 noch gedrueckt ist

#define S1_WAIT_NOT_PRESSED() {while (S1_PRESSED()) ;}   // Warten, bis Taste 1 nicht mehr gedrueckt ist
#define S2_WAIT_NOT_PRESSED() {while (S2_PRESSED()) ;}   // Warten, bis Taste 2 nicht mehr gedrueckt ist
#define S3_WAIT_NOT_PRESSED() {while (S3_PRESSED()) ;}   // Warten, bis Taste 3 nicht mehr gedrueckt ist

//----------------------------------------------------------------------------------------------------------------------
// Mit #endif endet jede Header-Datei
//----------------------------------------------------------------------------------------------------------------------
#endif

