SOLUCIONADO -- No me funciona: Do...... while

Hola a todos:

Estoy haciendo una prueba básica con el comando Do ... While y no me funciona.
No sale del bucle a pesar de que vario el pin 12 de HIGH a LOW y viceversa.

Lo cierto es que cojí el código de un portal de internet

int pulsador = 12;
int led= 13;

void setup()
{
  pinMode(pulsador, INPUT);
  pinMode(led, OUTPUT);
}

void loop()
{
  do
  {
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
  }while (digitalRead(pulsador) == HIGH);
}

¿Que demonios pasa con arduino?

Edito toda la respuesta porque entendí mal tu problema.

int pulsador = 12;
int led= 13;
bool estado = false;
bool estadoAnt = false;

void setup()
{
  pinMode(pulsador, INPUT);
  pinMode(led, OUTPUT);
}

void loop() {
  estado = digitalRead(pulsador);
  if (estado != estadoAnt)
     if (estado)  
        Serial.println("HIGH");
     else
        Serial.println("LOW");
   estadoAnt = estado;
}

Prueba con este código a ver si tu pulsador esta funcionando bien.
Como lo tienes conectado?
Donde pusiste la resistencia de 10k?

Las resistencias las puse en Pull-Down.
Pero el circuito lo estoy simulando con el ISIS.

Lo que pretendo hacer es controlar un funcionamiento de un motor, pero para reducirlo a lo absurdo, me centré en tener dos led´s.

Que cuando el Boton 1 sea HIGH que encienda un led y mientras que el Boton 2 no sea HIGH que este no apague.

Básicamente como un marcha paro, al que le añadiré cosas.

Lo intento hacer con Do.... While, pero no responde.
O sale y entra continuamente de la condición o no sale de ella.

Cuando programo un PIC normal en "C" esto no pasa.

Y porque no subes el archivo Proteus?

Katynga. Ten en cuenta que loop es un bucle infinito por lo que se repetirá continuamente, y que el bucle do-while se ejecuta siempre la primera vez, ya que evalúa la condición al final. Cambia tu bucle a

while (digitalRead(pulsador) == HIGH) {
 Codigo
}

Y tendrá un comportamiento más acorde a lo que esperas (salvo problemas de rebotes)