(1<<BUZZERPIN2)|(1<<BUZZERPIN3); //interne Pull-Up Widerstände, die aktiviert werden müssen
INPUT2PORT |= (1<<BUZZERPIN4);
//7 Stück, für jeden EingangsPin einen while (1)
{
state1 = 0;
state2 = 0;
//state1 |= (LOGIKPIN1<<2)|(LOGIKPIN2<<1)|(LOGIKPIN3<<0);
hier sollten die state-Variablen errechnet werden, //state2 |= (BUZZERPIN1<<3)|(BUZZERPIN2<<2)|(BUZZERPIN3<<1)|(BUZZERPIN4<<0);
musste aber dann doch verworfen werden, da der anliegende Zustand anders ausgelesen wird
state1 = PINC & STATUSNIXLOGIK;
//Hier findet die Berechnung statt, PortC wird als 8-bit Zahl aufgefasst und mithilfe der Hilfskonstanten werden die
irrelevanten Bits ausgelöscht
state2 = ((PINC>>3) | ((PIND) & STATUS2HILFE)) & STATUSNIXBUZZ;
//Für state2 ähnlich, nur muss zuerst per bitshifting die Zahl aufgearbeitet werden
if (state1 != STATUSNIXLOGIK)
//state1 wird nun mit der
Hilfkonstante für die Logikzustände verglichen, bei Gleichheit liegt kein Logiksignal an, sonst wird in den entsprechenden case gesprungen
{ switch (state1)
//Sprung in den case nr.state1, das Programm rechnet die binäre Zahl state1 in eine dezimale Zahl um
{
case 0:
//Ton1, alle weiteren Töne analog
OUTPUTPORT |= (1<<TONENABLEPIN)|(1<<DEMUXPIN1);
//Setzen der gewünschten AusgangsPins auf high _delay_ms(500);
//Verzögerung durch delay-Funktion, 0.5 Sekunden lang
OUTPUTPORT = 0x00;
//Für die Übersichtlichkeit wird der gesamte Ausgangsport wieder auf low gesetzt
break;
case 1:
//Ton2 OUTPUTPORT |= (1<<TONENABLEPIN)|(1<<DEMUXPIN2);
_delay_ms(500);
OUTPUTPORT = 0x00;
break;
case 2:
//Ton3