Projets électroniques: comment programmer sous-routines PBASIC

Routines PBASIC sont inestimables dans vos projets électroniques utilisant un processeur BASIC Stamp. UN sous-programme est une coupe d'un programme qui peut être appelé à partir de n'importe quel emplacement dans le programme. Lorsque le sous-programme se termine, le contrôle du programme saute à l'emplacement à partir duquel le sous-programme a été appelé.

Les sous-programmes sont utiles car ils vous permettent de séparer de longues parties de votre programme de la boucle principale du programme, ce qui simplifie la boucle principale du programme pour le rendre plus facile à comprendre. Un autre avantage de sous-programmes est qu'ils peuvent rendre votre programme plus petit.

Supposons que vous avez écrit un programme qui doit effectuer calcul compliqué à plusieurs reprises. Si vous placez le calcul compliqué dans un sous-programme, vous pouvez appeler le sous-programme à partir de plusieurs endroits dans le programme. De cette façon, vous écrivez le code qui effectue le calcul compliqué qu'une seule fois.

Pour créer et utiliser des sous-routines, vous devez utiliser deux commandes PBASIC. Le premier est GOSUB, qui appelle le sous-programme. Vous utilisez généralement la GOSUB commandement au sein de la boucle principale de votre programme chaque fois que vous voulez appeler la sous-routine. La seconde commande est RETOUR, qui est toujours la dernière commande dans le sous-programme.

Pour créer un sous-programme, vous commencez avec une étiquette et finissez avec un RETOUR commande. Entre eux, vous écrivez ce que vous voulez les commandes à exécuter lorsque le sous-programme est appelé.

Voici un exemple d'un sous-programme qui génère un nombre aléatoire entre 1 et 999 et l'enregistre dans une variable nommée Rnd:




GetRandom: Random RndRnd = Rnd // 999 + 1RETURN 

Pour appeler cette sous-routine, vous pouvez tout simplement utiliser un GOSUB commande comme ceci:

GOSUB GetRandom

Ce GOSUB les transferts de la commande de contrôle à la GetRandom étiquette. Ensuite, lorsque le GetRandom sous-programme atteint sa RETOUR commandement, le contrôle revient à la commande immédiatement après la GOSUB commande.

Voici un programme complet qui utilise un sous-programme pour obtenir un nombre aléatoire entre 1 et 1000 et utilise le nombre aléatoire pour provoquer la LED sur la broche 0 à clignoter à intervalles aléatoires. Vous pouvez exécuter ce programme sur un circuit de Basic Stamp qui a une LED sur la broche 0.

'LED clignotant Programme Doug Lowe' 10 Juillet, 2011 '' Ce programme clignote la LED sur la broche 0 hasard '. {$ STAMP BS2} {$ PBASIC 2.5} Rnd VAR WordLed1 PIN 0DOGOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100LOOPGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Lorsque vous utilisez un sous-programme, il est essentiel que vous empêchez votre programme accidentellement “ tomber dans ” votre sous-programme et l'exécuter lorsque vous ne vouliez pas à être exécutés. Par exemple, supposons que le programme du Listing 3-5 utilise un FOR-NEXT au lieu d'une boucle FAIRE boucle parce que vous vouliez faire clignoter la LED seulement 100 fois. Voici un exemple de la façon dont pas pour écrire ce programme:

Pour Counter = 1 A 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Voyez-vous pourquoi? Après le FOR-NEXT boucle clignote les LED 100 fois, le programme se poursuivra avec la prochaine commande après le FOR-NEXT boucle, qui est le sous-programme!

Pour empêcher cela, vous pouvez utiliser une autre commande PBASIC, FIN, qui raconte simplement le BASIC Stamp que vous avez atteint la fin de votre programme, il devrait donc arrêter l'exécution des commandes. Vous souhaitez placer le FIN après la commande SUIVANT commande, comme ceci:

Pour Counter = 1 A 100GOSUB GetRandomHIGH Led1PAUSE RndLOW Led1PAUSE 100NEXTENDGetRandom: Random RndRnd = Rnd // 999 + 1RETURN

Ensuite, le programme va s'arrêter après la FOR-NEXT la boucle se termine.


» » » » Projets électroniques: comment programmer sous-routines PBASIC