Son mist... meine Nachrichtdarf nicht mehr als 20000 zeichen enthalten...XD Also hier die fortsetzuung...
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;
}
}
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.
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
Lesezeichen