message error

#define OE2 8 //Atribui valor do nome constante ao pino digital 8
#define OE1 7 //Atribui valor do nome constante ao pino digital 7
#define LE2 10 //Atribui valor do nome constante ao pino digital 10
#define LE1 9 //Atribui valor do nome constante ao pino digital 9
#define Clear 11 //Atribui valor do nome constante ao pino digital 11
#define SClk 12 //Atribui valor do nome constante ao pino digital 12
#define SData 13 //Atribui valor do nome constante ao pino digital 13
#define Key0 A2 //Atribui valor do nome constante ao pino digital AD2
#define Key1 A3 //Atribui valor do nome constante ao pino digital AD3
#define debounceDelay 20 //Define para todos ostempos de debounce em
#define lastDebounceTime 0

// Variables will change:
int ledState = HIGH; // the current state of the output pin
// the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin

void setup() {
pinMode(OE2,OUTPUT); //configuracao do pino digital OE2 como saída
pinMode(OE1,OUTPUT); //configuracao do pino digital OE1 como saída
pinMode(LE2,OUTPUT); //configuracao do pino digital LE2 como saída
pinMode(LE1,OUTPUT); //configuracao do pino digital LE1 como saída
pinMode(Clear,OUTPUT); //configuracao do pino digital Clear como saída
pinMode(SClk,OUTPUT); //configuracao do pino digital SClk como saída
pinMode(SData,OUTPUT); //configuracao do pino digital SData como saída
pinMode(Key0,INPUT);
pinMode(Key1,INPUT);
digitalWrite(OE1,HIGH); //Desativa o display OE1 com valor lógico 1
digitalWrite(Clear,HIGH); // Desativa o pino Clear com valor lógico 1
digitalWrite(OE2,HIGH);
}

byte contagem=0; // Definição e inicialização a zero da variável contagem

void loop() {
bool reading = digitalRead(Key0); // read the state of the switch into a local variable

// If the switch changed, due to noise or pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}

if ((millis(20) - lastDebounceTime ) > debounceDelay) {
// whatever the reading is at, it's been there for longer than the debounce
// delay, so take it as the actual current state:

// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;

// only toggle the LED if the new button state is HIGH
if (buttonState == HIGH) {
ledState != ledState;
}
}
}

// set the LED:
digitalWrite(OE2,LOW);

// save the reading. Next time through the loop, it'll be the lastButtonState:
lastButtonState = reading;
}

void Display7Seg(byte valor){
digitalWrite(OE2,HIGH); //Ativa output enable com valor Low
digitalWrite(LE2,LOW);
if(valor == 0) shiftOut(13, 12, MSBFIRST, 0xC0); //Mostra o número 0 no display
if(valor == 1) shiftOut(13, 12, MSBFIRST, 0x79); //Mostra o número 1 no display
if(valor == 2) shiftOut(13, 12, MSBFIRST, 0x24); //Mostra o número 2 no display
if(valor == 3) shiftOut(13, 12, MSBFIRST, 0x30); //Mostra o número 3 no display
if(valor == 4) shiftOut(13, 12, MSBFIRST, 0x19); //Mostra o número 4 no display
if(valor == 5) shiftOut(13, 12, MSBFIRST, 0x12); //Mostra o número 5 no display
if(valor == 6) shiftOut(13, 12, MSBFIRST, 0x02); //Mostra o número 6 no display
if(valor == 7) shiftOut(13, 12, MSBFIRST, 0x78); //Mostra o número 7 no display
if(valor == 8) shiftOut(13, 12, MSBFIRST, 0x00); //Mostra o número 8 no display
if(valor == 9) shiftOut(13, 12, MSBFIRST, 0x10); //Mostra o número 9 no display
if(valor == 10) shiftOut(13, 12, MSBFIRST, 0x06); //Mostra o número E no display
if(valor == 11) shiftOut(13, 12, MSBFIRST, 0xC0); //Volta ao número inicial 0
digitalWrite(OE2,LOW); //Ativa output enable com valor Low
digitalWrite(LE2,HIGH); //Ativa RCLK Input Com valor High
}

it worked at the first time, now im trying to use it again, but says "lvalue required as left operand of assignment"
the one thing i changed was the "#define lastDebounceTime 0"

This:

#define lastDebounceTime 0

Should probably be:

unsigned long lastDebounceTime=0;

you can't assign a value to a #define

 lastDebounceTime = millis();

a common practice to to Capitalize all constants to make them easy to identify and avoid the error above

The "#define lastDebounceTime 0" sets up a text substitution. Everywhere the identifier 'lastDebounceTime' is used it will be replaced by '0'.

This line:

lastDebounceTime = millis();

Will be modified to:

0 = millis();

You can't assign a value to an integer constant because an integer constant is not an 'lvalue' (a value you can have on the left side of an assignment operator). In addition to the "lvalue required as left operand of assignment" you should have gotten a helpful message that says "in expansion of macro 'lastDebounceTime'". This is the compiler's way of saying "The value in the #define for 'lastDebugTime' doesn't make sense here."