Estoy tratando de implementar un pequeño fragmento de código, y básicamente se puede simplificar a lo siguiente.
Tengo tres LED diferentes (por ejemplo, P0.0, P0.1 y amp; P0.2). Tengo un botón que cuando se presiona primero debe encender el LED en P0.0. Cuando se presiona de nuevo se debe encender P0.1 y así sucesivamente. El LED permanecerá encendido hasta que se detecte el siguiente botón pulsador.
En el siguiente código de prueba, me refiero a cada LED como una función. Mi idea fue incrementar un contador y, dependiendo del conteo, encender un LED en particular.
La salida de este código no es lo que espero. No hay transición entre las funciones. Cualquier sugerencia sobre cómo podría reestructurar este código sería útil.
No uso las interrupciones para este código. Además, no he incluido el debouncing ya que mi objetivo es poder reproducir este código desde cero en 15 minutos.
else if ( SW1 != (0x00000002) ) //when pressed
{
delay(); //for debouncing
count++;
}
if (count == 1) {
IO0SET = (1<<0);
pattern1();
}
else if (count == 2) {
IO0SET = (1<<6);
pattern2();
}
else if (count == 3) {
IO0SET = (1<<7);
pattern3();
}
¿Hay alguna forma en la que pueda salir inmediatamente de la función actual, en lugar de tener que esperar a que termine?