Campbell Manufacturing CR10 Manual De Usuario

Descargar
Página de 253
12-1
SECTION 12.  PROGRAM CONTROL INSTRUCTIONS
TABLE 12-1.  Flag Description
Flag 0
Output Flag
Flag 1 to 8
User Flags
Flag 9
Intermediate Processing
Disable Flag
TABLE 12-2.  Command Codes
0
Go to end of program table
3
1-9, 79-98
Call Subroutine 1-9, 79-99
1
10-19
Set Flag 0-9 high
20-29
Set Flag 0-9 low
30
Then Do
31
Exit loop if true
32
Exit loop if false
41-48
Set Port 1-8 high
2
51-58
Set Port 1-8 low
2
61-68
Toggle Port 1-8
2
71-78
Pulse Port 1-8
2
1
97 and 98 are special subroutines which
can be called by Control ports 7 and 8
going high; see Instruction 85 for details.
2
The ports can be indexed to the loop
counter (Section 8.4).
3
If this command is executed while in a
subroutine, execution jumps directly to the
end of the table that called the subroutine.
***  83  IF CASE  X < F  ***
FUNCTION
If the value in the location specified in the Begin
Case Instruction 93 is less than the fixed value
entered as parameter 1 then execute the
command in parameter 2 then go to the end of
the case statement when the next Instruction
83 occurs.  Else, continue to next instruction.
See Instruction 93 for an example.
PARAM.
DATA
NUMBER
TYPE
DESCRIPTION
01:
FP
Fixed value
02:
2
Command
***  85  LABEL SUBROUTINE  ***
FUNCTION
This instruction marks the start of a subroutine.
Subroutines are a series of instructions
beginning with Instruction 85 and terminated
with Instruction 95, END.  All subroutines must
be placed in Table 3 (Subroutine Table).  When
a subroutine is called by a command in a
Program Control Instruction, the subroutine is
executed, then program flow continues with the
instruction following that which called the
subroutine.
Subroutines may be called from within other
subroutines (nested).  The maximum nesting
level for subroutines is 7 deep.  Attempts to
nest more than 7 deep will not be detected at
compilation, but will result in a run time error.
When the seventh subroutine attempts to call
the eighth, error 31 will be displayed.
Execution will not branch to the eighth
subroutine; it will continue with the Instruction
following that calling the subroutine.
98, 97 PORT INTERRUPT SUBROUTINES.  If
subroutine 98 (97) is included in Table 3 then
Port 8 (7) will cause an interrupt on the rising
edge and the subroutine will be executed.
These subroutines can also be called from any
table.
These subroutines can interrupt Table 1 or 2 or
can occur when neither Table is being
executed.  When the port activating 97 or 98
goes high during the execution of a table, the
instruction being executed is completed before
the subroutine is run (i.e. it is as if the
subroutine was called by the next instruction).
The priority is 98, 97, Table 1, Table 2.  If both
97 and 98 are pending (Ports go high at the
same time or both go high during the execution
of the same instruction in one of the tables), 98
will be executed first.  If 97 or 98 has not
interrupted a table then neither table can
interrupt it.  97 and 98 cannot interrupt each
other.  However, when 97 or 98 interrupts a
table, it is as if the subroutine were in the table
(e.g., if 98 interrupts Table 2, either Table 1 or
97 can interrupt it).
While 97 or 98 is being executed as a result of
the respective port going high, that port
interrupt is disabled (i.e., the subroutine must
be completed before the port going high will
have any effect).