indcall - Anobium/Great-Cow-BASIC-Help GitHub Wiki
Syntax:
IndCall Address
Command Availability:
Available on all microcontrollers.
Explanation:
IndCall
provides a basic implementation of function pointers.
Address
is the program memory location of the subroutine that is to be
called. There are two ways to specify this - either by providing a
direct reference to the subroutine using the @ operator, or by
specifying a word variable that contains the address.
This command is useful for callbacks. For example, a particular subroutine might read bytes from a serial connection, but different actions may need to be taken at different times. A different subroutine could be created for each action, and then the subroutine for the appropriate action could be passed to the serial connection reading routine each time it is called.
Note: Calling subroutines that have
parameters using IndCall
is not supported. Errors may occur. If data
needs to be passed, use a variable instead.
Example:
'Flash an LED using an indirect call
#chip 12F683
'Create a word variable, and set it to the memory location of the
'Blink subroutine.
Dim FlashingSub As Word
FlashingSub = @Blink
'Main loop
Do
'Indirect call to subroutine at location FlashingSub
IndCall FlashingSub
Loop
'LED flashing subroutine
Sub Blink
PulseOut GPIO.0, 500 ms
Wait 500 ms
End Sub