Example, Subroutines, Example: subroutines – Yaskawa LEGEND-MC User Manual
Page 305

295
LEGEND-MC User’s Manual
Example:
Subroutines
A subroutine is a group of instructions beginning with a label and ending with an END (EN). Subroutines
are called from the main program with the jump subroutine instruction JS, followed by a label or line
number, and conditional statement. Up to 16 subroutines can be nested. After the subroutine is executed,
the program sequencer returns to the program location where the subroutine was called unless the
subroutine stack is manipulated as described in the following section.
Example:
An example of a subroutine to draw a square 500 counts per side is given below. The square is drawn at
vector position 1000,1000.
#TEST
Begin Main Program "TEST"
II,,3
Enable interrupts on input 1 and input 2
MG "WAITING FOR INPUT 1, INPUT 2"
Output message
#LOOP
Label to be used for endless loop
JP #LOOP
Endless loop
EN
End of main program
#ININT
Input Interrupt Subroutine
IF (@IN[1]=0)
IF conditional statement based on input 1
IF (@IN[2]=0)
2
nd
IF executed if 1
st
IF conditional true
MG "INPUT 1 AND INPUT 2 ARE
ACTIVE"
Message executed if 2
nd
IF is true
ELSE
ELSE command for 2
nd
IF statement
MG "ONLY INPUT 1 IS ACTIVE
Message executed if 2
nd
IF is false
ENDIF
End of 2
nd
conditional statement
ELSE
ELSE command for 1
st
IF statement
MG"ONLY INPUT 2 IS ACTIVE"
Message executed if 1
st
IF statement
ENDIF
End of 1
st
conditional statement
#WAIT
Label to be used for a loop
JP#WAIT,(@IN[1]=0) | (@IN[2]=0)
Loop until Input 1& 2 are not active
RI0
End Input Interrupt Routine without restoring
trippoints
#M
Begin Main Program