Esto lo compartí hace algún tiempo atrás y quizás resuelva tu duda...
Te cito un ejemplo como punto de partida...
main:
if input0 = 1 then encendido (si la entrada 0 es igual a 1, ir al sub programa…)
if input0 = 0 then apagado (si la entrada 0 es igual a 0, ir al sub programa ….)
goto main (volver a la 1er línea del programa, osea, main)
encendido: (sub programa encendido)
high 7 (activar salida 7)
wait 1 (esperar 1 segundo)
goto main (volver a la etiqueta “main”)
apagado: (sub programa “apagado”)
high 6 (activar la salida 6)
wait 1 (esperar 1 segundo)
low 6 (desactivar la salida 6)
wait 1 (esperar 1 segundo)
high 6 (activar la salida 6)
wait 1 (esperar 1 segundo)
low 6 (desactivar la salida 6)
goto main (volver a la etiqueta “main”)
Como verán, en la rutina anterior, lo único que hice, fue programar el microcontrolador con un dialogo sencillo, en ingles, pero muy deducible para aquellos que estén flojos con este idioma…
Prácticamente, lo único que le ordene al microcontrolador, es que monitoree la entrada numero cero (input cero), y en caso de tener algún estado definido (un alto o un bajo, osea, un 1 o un 0 lógico), este actúe dando como resultado una acción dada….
Internamente, estas líneas de programación, funcionan de la siguiente manera dentro del microcontrolador:
1_ Siempre, la rutina se lee y se ejecuta desde la 1er línea para abajo, salvo que halla un salto en el camino (ver imagen)
2_En este caso en particular, arranca el ciclo en la etiqueta “main”, pasa por la primera instrucción de que visualice y compare el estado de la entrada cero con el valor pre establecido y en caso de ser positivo el resultado saltar e ir al sub programa encendido…. (Ver imagen
Viendolo de otra manera...
En el caso de que la comparación de nula, el microcontrolador sigue líneas abajo leyendo las instrucciones.
Como verán, la siguiente instrucción, es similar, osea, compara el estado de la señal en la entrada cero, y si la comparación da positiva, salta al subprograma apagado; En caso de ser nula la comparación, sigue leyendo las siguientes líneas hasta llegar al fin del programa, o bien, hasta llegar a una bifurcación… En este caso, llega hasta la instrucción “goto”, lo cual, hace repetir el programa una y otra ves sin tener fin… En tu caso particular, al presionar el pulsador, corta la tarea u acción que hacía para atender la línea donde hace referencia de hacer algo si el pulsador está presionado; El tema está en como escribimos el programa, ya que puede quedar en ese punto sin hacer nada, cómo así también, puede que salte a una acción pero nuevamente se genere la misma acción por qué mantuvimos retenido el pulsador un tiempo largo y carecíamos de antirebotes....
Te recomiendo que arranques mirando "todos" los ejemplos de programación que tenés en este tópico para que vayas viendo y aprendiendo a programar en PBP. Saludos
PD: estoy escribiendo desde el teléfono y no puedo editarlo para insertar las imágenes y poner bien el código.perdon
main:
if input0 = 1 then encendido (si la entrada 0 es igual a 1, ir al sub programa…)
if input0 = 0 then apagado (si la entrada 0 es igual a 0, ir al sub programa ….)
goto main (volver a la 1er línea del programa, osea, main)
encendido: (sub programa encendido)
high 7 (activar salida 7)
wait 1 (esperar 1 segundo)
goto main (volver a la etiqueta “main”)
apagado: (sub programa “apagado”)
high 6 (activar la salida 6)
wait 1 (esperar 1 segundo)
low 6 (desactivar la salida 6)
wait 1 (esperar 1 segundo)
high 6 (activar la salida 6)
wait 1 (esperar 1 segundo)
low 6 (desactivar la salida 6)
goto main (volver a la etiqueta “main”)
Como verán, en la rutina anterior, lo único que hice, fue programar el microcontrolador con un dialogo sencillo, en ingles, pero muy deducible para aquellos que estén flojos con este idioma…
Prácticamente, lo único que le ordene al microcontrolador, es que monitoree la entrada numero cero (input cero), y en caso de tener algún estado definido (un alto o un bajo, osea, un 1 o un 0 lógico), este actúe dando como resultado una acción dada….
Internamente, estas líneas de programación, funcionan de la siguiente manera dentro del microcontrolador:
1_ Siempre, la rutina se lee y se ejecuta desde la 1er línea para abajo, salvo que halla un salto en el camino
En este caso en particular, arranca el ciclo en la etiqueta “main”, pasa por la primera instrucción de que visualice y compare el estado de la entrada cero con el valor pre establecido y en caso de ser positivo el resultado saltar e ir al sub programa encendido….
Viendolo de otra manera...
En el caso de que la comparación de nula, el microcontrolador sigue líneas abajo leyendo las instrucciones.
Como verán, la siguiente instrucción, es similar, osea, compara el estado de la señal en la entrada cero, y si la comparación da positiva, salta al subprograma apagado; En caso de ser nula la comparación, sigue leyendo las siguientes líneas hasta llegar al fin del programa, o bien, hasta llegar a una bifurcación… En este caso, llega hasta la instrucción “goto”, lo cual, hace repetir el programa una y otra ves sin tener fin…