Video: LCD Display mit Arduino ansteuern 2024
PBASIC subrutiner är ovärderliga i dina elektronikprojekt med en BASIC Stamp-processor. En subrutin är en sektion av ett program som kan ringas från vilken plats som helst i programmet. När subrutinen avslutas hoppar kontrollen av programmet tillbaka till den plats från vilken subrutinen heter.
Subrutiner är användbara eftersom de låter dig separera långa delar av ditt program från programmets huvudslinga, vilket förenklar huvudprogramslingan för att göra det lättare att förstå. En annan fördel med subrutiner är att de kan göra ditt program mindre.
Anta att du skriver ett program som behöver utföra komplicerad beräkning flera gånger. Om du placerar den komplicerade beräkningen i en subrutin, kan du ringa subrutinen från flera ställen i programmet. På så sätt skriver du koden som utför den komplicerade beräkningen endast en gång.
För att skapa och använda subrutiner måste du använda två PBASIC-kommandon. Den första är GOSUB, som kallar subrutinen. Du brukar använda GOSUB-kommandot i programmets huvudslinga när du vill ringa underrutan. Det andra kommandot är RETURN, vilket alltid är det sista kommandot i delrutinen.
För att skapa en subrutin börjar du med en etikett och slutar med ett RETURN-kommando. Mellan dem skriver du vilka kommandon du vill utföra när subrutinen heter.
Här är ett exempel på en subrutin som genererar ett slumptal mellan 1 och 999 och sparar det i en variabel med namnet Rnd:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
För att ringa denna subrutin, du skulle helt enkelt använda ett GOSUB-kommando så här:
GOSUB GetRandom
Detta GOSUB-kommando överför kontrollen till GetRandom-etiketten. Då, när GetRandom-subrutinen når sitt RETURN-kommando, hoppar kontrollen tillbaka till kommandot omedelbart efter GOSUB-kommandot.
Här är ett komplett program som använder en subrutin för att få ett slumpmässigt tal mellan 1 och 1 000 och använder slumpmässigt nummer för att LED-lampan på stift 0 blinkar slumpmässigt. Du kan köra det här programmet på någon Basic Stamp-krets som har en LED på stift 0.
'LED Blinker Program' Doug Lowe '10 juli 2011 "Detta program blinkar LED-lampan på stift 0 slumpmässigt." {$ STAMP BS2} '{$ PBASIC 2. 5} RND VAR Word Led1 PIN 0 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
När du använder en subrutin är det viktigt att du förhindrar att ditt program av misstag "faller in" i din subrutin och kör det när du inte tänkte att det ska utföras.Antag exempelvis att programmet i lista 3-5 använde en FOR-NEXT-slinga istället för en DO-slinga eftersom du bara ville blinka lysdioden 100 gånger. Här är ett exempel på hur inte för att skriva det programmet:
FOR Counter = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Ser du varför? Efter att FOR-NEXT-slingan blinkar lysdioden 100 gånger, fortsätter programmet med nästa kommando efter FOR-NEXT-slingan, vilken är subrutinen!
För att förhindra att det händer, kan du använda ett annat PBASIC-kommando, END, som helt enkelt berättar för BASIC Stamp som du har nått slutet av ditt program, så det borde sluta att utföra kommandon. Du skulle placera END-kommandot efter kommandot NEXT, så här:
FOR Counter = 1 till 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NÄSTA END GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > Då kommer programmet att sluta efter FOR-NEXT loop-finishen.