Positron Compiler Documentation

Sub-EndSub

Positron16 · Revision 1.1.3.5 · PDF page 455

Sub Label Name() BASIC commands inside the Subroutine EndSub

Create a ‘standard’ subroutine but with a start directive (Sub) and an end directive (EndSub).

Label Name is the name of the subroutine.

' Create a subroutine to flash an LED 10 times
  Device = 24FJ64GA002
  Declare Xtal = 16
  Declare Hserial_Baud = 9600       ' UART1 Baud rate
  Declare Hrsout1_Pin = PORTB.14    ' Select the pin for TX with USART1
  Dim FlashAmount as Byte      ' Create a variable for the amount of LED flashes
  Symbol LED = PORTB.0        ' Create a name for the LED’s Port and Pin

  Do                           ' Create a loop
     FlashLED()               ' Call the subroutine
     DelayMs 1000              ' Delay for 1 second
  Loop                        ' Loop forever

' Create a subroutine that will flash an LED
'
Sub FlashLED()
   For FlashAmount = 1 to 10   ' A loop for the amount of flashes
     PinHigh LED               ' Illuminate the LED
     DelayMs 500               ' Wait for half a second
     PinLow LED               ' Extinguish the LED
     DelayMs 500               ' Wait for half a second
   Next                         ' Close the loop
EndSub                         ' End the subroutine and return from it

The EndSub directive will produce a Return command and exit the subroutine as normal. There is also an ExitSub command that will create a Return command and return from the subroutine.

' Create a subroutine that will flash an LED and exit when required
'
Sub FlashLED()
   For FlashAmount = 1 to 100   ' A loop for the amount of flashes
     PinHigh LED               ' Illuminate the LED
     DelayMs 500               ' Wait for half a second
     PinLow LED               ' Extinguish the LED
     DelayMs 500               ' Wait for half a second
     If FlashAmount >= 10 Then ExitSub  ' Exit the subroutine after 10 flashes
  Next                         ' Close the loop
EndSub                         ' End the subroutine and return from it

Calling a sub only requires the name, and a pair of parenthesis after it. This makes a program easier to read:

MySub()    ' Call the subroutine named MySub

See also : GoSub, Proc...EndProc.

View original PDF page 455Open page in PDFOriginal PDF page 455