menu case problem with starting up

After some commentar I have post my code in total.

I hope that som bodycan help me now.

If I start the arduino than he come in to case 8.

I think that the porblem is on:

int loopConstrain(int x,int a,int b){
if (x == a-1 || x ==255){
   return b;
 }
 if (x == b+1){
   return a;
 }
}

This is the total code of my menu structure.

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <SPI.h>
const int  cs=8;  
LiquidCrystal_I2C lcd(0x27,16,2);

const int buttonPinUp = 2;   
const int buttonPinDown = 3;   
const int buttonPinEsc = A0;    
const int buttonPinEnter = 9;   
const int Sensormicro = A2;

boolean LastValUp = true;
boolean LastValDown = true;
boolean LastValEsc = true;
boolean LastValEnter = true;
boolean autoEnabled = true;

int lcdItem = 0;
int lcdEdit = 0;

boolean timeEnabled[] = {false,false,false};
int timeHours[] = {0,0,0};
int timeMinutes[] = {0,0,0};

int Weight = 0;
byte Value_E1 = 150; 
byte Value_E2 = 100;
int C_Day=25;
int C_Month=6;
int C_Year=12;
int C_Hour=14;
int C_Min=49;
int C_second=55;

byte lcdCharUpDown[8] = {
  0b00100,
  0b01110,
  0b11111,
  0b00000,
  0b00000,
  0b11111,
  0b01110,
  0b00100
};

void setup(){
  lcd.init();
  lcd.backlight();
  
  pinMode(buttonPinUp, INPUT);
  pinMode(buttonPinDown, INPUT);
  pinMode(buttonPinEnter, INPUT);
  pinMode(buttonPinEsc, INPUT);
}

void loop(){

 
if (lcdEdit == 0){
    lcdItem = loopConstrain(lcdUpDownControl(lcdItem),0,8);
     }
  lcdButtonControl();
  lcdMenu();
  lcdEditValues();
}

void lcdButtonControl(){
  boolean ValEnter=digitalRead(buttonPinEnter);

  if (ValEnter !=LastValEnter){
    if (ValEnter==LOW){
      Serial.print("ENTER");
      lcd.clear();
      lcdEdit ++;
    }
  }
  LastValEnter=ValEnter;
  boolean ValEsc=digitalRead(buttonPinEsc);

  if (ValEsc !=LastValEsc){
    if (ValEsc==LOW){
      lcd.clear();
      lcdItem = 0;
    }
  }

  LastValEsc=ValEsc;
}

boolean lcdUpDownControl(int oldValue){
  
  boolean ValUp=digitalRead(buttonPinUp);


  if (ValUp !=LastValUp){
    if (ValUp==LOW){
       Serial.println("plus");
         LastValUp=ValUp;
         lcd.clear();
      return oldValue + 1;
    }
  }

  LastValUp=ValUp;

   
  boolean ValDown=digitalRead(buttonPinDown);
  if (ValDown !=LastValDown){
    if (ValDown==LOW){
        LastValDown=ValDown;
        lcd.clear();
        
          return oldValue - 1;
        
    }
  }
  LastValDown=ValDown;
  return oldValue;
}
void lcdMenu(){
  switch (lcdItem){ 
  case 0:

    lcd.setCursor(0,0);
    if (autoEnabled){
      lcd.print("A ");
    }                                                
    else{
      lcd.print("M ");
    }
    lcd.print("1:12:15");
    lcd.setCursor(0,1);
    lcd.print("Temp "); 
    lcd.print("25");
    lcd.print(" C      ");
    delay(10);
    break;
  case 1:

    lcd.setCursor (0,0);
    lcd.print ("Time");
    break;
  case 2:

    lcd.setCursor (0,0);
    lcd.print ("Time");
    break;
  case 3:

    lcd.setCursor (0,0);
    lcd.print ("Time");
    break;
  case 4:

    lcd.setCursor (0,0);
    lcd.print ("Weight");
    break;
  case 5:

    lcd.setCursor (0,0);
    lcd.print ("Speed");
    break;
  case 6:

    lcd.setCursor (0,0);
    lcd.print ("Set time");
    break;
  case 7:

    lcd.setCursor (0,0); 
    lcd.print ("Set date");
    break;
  case 8:

    lcd.setCursor (0,0);
    lcd.print ("Sample run");
    break;
  }
}
void lcdEditValues(){
  
  byte timeId = 0;
  lcd.setCursor (0,1); 
  switch(lcdItem){
  case 0:
  lcdEdit = 0;
  break;
  case 1:
  case 2:
  case 3:
    timeId = lcdItem-1;
    if (timeEnabled[timeId]){
      lcd.print("on");
    }
    else{
      lcd.print("off");
    }
    if (lcdEdit == 1){
      lcd.print('\x00');
      timeEnabled[timeId] = loopConstrain(lcdUpDownControl(timeEnabled[timeId]), 0, 1);
    }
    else{
      lcd.print(" ");
    }
    lcd.print(timeHours[timeId]);
    if (lcdEdit == 2){
      lcd.print('\x00');
      timeHours[timeId] = loopConstrain(lcdUpDownControl(timeHours[timeId]),0,23);//constrain(, 0, 23);
    }
    else{
      lcd.print(" ");
    }
    lcd.print(":");
    lcd.print(timeMinutes[timeId]);
    if (lcdEdit == 3){
      lcd.print('\x00');
      timeMinutes[timeId] = loopConstrain(lcdUpDownControl(timeMinutes[timeId]), 0, 59);
    }
    else{
      lcd.print(" ");
    }
    if (lcdEdit == 4){
      lcdEdit = 0;
    }
    break;
   case 4:
    lcd.print(Weight);
    if (lcdEdit == 1){
      lcd.print('\x00');
      Weight = loopConstrain(lcdUpDownControl(Weight), 0, 1000);
    }
    if (lcdEdit == 2){
      lcdEdit = 0;
    }
    break;
    case 5:
    lcd.print(Value_E2);
    if (lcdEdit == 1){
      lcd.print('\x00');
      Value_E2 = loopConstrain(lcdUpDownControl(Value_E2), 0, 255);
    }
    if (lcdEdit == 2){
      lcdEdit = 0;
    }
    break;
    case 6:
      lcd.print(C_Hour);
    if (lcdEdit == 1){
      lcd.print('\x00');
      C_Hour = loopConstrain(lcdUpDownControl(C_Hour), 0, 23);
    }
     else{
      lcd.print(" ");
    }
    lcd.print(":");
    lcd.print(C_Min);
    if (lcdEdit == 2){
      lcd.print('\x00');
      C_Min = loopConstrain(lcdUpDownControl(C_Min), 0, 59);
    }
    if (lcdEdit == 3){
      SetTimeDate(C_Day,C_Month,C_Year,C_Hour,C_Min,C_second);
      lcdEdit = 0;
    }
    break;
    case 7:
      lcd.print(C_Day);
    if (lcdEdit == 1){
      lcd.print('\x00');
      C_Day= loopConstrain(lcdUpDownControl(C_Day), 1, 31);
    }
     else{
      lcd.print(" ");
    }
    lcd.print("/");
    lcd.print(C_Month);
    if (lcdEdit == 2){
      lcd.print('\x00');
      C_Month = loopConstrain(lcdUpDownControl(C_Month), 1, 12);
    }
         else{
      lcd.print(" ");
    }
    lcd.print("/");
    lcd.print(C_Year);
    if (lcdEdit == 3){
      lcd.print('\x00');
      C_Year = loopConstrain(lcdUpDownControl(C_Year), 0, 99);
    }
    if (lcdEdit == 4){
      SetTimeDate(C_Day,C_Month,C_Year,C_Hour,C_Min,C_second);
      lcdEdit = 0;
    }
    break;
    case 8:
    lcd.print("Press enter to run");
    if (lcdEdit == 1){
      lcdEdit = 0;
    }
    break;
  }
}

int loopConstrain(int x,int a,int b){
if (x == a-1 || x ==255){
   return b;
 }
 if (x == b+1){
   return a;
 }
}
int RTC_init(){ 
	  pinMode(cs,OUTPUT);
	  SPI.begin();
	  SPI.setBitOrder(MSBFIRST); 
	  SPI.setDataMode(SPI_MODE3);  
	  digitalWrite(cs, LOW);  
	  SPI.transfer(0x8E);
	  SPI.transfer(0x60);
	  digitalWrite(cs, HIGH);
	  delay(10);
}
//=====================================
int SetTimeDate(int d, int mo, int y, int h, int mi, int s){ 
	int TimeDate [7]={s,mi,h,0,d,mo,y};
	for(int i=0; i<=6;i++){
		if(i==3)
			i++;
		int b= TimeDate[i]/10;
		int a= TimeDate[i]-b*10;
		if(i==2){
			if (b==2)
				b=B00000010;
			else if (b==1)
				b=B00000001;
		}	
		TimeDate[i]= a+(b<<4);
		  
		digitalWrite(cs, LOW);
		SPI.transfer(i+0x80); 
		SPI.transfer(TimeDate[i]);        
		digitalWrite(cs, HIGH);
  }
}
//=====================================
String ReadTimeDate(){
	String temp;
	int TimeDate [7];		
	for(int i=0; i<=6;i++){
		if(i==3)
			i++;
		digitalWrite(cs, LOW);
		SPI.transfer(i+0x00); 
		unsigned int n = SPI.transfer(0x00);        
		digitalWrite(cs, HIGH);
		int a=n & B00001111;    
		if(i==2){	
			int b=(n & B00110000)>>4;
			if(b==B00000010)
				b=20;        
			else if(b==B00000001)
				b=10;
			TimeDate[i]=a+b;
		}
		else if(i==4){
			int b=(n & B00110000)>>4;
			TimeDate[i]=a+b*10;
		}
		else if(i==5){
			int b=(n & B00010000)>>4;
			TimeDate[i]=a+b*10;
		}
		else if(i==6){
			int b=(n & B11110000)>>4;
			TimeDate[i]=a+b*10;
		}
		else{	
			int b=(n & B01110000)>>4;
			TimeDate[i]=a+b*10;	
			}
	}
       
	temp.concat(TimeDate[4]);
	temp.concat("/") ;
	temp.concat(TimeDate[5]);
	temp.concat("/") ;
	temp.concat(TimeDate[6]);
	temp.concat("  ") ;
	temp.concat(TimeDate[2]);
	temp.concat(":") ;
	temp.concat(TimeDate[1]);
	
  return(temp);
}