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