Syntax:
IndCall AddressCommand 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
