Interrupciones

¿Y si pruebas

void giro(){
  attachInterrupt (5, contador, CHANGE);
  cuenta = 0;
  while (cuenta < 20){
    cuenta++;    // Porque si no, cuenta siempre valdrá lo mismo, digo yo, resultado... bucle sin fin
    digitalWrite (13, HIGH);
  }
}