# Instruction Set of PIC microcontroller

## Syllabus

Instruction Set of PIC microcontroller

## Instruction Set of PIC microcontroller

Has 77 instructions

Earlier PIC family of microcontrollers have either 33 or 35 instructions

In PIC18F instruction set, all instructions are 16-bit word length except four instructions that are 32-bit length

PIC18 Instruction Set

- Includes 77 instructions
- 73 one word (16-bit) long
- long 4 two words (32-bit)

Divided into seven groups

- Move (Data Copy) and Load
- Arithmetic
- Logic
- Program Redirection (Branch/Jump)
- Bit Manipulation
- Table Read/Write
- Machine Control

### Arithmetic Instructions

ADDWFC F,d,a ;Add W to F with carry and save result in W or F

SUBLW 8-bit ;Subtract W from literal

SUBWF F,d,a ;Subtract W from F

SUBWFB F,d,a ;Subtract W from F with borrow

INCF F,d,a ;Increment F

DECF F,d,a ;Decrement F

NEGF F,a ;Take 2’s Complement of F

MULLW 8-bit ;Multiply 8-bit Literal and W Save result in PRODH:PRODL

MULWF F,a ;Multiply W and F ;Save result in PRODH:PRODL

DAW ;Decimal adjust W for BCD ;Addition

#### Points to Remember

Arithmetic instructions can perform operations on W and 8-bit literals and save the result in W

Arithmetic instructions can perform operations an W and F and save the result in W or F

In general, arithmetic instructions affect all flags

### Logic Instructions

COMF F,d,a ;Complement (NOT) F ;and save result in W or F

ANDLW 8-bit ;AND Literal with W

ANDWF F,d,a ;AND W with F and ;save result in W or F

IORLW 8-bit ;Inclusive OR Literal with W

IORWF F,d,a ;Inclusive OR W with F ;and save result in W or F IORWF 0x12,F;OR W with REG12H and ;save result in REG12H

XORLW 8-bit ;Exclusive OR Literal with W

XORWF F,d,a ;Exclusive OR W w/ F ;and save result in W or F

#### Points to Remember

Logic instructions can perform operations on W and 8-bit literals and save the result in W

Logic instructions can perform operations an W and F and save the result in W or F

In general, logic instructions affect only two flags: N and Z.

### Branch Instructions

BC n ;Branch if C flag = 1, + or – 64 Words ;to PC+2+2n BC 5 ;Branch on Carry to PC+2+10 BC Label ;Alternate: Branch to Label

BNC n ;Branch if C flag = 0

BZ n ;Branch if Z flag = 1

BNZ n ;Branch if Z flag = 0

BN n ;Branch if N flag = 1

BNN n ;Branch if N flag = 0

BOV n ;Branch if OV flag = 1

BNOV n ;Branch if OV flag = 0

BRA nn ;Branch always, + or – 512 Words

### Call and Return Instructions

RCALL nn ;Relative Call subroutine ;within + or – 512 words

CALL 20-bit,s ;Call subroutine ;If s = 1, save W, STATUS, BSR

RETURN s ;Return subroutine ;If s = 1, retrieve W, STATUS, BSR

RETFIE s ;Return from interrupt ;If s = 1, retrieve W, STATUS, BSR

#### Points to Remember

The instruction set includes eight conditional relative branch instructions based on four flags. The range is limited to 64 words.

The range of the unconditional relative branch is 512 words

If the operand is positive, the jump is forward and if negative, the jump is backward

### Bit Manipulation Instructions

BCF F,b,a ;Clear bit b of F, b = 0 to 7 BCF 0x2,7 ;Clear bit 7 of Reg2

BSF F,b,a ;Set bit b of F, b = 0 to 7

BTG F,b,a ;Toggle bit b of F, b = 0 to 7

RLCF F,d,a ;Rotate bits left in F through ;carry and save in W or F

RLNCF F,d,a ;Rotate bits left in F ;and save in W or F

RRCF F,d,a ;Rotate bits right in F through carry and save in W or F

RRNCF F,d,a ;Rotate bits right in F ;and save in W or F

#### Points to Remember

Any bit in a File (data) register can be set, reset, or complemented

There are two types of rotate instructions

8-bit and 9-bit (include C)

Bits of any File (data) register can be rotated to the right or left and saved in W or F

### Test and Skip Instructions

BTFSC F,b,a ;Test bit b in F and skip the ;next instruction if bit is cleared (bit=0) BTFSC 0x2,7 ;Test bit B7 in REG2 ;if B7=0 then skip next instruction

BTFSS F,b,a ;Test bit b in F and skip the ;next instruction if bit is set (bit=1)

CPFSEQ F,a ;Compare F with W, skip if F = W

CPFSGT F,a ;Compare F with W, skip if F > W

CPFSLT F,a ;Compare F with W, skip if F < W

TSTFSZ F,a ;Test F, skip if F = 0

### Increment/Decrement and Skip Next Instruction

DECFSZ F,d,a ;Decrement F and skip the ;next instruction if F = 0

DECFSNZ F,d,a ;Decrement F and skip the ;next instruction if F ≠ 0

INCFSZ F,d,a ;Increment F and skip the ;next instruction if F = 0

INCFSNZ F,d,a ;Increment F and skip the ;next instruction if F ≠ 0

## References

- WikiNote Foundation