Proyectos electrónicos: cómo programar subrutinas PBASIC
Subrutinas PBASIC son muy valiosos en sus proyectos de electrónica utilizando un procesador de BASIC Stamp. LA subrutina es una sección de un programa que se puede llamar desde cualquier lugar en el programa. Cuando la subrutina termina, el control del programa salta de nuevo a la ubicación desde la que se llamó la subrutina.
Las subrutinas son útiles porque permiten separar largas porciones de su programa de bucle principal del programa, lo que simplifica el bucle principal del programa para que sea más fácil de entender. Otro de los beneficios de subrutinas es que pueden hacer su programa más pequeño.
Supongamos que usted está escribiendo un programa que necesita para realizar cálculos complicados varias veces. Si coloca el cálculo complicado en una subrutina, puede llamar a la subrutina de varios lugares en el programa. De esa manera, escribir el código que realiza el cálculo complicado sólo una vez.
Para crear y utilizar subrutinas, es necesario utilizar dos comandos PBASIC. El primero es GOSUB, que llama a la subrutina. Normalmente se utiliza el GOSUB mandar dentro del bucle principal de su programa cada vez que desee llamar a la subrutina. El segundo comando es REGRESO, que es siempre el último comando en la subrutina.
Para crear una subrutina, se empieza con una etiqueta y termina con un REGRESO comandos. Entre ellos, se escribe lo comandos que desea ejecutar cuando el subprograma se llama.
He aquí un ejemplo de una subrutina que genera un número aleatorio entre 1 y 999 y la guarda en una variable llamada Rnd:
GetRandom: RANDOM RndRnd = Rnd // 999 + 1RETURN
Para llamar a esta subrutina, sólo tendría que utilizar una GOSUB ordenar así:
GOSUB GetRandom
Esta GOSUB transferencias comando de control a la GetRandom etiqueta. Entonces, cuando el GetRandom subrutina llega a su REGRESO comando, control salta de nuevo a la orden inmediatamente después de la GOSUB comandos.
Aquí es un programa completo que utiliza una subrutina para obtener un número aleatorio entre 1 y 1000 y utiliza el número aleatorio para hacer que el LED en el pin 0 a parpadear a intervalos aleatorios. Puede ejecutar este programa en cualquier circuito Basic Stamp que tiene un LED en el pin 0.
'LED Programa Blinker' Doug Lowe 10 de julio 2011 '' Este programa parpadea el LED en el pin 0 al azar '. {$ STAMP BS2} '{$ PBASIC 2.5} Rnd VAR WordLed1 PIN 0DOGOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100LOOPGetRandom: RANDOM RndRnd = Rnd // 999 + 1RETURN
Cuando se utiliza una subrutina, es vital que se impide su programa de forma accidental " caer en " el subprograma y la ejecución cuando no tenía intención a ser ejecutados. Por ejemplo, supongamos que el programa en el Listado 3-5 utilizaron una PARA EL SIGUIENTE bucle en lugar de una HACER bucle porque querías a parpadear el LED sólo 100 veces. He aquí un ejemplo de cómo no escribir ese programa:
PARA Contador = 1 A 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTGetRandom: RANDOM RndRnd = Rnd // 999 + 1RETURN
¿Ve usted por qué? Después de la PARA EL SIGUIENTE bucle parpadea las 100 veces LED, el programa continuará con el siguiente comando después de la PARA EL SIGUIENTE bucle, que es la subrutina!
Para evitar que esto ocurra, puede utilizar otro comando PBASIC, FIN, que simplemente le dice al BASIC Stamp que ha llegado al final de su programa, por lo que debe detener la ejecución de comandos. Se podría colocar el FIN comando después de la SIGUIENTE de comandos, así:
PARA Contador = 1 A 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTENDGetRandom: RANDOM RndRnd = Rnd // 999 + 1RETURN
A continuación, el programa se detendrá después de la PARA EL SIGUIENTE bucle termina.