beautypg.com

Section 12. program control instructions, 83 if case x < f, 85 label subroutine – Campbell Scientific CR10X Measurement and Control System User Manual

Page 183

background image

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-99

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

96, 97, and 98 are special subroutines
which can be called by Control ports 6, 7,
and 8 going high; see Instruction 85 for
details.

2

The ports can be indexed to the loop
counter.

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 (Table 12-2)

*** 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 6 deep. Attempts to
nest more than 6 deep will not be detected at
compilation, but will result in a run time error.
When the sixth subroutine attempts to call the
seventh, error 31 will be displayed. Execution
will not branch to the seventh subroutine; it will
continue with the Instruction following that
calling the subroutine.

98, 97, 96 PORT INTERRUPT SUBROUTINES.
If subroutine 98 (97, 96) is included in Table 3
then Port 8 (7, 6) 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 96, 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, 96, Table 1, Table 2. If all
three 96, 97, and 98 are pending (Ports go high
at the same time or go high during the
execution of the same instruction in one of the
tables), 98 will be executed first, then 97, and
finally 96. If 96, 97, or 98 has not interrupted a
table, then neither table can interrupt it. 96, 97,
and 98 cannot interrupt each other. However,
when 96, 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 or 96
can interrupt it).