Opciones con un solo pulsador sin usar case

Ya te había dicho que los delay no van 🚫❌.

Lo que tienes que hacer es muy fácil.

Debes hacer una función que detecte que el botón ha sido soltado.
Lo pisas y en cuanto lo soltemos detecte 👇.

Después en el timer yo que que ya lo tienes ocupado pero una variable extra no hará daño digamos

Int16 decremento;

Y en el timer 0
Únicamente decrementas

decremento--;

Eso es todo.

Cómo te había dicho cosme


Bueno algo así.

While 1

Soltar botón();


Si (botón == true && decremento ==0)
{

Acción 1
Botón =0
}

Else
{

Decremento =100;
}

Algo así
 
Hola, para que intentas correr un programa en modo HS, si luego usas delays?
Es necesario trabajar a esa velocidad o bien serviría correr a 4Mhz?

Edito: El compañero TRILO-BYTE se adelantó.
Creo que usar una variable cómo contador de "TIMER virtual" es una gran solución en casi todos los casos.
 
Amigo ya varios te dieron soluciones y te lo mencionan porque lo mas seguro es que ellos ya lo hicieron antes.

El amigo cosme ya te dió una idea de hacerlo, en realidad es una máquina de estado(o simplemente estados como quieras llamarlo), pero averigua de ello y adelante. Con una máquina de estado puedes hacer multiples cosas solo con un pulsador y si tienes problemas de rebote en tus pulsadores, realiza un antirrebote por hardware. Y no uses delay, ya te lo dijeron que eso no va y si no te gusta la idea trata de usar lo mínimo.
 
Arriba