IDEC MicroSmart User Manual

Page 318

Advertising
background image

18: P

ROGRAM

B

RANCHING

I

NSTRUCTIONS

18-4

« FC4A M

ICRO

S

MART

U

SER

S

M

ANUAL

»

Correct Structure for Calling Subroutine

When a LCAL instruction is executed, the remaining program instructions on the same rung may not be executed upon
return, if input conditions are changed by the subroutine. After the LRET instruction of a subroutine, program execution
begins with the instruction following the LCAL instruction, depending on current input condition.

When instructions following a LCAL instruction must be executed after the subroutine is called, make sure the subroutine
does not change input conditions unfavorably. In addition, include subsequent instructions in a new ladder line, separated
from the LCAL instruction.

Example: LCAL and LRET

The following example demonstrates a program to call three different portions of program depending on the input. When
the subroutine is complete, program execution returns to the instruction following the LCAL instruction.

I0

LCAL

S1

0

REP

S1 –

D0

D1 –

D1

MOV(W)

REP

S1 –

D20

D1 –

D21

MOV(W)

Correct

I0

LCAL

S1

0

REP

S1 –

D0

D1 –

D1

MOV(W)

REP

S1 –

D20

D1 –

D21

MOV(W)

Incorrect

Separate the ladder line for each LCAL instruction.

I0 status may be changed by the subroutine upon return.

M0

S

M0

S

I0

When input I0 is on, program execution jumps to label 0.

When input I1 is on, program execution jumps to label 1.

When input I2 is on, program execution jumps to label 2.

M8121 is the 1-sec clock special internal relay.

When jump occurs to label 0, output Q0 oscillates in 1-sec increments.

Program execution returns to the address of input I1.

M8122 is the 100-ms clock special internal relay.

When jump occurs to label 1, output Q1 oscillates in 100-ms increments.

Program execution returns to the address of input I2.

M8123 is the 10-ms clock special internal relay.

When jump occurs to label 2, output Q2 oscillates in 10-ms increments.

Program execution returns to the address of END.

I0

LCAL

S1

0

END

I1

LCAL

S1

1

I2

LCAL

S1

2

M8121

LRET

M8122

LRET

M8123

LRET

Q0

Q1

Q2

LABEL
0

LABEL
1

LABEL
2

Advertising