# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# PIC24FJ64GA004 - Programmers Reference Manual

- 1
- 2
…
- 128
- 129
- 130
- 131
- 132
…
- 501
- 502

16-bit MCU and DSC Programmer’s Reference Manual
DS70157F-page 130 © 2005-2011 Microchip Technology Inc.
BRA C
Branch if Carry
Implemented in: PIC24F PIC24H PIC24E dsPIC30F dsPIC33F dsPIC33E
X X X X X X
Syntax: {label:} BRA C, Expr
Operands: Expr may be a label, absolute address or expression.
Expr is resolved by the linker to a Slit16, where Slit16 ∈ [-32768 ... +32767].
Operation: Condition = C
If (Condition)
(PC + 2) + 2 * Slit16 → PC
NOP → Instruction Register
Status Affected: None
Encoding: 0011 0001 nnnn nnnn nnnn nnnn
Description: If the Carry flag bit is ‘1’, then the program will branch relative to the next PC.
The offset of the branch is the two’s complement number ‘2 * Slit16’, which
supports branches up to 32K instructions forward or backward. The Slit16
value is resolved by the linker from the supplied label, absolute address or
expression.
If the branch is taken, the new address will be (PC + 2) + 2 * Slit16, since the
PC will have incremented to fetch the next instruction. The instruction then
becomes a two-cycle instruction, with a NOP executed in the second cycle.
The ‘n’ bits are a 16-bit signed literal that specify the offset from (PC + 2) in
instruction words.
Words: 1
Cycles: 1 (2 if branch taken) – PIC24F, PIC24H, dsPIC30F, dsPIC33F
1 (4 if branch taken) – PIC24E, dsPIC33E
Example 1:
002000 HERE: BRA C, CARRY
002002 NO_C: . . .
002004 . . .
002006 GOTO THERE
002008 CARRY: . . .
00200A . . .
00200C THERE: . . .
00200E . . .
; If C is set, branch to CARRY
; Otherwise... continue
Before
Instruction
After
Instruction
PC 00 2000 PC 00 2008
SR 0001 (C = 1) SR 0001 (C = 1)

- 1
- 2
…
- 128
- 129
- 130
- 131
- 132
…
- 501
- 502