#include #include #define OFF 0 #define ON 1 #define debounce( port, pin ) \ ({ \ static uint8_t flag = 0; /* new variable on every macro usage */ \ uint8_t i = 0; \ \ if( flag ){ /* check for key release: */ \ for(;;){ /* loop ... */ \ if( !(port & 1<25ms released */ \ flag = 0; /* clear press flag */ \ i = 0; /* 0 = key release debounced */ \ break; \ } \ } \ }else{ /* else check for key press: */ \ for(;;){ /* loop ... */ \ if( (port & 1<25ms pressed */ \ flag = 1; /* set press flag */ \ i = 1; /* 1 = key press debounced */ \ break; \ } \ } \ } \ i; /* return value of Macro */ \ }) uint8_t switch1 = 0; //Merker fuer Zustand des Ausgangs_1 uint8_t switch1_test = 0; //Merker ob Verriegelung_1 uint8_t switch2 = 0; //Merker fuer Zustand des Ausgangs_2 uint8_t switch2_test = 0; //Merker ob Verriegelung_2 uint8_t switch3 = 0; //Merker fuer Zustand des Ausgangs_3 uint8_t switch3_test = 0; //Merker ob Verriegelung_3 uint8_t switch4 = 0; //Merker fuer Zustand des Ausgangs_4 uint8_t switch4_test = 0; //Merker ob Verriegelung_4 int main(void) { DDRA &= ~(1<