Video: Arduino Project: Real time clock (RTC) and temperature monitor using the DS3231 module. 2025
Subrutinele PBASIC sunt neprețuite în proiectele dvs. electronice folosind un procesor de ștampilă BASIC. O subrutină este o secțiune a unui program care poate fi apelat din orice locație din program. Când subrutina se termină, controlul programului revine la locația din care a fost apelată subrutina.
Subrutinele sunt utile deoarece vă permit să separați porțiuni lungi ale programului de bucla principală a programului, ceea ce simplifică bucla principală a programului pentru a fi mai ușor de înțeles. Un alt avantaj al subrutinelor este că pot face programul tău mai mic.
Să presupunem că scrieți un program care necesită efectuarea unui calcul complicat de mai multe ori. Dacă plasați calculul complicat într-o subrutină, puteți apela subrutina din mai multe locuri din program. În acest fel, scrieți codul care efectuează calculul complicat o singură dată.
Pentru a crea și utiliza subrutine, trebuie să utilizați două comenzi PBASIC. Primul este GOSUB, care cheamă subrutina. De obicei, utilizați comanda GOSUB în bucla principală a programului dvs. ori de câte ori doriți să apelați subrutina. A doua comandă este RETURN, care este întotdeauna ultima comandă din subrutină.
Pentru a crea o subrutină, începeți cu o etichetă și terminați cu o comandă RETURN. Între ele, scrieți comenzile pe care doriți să le executați când se cheamă subrutina.
Iată un exemplu de subrutină care generează un număr aleator între 1 și 999 și o salvează într-o variabilă numită Rnd:
GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Pentru a apela acest subrutină, ați folosi o comandă GOSUB ca aceasta:
GOSUB GetRandom
Această comandă GOSUB transferă controlul la eticheta GetRandom. Apoi, când subrutina GetRandom atinge comanda RETURN, controlul revine la comanda imediat urmând comanda GOSUB.
Aici este un program complet care utilizează o subrutină pentru a obține un număr aleator între 1 și 1, 000 și utilizează numărul aleatoriu pentru a declanșa LED-ul pe pinul 0 să clipească la intervale aleatorii. Puteți rula acest program pe orice circuit de ștampile de bază care are un LED pe pin 0.
'LED-ul Blinker Programul' Doug Lowe '10 iulie 2011 "Acest program clipește LED-ul pe pin 0 la întâmplare." {$ STAMP BS2} '{$ PBASIC 2. 5} Rnd VAR Word Led1 PIN 0 DO GOSUB GetRandom HIGH Led1 PAUZĂ RED LOW Led1 PAUZĂ 100 LOOP GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Când utilizați o subrutină, este vitală că vă împiedicați ca programul dumneavoastră să "cadă" în mod accidental în subrutina dumneavoastră și să o executați atunci când nu intenționați să fie executată.De exemplu, să presupunem că programul din listele 3-5 a folosit o buclă FOR-NEXT în loc de o buclă DO deoarece ați vrut să clipi LED-ul de numai 100 de ori. Iată un exemplu de nu pentru a scrie acel program:
FOR Counter = 1 până la 100 GOSUB GetRandom HIGH Led1 PAUSE RUND LOW Led1 PAUZĂ 100 NEXT GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
Vedeți de ce? După ce buclă FOR-NEXT clipește LED-ul de 100 de ori, programul va continua cu următoarea comandă după buclă FOR-NEXT, care este subrutina!
Pentru a preveni acest lucru, puteți utiliza o altă comandă PBASIC, END, care spune pur și simplu ștampila BASIC că ați ajuns la sfârșitul programului dvs., deci ar trebui să oprească executarea comenzilor. Ați plasat comanda END după comanda NEXT, după cum urmează:
FOR Counter = 1 până la 100 GOSUB GetRandom HIGH Led1 PAUZĂ RED LOW Led1 PAUZĂ 100 NEXT END GetRandom: RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > Apoi, programul se va opri după terminarea bucla FOR-NEXT.
