PIC16C71X
BTFSS
Bit Test f, Skip if Set
CALL
Call Subroutine
Syntax:
[label] BTFSS f,b
Syntax:
[ label ] CALL k
Operands:
0 ≤ f ≤ 127
0 ≤ b < 7
Operands:
Operation:
0 ≤ k ≤ 2047
(PC)+ 1→ TOS,
Operation:
skip if (f<b>) = 1
None
k → PC<10:0>,
(PCLATH<4:3>) → PC<12:11>
Status Affected:
Encoding:
Status Affected:
Encoding:
None
01
11bb
bfff
ffff
10
0kkk
kkkk
kkkk
If bit 'b' in register 'f' is '0' then the next
instruction is executed.
If bit 'b' is '1', then the next instruction is
discarded and a NOP is executed
instead, making this a 2TCY instruction.
Description:
Call Subroutine. First, return address
(PC+1) is pushed onto the stack. The
eleven bit immediate address is loaded
into PC bits <10:0>. The upper bits of
the PC are loaded from PCLATH.
CALLis a two cycle instruction.
Description:
Words:
1
Cycles:
1(2)
Words:
1
2
Q Cycle Activity:
Q1
Q2
Q3
Q4
Cycles:
Decode
Read
register 'f'
Process
data
NOP
Q Cycle Activity:
1st Cycle
Q1
Q2
Q3
Q4
Decode
Read
Process
data
Write to
PC
If Skip:
(2nd Cycle)
Q1
literal 'k',
Push PC
to Stack
Q2
Q3
Q4
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
2nd Cycle
Example
HERE
FALSE
TRUE
BTFSC FLAG,1
GOTO
Example
HERE
CALL THERE
PROCESS_CODE
Before Instruction
•
•
•
PC
= Address HERE
After Instruction
PC
= Address THERE
Before Instruction
TOS = Address HERE+1
PC
=
address HERE
After Instruction
if FLAG<1> = 0,
PC =
address FALSE
if FLAG<1> = 1,
PC =
address TRUE
1997 Microchip Technology Inc.
DS30272A-page 73