void main(void) //Hauptprogramm main { unsigned int sperre=0; Initialisierung(); // Initialisierung wird fortgesetzt do { /* Taste2 */ if(Taste1()==1) { Delay10KTCYx(10); sperre=Taste2(),Taste3(),Taste4(),Taste5(),Taste6(),Taste7(),Taste8(),Taste9(),Taste0(),TasteStern(),TasteRaute(); // Tastenverriegelung if(Taste1()== 0) //Wenn die Taste vor 100ms losgelassen wurde LED1 = 0 { LED1=0; Delay10KTCYx(10); } else if(Taste1()== 1) //Wenn die Taste nach 100ms Nicht losgelassen wurde LED1=1 { LED1=1; Delay10KTCYx(10); } } else {LED1=0;} /* Taste2 */ if(Taste2()==1) { Delay10KTCYx(10); sperre=Taste1(),Taste3(),Taste4(),Taste5(),Taste6(),Taste7(),Taste8(),Taste9(),Taste0(),TasteStern(),TasteRaute(); // Tastenverriegelung if(Taste2()== 0) //Wenn die Taste vor 100ms losgelassen wurde LED1 = 0 { LED2=0; Delay10KTCYx(10); } else if(Taste2()== 1) //Wenn die Taste nach 100ms Nicht losgelassen wurde LED1=1 { LED2=1; Delay10KTCYx(10); } } else {LED2=0;} }while(1); } unsigned int Taste1(void) { unsigned int Ergebnis; // Dekleration Ergebnis int anzahl=8; // Faktor der Mittelwert int AnzahlMessungen; unsigned int SummeMessungen=0; for(AnzahlMessungen=0; AnzahlMessungen < anzahl; AnzahlMessungen++) //Mittelwertbildung der ADC Werte { Vreferenz(); // Aufruf der Funktion Vreferenz() für die Aufladung des Sample&Hold Kondensator TRISCbits.TRISC5 = 1; // Taste1 als Eingang gewählt ADCON0 = Taste1_Abfrage; // AN17 Eingang Ergebnis = Ergb(); // Taste ungedrückt Wert von Ergebnis = 0x016B SummeMessungen = SummeMessungen + Ergebnis; // ADC Werte werden aufsumiert und auf "SummeMessungen" gespeichert TRISCbits.TRISC5 = 0; // Taste1 wieder als Ausgang bzw. Csensor wird entladen- Sehr wichtig } Ergebnis = SummeMessungen / anzahl; // Mittelwert gebildet if(Ergebnis <= 0x0163) // Schwellwert { return 1; } else { // LED1 geht nicht an return 0; } } unsigned int Taste2(void) { unsigned int Ergebnis; int anzahl=8; int AnzahlMessungen; unsigned int SummeMessungen=0; for(AnzahlMessungen=0; AnzahlMessungen < anzahl; AnzahlMessungen++) { Vreferenz(); // Sample&Hold Kondensator aufladen TRISDbits.TRISD5 = 1; // Analog als Eingang ADCON0 = Taste2_Abfrage;// Ergebnis = Ergb(); SummeMessungen = SummeMessungen + Ergebnis; TRISDbits.TRISD5 = 0; // Entladung der Kondensator } Ergebnis = SummeMessungen / anzahl; // Mittelwert gebildet if(Ergebnis <= 0x0165) // Schwellwert { return 1; } else { return 0; } }