problema con programación de botón

¡Hola!
Perdonadme si la gramática fuera equivocado pero no soy español.
Entonces, tengo un problema con la programación de un botón: tengo que ejecutar una parte de codigo solo cuando presiono el botón y pues no está presionado. Cuando presiono el botón y se queda presionado no se tiene que hacer nada, cuando no lo presiono tiene que ejecutar una parte de codigo.
He escrito esa parte de codigo y antes de probarlo quisiera saber si está algo malo.

//otros codigo
int val;
int boton;

void setup(){
//otros codigo
pinMode(9,INPUT);
}

void loop(){
val=digitalRead(9);
  if(val==HIGH){
    boton=1;
  }
  else{
    boton=0;
  }
  if(boton==1){
    val=digitalRead(9);
  }
  else if(boton==0){ 
    //codigo de ejecutar
   }
}

tengo que ejecutar una parte de código solo cuando presiono el botón y pues no está presionado.

Esta versión resuelve lo que pides

const byte pinBoton = 9;
bool val, valAnt = false;
int boton;

void setup(){
//otros codigo
pinMode(pinBoton,INPUT);
}

void loop(){

  val = digitalRead(pinBoton);
  
  if (val && !valAnt) {  // si val == 1 y valAnt == 0 o sea si paso de 0 a 1
      // ejecuto una parte del codigo
  }
  valAnt = val;
  if (!val) {   // !val es lo mismo que val == LOW
      // ejecuto código cuando no esta presionado
  }
}

¡Muchas gracias!