Example using IF, ELSE and ENDIF:
#TEST
Begin Main Program "TEST"
II,,3
Enable input 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 conditional statement executed if 1
st
IF conditional true
MG "INPUT 1 AND INPUT 2 ARE ACTIVE" Message to be executed if 2
nd
IF conditional is true
ELSE
ELSE command for 2
nd
IF conditional statement
MG "ONLY INPUT 1 IS ACTIVE
Message to be executed if 2
nd
IF conditional is false
ENDIF
End of 2
nd
conditional statement
ELSE
ELSE command for 1
st
IF conditional statement
MG"ONLY INPUT 2 IS ACTIVE"
Message to be executed if 1
st
IF conditional 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 both input 1 and input 2 are not active
RI0
End Input Interrupt Routine without restoring trippoints
Subroutines
A subroutine is a group of instructions beginning with a label and ending with an end command
(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 8 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.
#M
Begin Main Program
CB1
Clear Output Bit 1 (pick up pen)
VP 1000,1000;LE;BGS
Define vector position; move pen
AMS
Wait for after motion trippoint
SB1
Set Output Bit 1 (put down pen)
JS #Square;CB1
Jump to square subroutine
EN
End Main Program
#Square Square
subroutine
V1=500;JS #L
Define length of side
V1=-V1;JS #L
Switch direction
EN End
subroutine
DMC-1600
Chapter 7 Application Programming
•
131