la idea es que pueda darle diferentes tiempos presionando el mismo pulsador
ejemplo;
* PRIMER TIEMPO mantengo presionado botón por un medio segundo y activa led_1 por 10 segundos si vuelvo a presionar el botón dentro de los 10 segundos le ordenare que se apague led_1 y si no es presionado el botón se apagara después de los 10 segundos automáticamente.
* SEGUNDO TIEMPO mantengo presionado botón por 2 segundos y activa led_1 por 1 minuto si dentro del minuto se vuelve a presionar el botón led_1 se apagara y si no es presionado el botón cumple el tiempo del minuto y el led_1 se apaga automáticamente.
* TERCER TIEMPO mantengo presionado el boton por 5 segundos y se activa led_1 por un tiempo de 2 horas si dentro de este tiempo de 2 horas se vuelve a presionar el boton led_1 se apaga y si no se presiona el boton led_1 se apagara automaticamente cuando se cumpla el tiempo adecuado amigo por favor he avanzado un poco del codigo pero aun no logro dar con el codigo o con la forma adecuada
Mira el programa que adjunto, tal vez te pueda servir como orientación para hacer lo que requieres.
No se utiliza un solo botón para determinar los periodos de retardo, pues eso puede ser muy complicado.
Se utiliza la interrupción por cambio de estado en los pines RB4 a RB7 para determinar que periodo establecer.
El programa cuenta con una rutina para periodos largos de tiempo que puedes utilizar en tu programa.
Como en todas las rutinas de retardo, una vez que el programa entra a la rutina, ya no sale hasta que se cumpla el tiempo establecido.
Por lo tanto el programa principal será retomado hasta que se cumpla la condición y retorne.
Si se puede apagar el LED presionando cualquier botón en RB4 a RB7 y volver a establecer el periodo, pero no se retomará el programa nuevamente hasta que se cumpla el conteo de la rutina.
Espero te sirva de algo este programa, o tal vez hasta lo puedas modificar para lograr tu objetivo.
Nota:
El programa lo escribí con MCS v5.0 y compilado con PBPX 3.0 porque necesitaba el archivo *.cof para realizar un debug al programa.
Sin embargo el código es compatible con versiones anteriores con solo cambiar la palabra de configuración.
La palabra de configuración para PBP 2.60 también está incluida en el programa por si se requiere.
Saludos.