Video: CNC-Fräse selbstgebaut - Teil 1 (Steuerung: Arduino, Estlcam) 2024
PBASIC Unterprogramme sind in Ihren Elektronikprojekten mit einem BASIC Stamp Prozessor von unschätzbarem Wert. Eine -Unterroutine ist ein Abschnitt eines Programms, der von einem beliebigen Ort im Programm aufgerufen werden kann. Wenn das Unterprogramm beendet ist, springt die Steuerung des Programms zurück zu dem Ort, von dem aus das Unterprogramm aufgerufen wurde.
Subroutinen sind nützlich, weil sie es ermöglichen, lange Abschnitte Ihres Programms von der Hauptschleife des Programms zu trennen, was die Hauptprogrammschleife vereinfacht, um sie verständlicher zu machen. Ein weiterer Vorteil von Unterprogrammen ist, dass sie Ihr Programm kleiner machen können.
Angenommen, Sie schreiben ein Programm, das eine komplizierte Berechnung mehrmals ausführen muss. Wenn Sie die komplizierte Berechnung in einem Unterprogramm platzieren, können Sie das Unterprogramm von mehreren Stellen im Programm aufrufen. Auf diese Weise schreiben Sie den Code, der die komplizierte Berechnung nur einmal durchführt.
Um Subroutinen erstellen und verwenden zu können, müssen Sie zwei PBASIC-Befehle verwenden. Der erste ist GOSUB, der das Unterprogramm aufruft. Normalerweise verwenden Sie den Befehl GOSUB in der Hauptschleife Ihres Programms, wenn Sie das Unterprogramm aufrufen möchten. Der zweite Befehl ist RETURN, der immer der letzte Befehl in der Subroutine ist.
Um ein Unterprogramm zu erstellen, beginnen Sie mit einem Label und enden mit einem RETURN-Befehl. Zwischen ihnen schreiben Sie die Befehle, die Sie ausführen wollen, wenn das Unterprogramm aufgerufen wird.
Hier ist ein Beispiel für ein Unterprogramm, das eine Zufallszahl zwischen 1 und 999 erzeugt und in einer Variablen mit dem Namen Rnd speichert:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Aufruf dieses Unterprogramms würden Sie einfach einen GOSUB-Befehl wie folgt verwenden:
GOSUB GetRandom
Dieser GOSUB-Befehl überträgt die Steuerung an das Label GetRandom. Wenn dann die GetRandom-Subroutine ihren RETURN-Befehl erreicht, springt die Steuerung zurück zu dem Befehl, der unmittelbar auf den GOSUB-Befehl folgt.
Hier ist ein komplettes Programm, das eine Subroutine verwendet, um eine Zufallszahl zwischen 1 und 1, 000 zu erhalten, und die Zufallszahl verwendet, um die LED an Pin 0 in zufälligen Intervallen zu blinken. Sie können dieses Programm in jedem Basic Stamp-Schaltkreis ausführen, der eine LED an Pin 0 hat.
'LED-Blinkerprogramm' Doug Lowe '10. Juli 2011 "Dieses Programm blinkt die LED an Pin 0 nach dem Zufallsprinzip.' {$ STAMP BS2} '{$ PBASIC 2. 5} Rnd VAR Wort Led1 PIN 0 DO GOSUB GetRandom HOCH Led1 PAUSE Rnd LOW Led1 PAUSE 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Wenn Sie ein Unterprogramm verwenden, ist es wichtig dass Sie verhindern, dass Ihr Programm versehentlich in Ihr Unterprogramm "hineinfällt" und es ausführt, wenn Sie nicht beabsichtigen, es auszuführen.Angenommen, das Programm in Listing 3-5 verwendete eine FOR-NEXT-Schleife anstelle einer DO-Schleife, weil Sie die LED nur 100 Mal blinken wollten. Hier ist ein Beispiel, wie nicht dieses Programm schreiben kann:
FÜR Zähler = 1 bis 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Siehst du warum? Nachdem die FOR-NEXT-Schleife die LED 100 Mal blinkt, wird das Programm mit dem nächsten Befehl nach der FOR-NEXT-Schleife fortgesetzt, die das Unterprogramm ist!
Um dies zu verhindern, können Sie noch einen weiteren PBASIC-Befehl, END, verwenden, der dem BASIC Stamp einfach mitteilt, dass Sie das Ende Ihres Programms erreicht haben, also sollte es die Ausführung von Befehlen stoppen. Sie würden den END-Befehl nach dem Befehl NEXT setzen, wie folgt:
FÜR Zähler = 1 bis 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT END GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > Dann stoppt das Programm, nachdem die FOR-NEXT-Schleife beendet ist.