Campbell Scientific CR10 CR10 Measurement and Control - Page 157
Program Control
View all Campbell Scientific CR10 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 157 highlights
SECTION 12. PROGRAM CONTROL INSTRUCTIONS TABLE 12-1. Flag Description Flag 0 Flag 1 to 8 Flag 9 Output Flag User Flags lntermediate Processing Disable Flag TABLE 12-2. Command Godes O Go to end of program table3 11-90, -7199-98 Callsubroutinel-9,79-991 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 higha 51-58 Set Port 1-8low2 61-68 Toggle Port 1-82 71-78 Pulse Port 1-82 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 lf this command is executed while in a subroutine, execution jumps directly to the end of the table that called the subroutine. *** gtll lF cAsE x < F **' FUNCTION lf the value in the location specified in the Begin Case lnstruction 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 lnstruction 93 for an example. PARAM. NUMBER TDAYTAPE 01: FP 02: 2 DESCRIPTION Fixed value Command t** 85 LABEL SUBROUTINE **T FUNCTION This instruction marks the start of a subroutine. Subroutines are a series of instructions beginning with Instruction 85 and terminated with lnstruction 95, END. Allsubroutines 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, lf 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. lf 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.9., 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 poft going high will have any effect). 12-1