Video: TOP 10 Electronic Engineering Projects 2024
PBASIC-subroutines zijn van onschatbare waarde in uw elektronica-projecten met behulp van een BASIC Stamp-processor. Een subroutine is een gedeelte van een programma dat vanaf elke locatie in het programma kan worden aangeroepen. Wanneer de subroutine is afgelopen, springt de besturing van het programma terug naar de locatie van waaruit de subroutine is opgeroepen.
Subroutines zijn handig omdat ze u in staat stellen lange delen van uw programma te scheiden van de hoofdlus van het programma, waardoor het hoofdprogramma eenvoudiger wordt om het te begrijpen. Een ander voordeel van subroutines is dat ze uw programma kleiner kunnen maken.
Stel dat u een programma aan het schrijven bent dat verschillende keren ingewikkelde berekeningen moet uitvoeren. Als u de gecompliceerde berekening in een subroutine plaatst, kunt u de subroutine vanuit verschillende plaatsen in het programma bellen. Op die manier schrijf je de code die de gecompliceerde berekening slechts eenmaal uitvoert.
Als u subroutines wilt maken en gebruiken, moet u twee PBASIC-opdrachten gebruiken. De eerste is GOSUB, die de subroutine noemt. Je gebruikt meestal de GOSUB-opdracht binnen de hoofdlus van je programma wanneer je de subroutine wilt aanroepen. Het tweede commando is RETURN, wat altijd het laatste commando in de subroutine is.
Om een subroutine aan te maken, begin je met een label en eindig je met een RETURN-opdracht. Daartussen schrijf je alle commando's die je wilt uitvoeren wanneer de subroutine wordt aangeroepen.
Hier is een voorbeeld van een subroutine die een willekeurig getal tussen 1 en 999 genereert en opslaat in een variabele met de naam Rnd:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Deze subroutine aanroepen, zou je gewoon een GOSUB-commando gebruiken zoals dit:
GOSUB GetRandom
Deze GOSUB-opdracht draagt het besturingselement over naar het GetRandom-label. Wanneer de GetRandom-subroutine zijn RETURN-opdracht bereikt, springt de besturing terug naar de opdracht onmiddellijk na de GOSUB-opdracht.
Hier is een compleet programma dat een subroutine gebruikt om een willekeurig getal tussen 1 en 1, 000 te krijgen en het willekeurige nummer gebruikt om de LED op pin 0 met willekeurige tussenpozen te laten knipperen. U kunt dit programma uitvoeren op elk Basic Stamp-circuit met een LED op pin 0.
'LED Blinker-programma' Doug Lowe '10 juli 2011' Dit programma knippert de LED op pin 0 willekeurig. '{$ STAMP BS2} '{$ PBASIC 2. 5} Rnd VAR Woord Led1 PIN 0 DO GOSUB GetRandom HOOG Led1 PAUZE Rnd LAAG Led1 PAUZE 100 LUS GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Wanneer u een subroutine gebruikt, is het van vitaal belang dat u voorkomt dat uw programma per ongeluk "in uw subroutine" terechtkomt en het uitvoert wanneer u niet van plan bent het uit te voeren.Stel dat het programma in Listing 3-5 een FOR-NEXT-lus gebruikte in plaats van een DO-lus omdat u de LED slechts 100 keer wilde knipperen. Hier is een voorbeeld van hoe niet om dat programma te schrijven:
VOOR Teller = 1 TOT 100 GOSUB GetRandom HOOG Led1 PAUZE Rnd LAAG Led1 PAUZE 100 VOLGT GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETOUR
Ziet u waarom? Nadat de FOR-NEXT-lus de LED 100 keer knippert, gaat het programma door met de volgende opdracht na de FOR-NEXT-lus, de subroutine!
Om te voorkomen dat dit gebeurt, kunt u nog een ander PBASIC-commando gebruiken, END, dat simpelweg aan de BASIC Stamp meldt dat u het einde van uw programma hebt bereikt, dus moet het stoppen met het uitvoeren van opdrachten. U plaatst het END-commando na de NEXT-opdracht, zoals deze:
VOOR Teller = 1 TOT 100 GOSUB GetRandom HOOG Led1 PAUZE Rnd LAAG Led1 PAUZE 100 VOLGEND EINDE GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETOUR > Daarna stopt het programma nadat de FOR-NEXT-lus is voltooid.