
PIC16F627A/628A/648A
DS40044G-page 128
2009 Microchip Technology Inc.
RRF
Rotate Right f through Carry
Syntax:
[ label ] RRF f,d
Operands:
0
≤ f ≤ 127
d
∈ [0,1]
Operation:
See description below
Status Affected:
C
Encoding:
00
1100
dfff
ffff
Description:
The contents of register ‘f’ are
rotated one bit to the right
through the Carry Flag. If ‘d’ is
‘0’, the result is placed in the W
register. If ‘d’ is ‘1’, the result is
placed back in register ‘f’.
Words:
1
Cycles:
1
Example
RRF
REG1, 0
Before Instruction
REG1 = 1110 0110
C
=0
After Instruction
REG1 = 1110 0110
W
= 0111 0011
C
=0
SLEEP
Syntax:
[ label ] SLEEP
Operands:
None
Operation:
00h
→ WDT,
0
→ WDT prescaler,
1
→ TO,
0
→ PD
Status Affected:
TO, PD
Encoding:
00
0000
0110
0011
Description:
The power-down Status bit, PD
is cleared. Time out Status bit,
TO is set. Watchdog Timer and
its prescaler are cleared.
The processor is put into Sleep
mode with the oscillator
for more details.
Words:
1
Cycles:
1
Example:
SLEEP
REGISTER F
C
SUBLW
Subtract W from Literal
Syntax:
[ label ]SUBLW k
Operands:
0
≤ k ≤ 255
Operation:
k - (W)
→ (W)
Status
Affected:
C, DC, Z
Encoding:
11
110x
kkkk
Description:
The W register is subtracted (2’s
complement method) from the eight-
bit literal ‘k’. The result is placed in
the W register.
Words:
1
Cycles:
1
Example 1:
SUBLW
0x02
Before Instruction
W= 1
C= ?
After Instruction
W= 1
C= 1; result is positive
Example 2:
Before Instruction
W= 2
C= ?
After Instruction
W= 0
C= 1; result is zero
Example 3:
Before Instruction
W= 3
C= ?
After Instruction
W= 0xFF
C = 0; result is negative