#include int main(void) { DDRB |= (1<<2) | (1<<3) | (1<<4) | (1<<5); unsigned char i; unsigned char a; a==0; waitMs(10); if(PORTB |=(1<<31) == true) // Eingang 31 ist der Taster Klappe auf / zu { if(PORTB |=(1<<1) == false) // Eingang 1 Freigabe Absaugung { a=1; } else { PORTC &= ~(1<<15); // Ausgang 15 Freigabe Absaugung waitMs(3000); } if(PORTB |=(1<<3) == true) // Eingang 3 Endlage oben Klappe { if(PORTB |=(1<<15) == true) // Eingang 15 Endlage Scharnier offen { PORTC |=(1<<3); // Ausgang 3 Ventil Klappe zu waitMs(500); PORTC &= ~(1<<3); waitMs(200); PORTC |=(1<<3); waitMs(50); PORTC &= ~(1<<3); waitMs(50); PORTC |=(1<<3); waitMs(50); PORTC &= ~(1<<3); waitMs(50); PORTC |=(1<<0); // Ausgang 0 Ventil Scharnier zu waitMs(2000); PORTC &= ~(1<<0); waitMs(10); PORTC |=(1<<15); // Ausgang 15 Freigabe Absaugung ein } // Ende 1 Klappe ist normal zugegangen else { while(PORTB |=(1<<15) == false) // Eingang 15 Endlage Scharnier auf { PORTC |=(1<<1); // Ausgang 1 Ventil Scharnier auf waitMs(50); } PORTC &= ~(1<<1); PORTC |=(1<<3); // Ausgang 3 Ventil Klappe zu waitMs(500); PORTC &= ~(1<<3); waitMs(200); PORTC |=(1<<3); waitMs(50); PORTC &= ~(1<<3); waitMs(50); PORTC |=(1<<3); waitMs(50); PORTC &= ~(1<<3); waitMs(50); PORTC |=(1<<0); // Ausgang 0 Ventil Scharnier zu waitMs(2000); PORTC &= ~(1<<0); waitMs(10); PORTC |=(1<<15); // Ausgang 15 Freigabe Absaugung } // Ende 1 Klappe ist normal zugegangen // aber das Scharnier war nicht ganz offen } else { if(PORTB |=(1<<7) == true) // Eingang 7 Endlage Klappe unten { while(PORTB |=(1<<15) == false) // Eingang 15 Endlage Scharnier auf { PORTC |=(1<<1); // Ausgang 1 Ventil Scharnier auf waitMs(50); } while(PORTB |=(1<<3) == false) // Eingang 3 Endlage Klappe oben { PORTC |=(1<<7); // Ausgang 7 Ventil Klappe auf waitMs(50); } // Ende 2 Klappe ist offen } else { if(PORTB |=(1<<15) == true) // Eingang 15 Endlage Scharnier offen { while(PORTB |=(1<<7) == false) // Eingang 3 Endlage Klappe unten { PORTC |=(1<<3); // Ausgang 3 Ventil Klappe zu waitMs(20); PORTC &= ~(1<<3); waitMs(200); } PORTC |=(1<<0); // Ausgang 0 Ventil Scharnier zu waitMs(2000); PORTC &= ~(1<<0); waitMs(10); PORTC |=(1<<15); // Ausgang 15 Freigabe Absaugung ein } // Ende 3 Klappe ist im Notlauf zu gegangen else { while(PORTB |=(1<<15) == false) // Eingang 15 Endlage Scharnier auf { PORTC |=(1<<1); // Ausgang 1 Ventil Scharnier auf waitMs(50); } } while(PORTB |=(1<<7) == false) // Eingang 3 Endlage Klappe unten { PORTC |=(1<<3); // Ausgang 3 Ventil Klappe zu waitMs(20); PORTC &= ~(1<<3); waitMs(200); } PORTC |=(1<<0); // Ausgang 0 Ventil Scharnier zu waitMs(2000); PORTC &= ~(1<<0); waitMs(10); PORTC |=(1<<15); // Ausgang 15 Freigabe Absaugung ein // Ende 3 Klappe ist im Notlauf zu gegangen // und das Scharnier Klappe war nicht offen } } }