PIC16F1xxx Instruction Set (ver 1.00)
NOTE: Microchip updates its tools regularly. This page is an older version that we have preserved for the convenience of those who are supporting existing designs based upon older versions of our tools. Please check www.microchip.com/developerhelp for the updated version of this page.
This applies to the PIC16F1xxx and PIC16LF1xxx families of PIC MCUs.
Byte Oriented Operations | ||||||
---|---|---|---|---|---|---|
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
ADDWF | f,d | Add W and f | 1 | 00 0111 dfff ffff | C, DC,Z | 2 |
ADDWFC | f,d | Add with Carry W and f | 1 | 11 1101 dfff ffff | C,DC,Z | 2 |
ANDWF | f,d | AND W with f | 1 | 00 0101 dfff ffff | Z | 2 |
ASRF | f,d | Arithmetic Right Shift | 1 | 11 0111 dfff ffff | C, Z | 2 |
LSLF | f,d | Logical Left Shift | 1 | 11 0101 dfff ffff | C, Z | 2 |
LSRF | f,d | Logical Right Shift | 1 | 11 0110 dfff ffff | C, Z | 2 |
CLRF | f | Clear f | 1 | 00 0001 1fff ffff | Z | 2 |
CLRW | Clear W | 1 | 00 0001 0000 00xx | Z | ||
COMF | f,d | Complement f | 1 | 00 1001 dfff ffff | Z | 2 |
DECF | f,d | Decrement f | 1 | 00 0011 dfff ffff | Z | 2 |
INCF | f,d | Increment f | 1 | 00 1010 dfff ffff | Z | 2 |
IORWF | f,d | Inclusive OR W with f | 1 | 00 0100 dfff ffff | Z | 2 |
MOVF | f,d | Move f | 1 | 00 1000 dfff ffff | Z | 2 |
MOVWF | f | Move W to f | 1 | 00 0000 1fff ffff | None | 2 |
RLF | f,d | Rotate left f through Carry | 1 | 00 1101 dfff ffff | C | 2 |
RRF | f,d | Rotate right f through Carry | 1 | 00 1100 dfff ffff | C | 2 |
SUBWF | f,d | Subtract with Borrow W from f | 1 | 11 1011 dfff ffff | C,DC,Z | 2 |
SUBWFB | f,d | Subtract W from f | 1 | 00 0010 dfff ffff | C,DC,Z | 2 |
SWAPF | f,d | Swap nibbles in f | 1 | 00 1110 dfff ffff | None | |
XORWF | f,d | Exclusive OR W with f | 1 | 00 0110 dfff ffff | Z | 2 |
Byte Oriented Skip Instructions | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
DECFSZ | f,d | Decrement f, Skip if 0 | 1(2) | 00 1011 dfff ffff | None | 1,2 |
INCFSZ | f,d | Increment f, Skip if 0 | 1(2) | 00 1111 dfff ffff | None | 1,2 |
Bit Oriented File Register Operations | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
BCF | f,b | Bit Clear f | 1 | 01 00bb bff ffff | None | 2 |
BSF | f,b | Bit Set f | 1 | 01 01bb bfff ffff | None | 2 |
Bit Oriented Skip Operations | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
BTFSC | f,b | Bit Test f, Skip if Clear | 1(2) | 01 10bb bfff ffff | None | 1,2 |
BTFSS | f,b | Bit Test f, Skip if Set | 1(2) | 01 11bb bfff ffff | None | 1,2 |
Literal Operations | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
ADDLW | k | Add literal and W | 1 | 11 1110 kkkk kkkk | C,DC,Z | |
ANDLW | k | AND literal with W | 1 | 11 1001 kkkk kkkk | Z | |
IORLW | k | Inclusive OR literal with W | 1 | 11 1000 kkkk kkkk | Z | |
MOVLB | k | Move Literal to BSR | 1 | 00 0000 001k kkkk | None | |
MOVLP | k | Move Literal to PCLATH | 1 | 11 0001 1kkk kkkk | None | |
MOVLW | k | Move literal to W | 1 | 11 0000 kkkk kkkk | None | |
SUBLW | k | Subtract W from Literal | 1 | 11 1100 kkkk kkkk | C,DC,Z | |
XORLW | k | Exclusive OR literal with W | 1 | 11 1010 kkkk kkkk | Z | |
Control Operations | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
BRA | k | Relative Branch | 2 | 11 001k kkkk kkkk | None | |
BRW | Relative Branch with W | 2 | 00 0000 0000 1011 | None | ||
CALL | k | Call Subroutine | 2 | 10 0kkk kkkk kkkk | None | |
CALLW | Call Subroutine with W | 2 | 00 0000 0000 1010 | None | ||
GOTO | k | Goto address | 2 | 10 1kkk kkkk kkkk | None | |
RETFIE | k | Return from interrupt | 2 | 00 0000 0000 1001 | None | |
RETLW | k | Return, place literal in W | 2 | 11 0100 kkkk kkkk | None | |
RETURN | k | Return from subroutine | 2 | 00 0000 0000 1000 | None | |
Inherent Operations | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
CLRWDT | Clear Watchdog Timer | 1 | 00 0000 0110 0100 | TO,PD | ||
NOP | No Operation | 1 | 00 0000 0000 0000 | None | ||
OPTION | Load OPTION register with W | 1 | 00 0000 0110 0010 | None | ||
RESET | Software device Reset | 1 | 00 0000 0000 0001 | None | ||
SLEEP | Go into standby mode | 1 | 00 0000 0110 0011 | TO, PD | ||
TRIS | f | Load TRIS register | 1 | 00 0000 0110 0fff | None | |
C-Compiler Optimized | ||||||
Mnemonic, Operands |
Description | Cycles | 14-bit Opcode MSb……LSb |
Status Affected |
Notes | |
ADDFSR | Add Literal to FSRn | 1 | 11 0001 0nkk kkkk | None | ||
MOVIW | Move Indirect FSRn to W | 1 | 00 0000 0001 0nnn | Z | 2 | |
MOVWI | Move W to Indirect FSRn | 1 | 00 0000 0001 1nnnn | Z | 2 |
Notes
- If the program counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP
- If this instruction addresses an INDF register AND the MSb of the corresponding FSR is set, the instruction requires one additional instruction cycle.