Son mist... meine Nachrichtdarf nicht mehr als 20000 zeichen enthalten...XD Also hier die fortsetzuung...
Für die Menuführung brauche ich auch nur 2 Tasten eine mit der ich durch das Menu "gehe" und eine um die WErte zu ändern.Code:****************************************************************** ** Handbetrieb ** *******************************************************************/ void fnHand(void) { if(bMenue==1) { if(TASTER1) { uiMenuCounter++; fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben delay_ms(200); } switch (uiMenuCounter) { case 0: break; case 1: break; case 2: //Stunde erhöhen if (TASTER2) { delay_ms(200); //Taster entprellen uiStunde=uiStunde+1; if (uiStunde>=24) { uiStunde =0; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 3: //Stunde verringern if (TASTER2) { delay_ms(200); //Taster entprellen uiStunde=uiStunde-1; if (uiStunde <= 0) { uiStunde = 23; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 4: //Minuten erhöhen if (TASTER2) { delay_ms(200); //Taster entprellen uiMinute++; if (uiMinute >= 60) { uiMinute =0; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 5: //Minuten verringern if (TASTER2) { delay_ms(200); //Taster entprellen uiMinute=uiMinute-1; if (uiMinute <= 0) { uiMinute =59; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 6: // Intervall erhöhen if (TASTER2) { delay_ms(200); //Taster entprellen uiIntervall++; if (uiIntervall>=60) { uiIntervall =0; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 7: // Intervall verringern if (TASTER2) { delay_ms(200); //Taster entprellen uiIntervall--; if (uiIntervall <=0) { uiIntervall =59; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 8: //Messung Starten if (TASTER2) { delay_ms(200); //Taster entprellen bStartStop=1; fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 9: // Messung stoppen if (TASTER2) { delay_ms(200); //Taster entprellen bStartStop=0; fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 10:// Ringspeicher leeren if (TASTER2) { delay_ms(200); //Taster entprellen fnSpeicherLeeren(); //fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 11: // Untere Temp.Schwelle Thermostat erhöhen if (TASTER2) { delay_ms(200); //Taster entprellen iHystereseMin=iHystereseMin+1; if (iHystereseMin>=125) { iHystereseMin = -25; } if (iHystereseMin >= iHystereseMax) { iHystereseMin = iHystereseMax-1; } fnLCDAusgabe(iTemperature); //Funktion für LCD aufrufen und Variable übergeben } break; case 12: // Untere Temp.Schwelle Thermostat verringern if (TASTER2) { delay_ms(200); //Taster entprellen iHystereseMin=iHystereseMin-1; if (iHystereseMin<=-25) { iHystereseMin=125; } if (iHystereseMin >= iHystereseMax) { iHystereseMin = iHystereseMax-1; } fnLCDAusgabe(iTemperature); //Funktion aufrufen und LCD aktualisieren } break; case 13: // Obere Temp.Schwelle Thermosthat erhöhen if (TASTER2) { delay_ms(200); //Taster entprellen iHystereseMax=iHystereseMax+1; if (iHystereseMax>=125) { iHystereseMin = -25; } if (iHystereseMax <= iHystereseMin) { iHystereseMax = iHystereseMin+1; } fnLCDAusgabe(iTemperature); //Funktion aufrufen und LCD aktualisieren } break; case 14: // Obere Temp.Schwelle Thermosthat verringern if (TASTER2) { delay_ms(200); //Taster entprellen iHystereseMax=iHystereseMax-1; if (iHystereseMax<=-25) { iHystereseMin=125; } if (iHystereseMax <= iHystereseMin) { iHystereseMax = iHystereseMin+1; } fnLCDAusgabe(iTemperature); //Funktion aufrufen und LCD aktualisieren } break; case 15: if (TASTER2) { delay_ms(200); //Taster entprellen if (bDS1621Contakt==0) //wenn bDS1621Contakt Null ist... { bDS1621Contakt=1; //...bDS1621Contakt auf 1 setzen } else //ansonsten... { bDS1621Contakt=0; //...bDS1621Contakt auf 0 setzen } fnLCDAusgabe(iTemperature); //Funktion aufrufen und LCD aktualisieren } default: } //switch Ende } if (uiMenuCounter==ANZAHLMENUPUNKTE) { uiMenuCounter=2; } }
Eins noch, bei der Funktion für die Tasten habe ich immer die gleiche Variable übergeben weil die Funktion eine Variable erwartet, ist aber für die Ausgabe unwichtig da ich die Variablen global definiert habe...
Vielleicht nicht unbedingt die beste Lösung aber funktioniert. Vielleicht hilft dir das ja
Gruß Pierce








Zitieren

Lesezeichen