This is a list of instructions usefull to program dspic.
| Instruction | Description | Operation | Flag | CLK | * |
|---|---|---|---|---|---|
| Data Transfer Instructions | |||||
| MOVLW k | Move constant to W | k -> w | 1 | ||
| MOVWF f | Move W to f | W -> f | 1 | ||
| MOVF f,d | Move f to d | f -> d | Z | 1 | 1, 2 |
| CLRW | Clear W | 0 -> W | Z | 1 | |
| CLRF f | Clear f | 0 -> f | Z | 1 | 2 |
| SWAPF f,d | Swap nibbles in f | f(7:4),(3:0) -> f(3:0),(7:4) | 1 | 1, 2 | |
| Arithmetic-logic Instructions | |||||
| ADDLW k | Add W and constant | W+k -> W | C, DC, Z | 1 | |
| ADDWF f,d | Add W and f | W+f -> d | C, DC ,Z | 1 | 1, 2 |
| SUBLW k | Subtract W from constant | k-W -> W | C, DC, Z | 1 | |
| SUBWF f,d | Subtract W from f | f-W -> d | C, DC, Z | 1 | 1, 2 |
| ANDLW k | Logical AND with W with constant | W AND k -> W | Z | 1 | |
| ANDWF f,d | Logical AND with W with f | W AND f -> d | Z | 1 | 1, 2 |
| ANDWF f,d | Logical AND with W with f | W AND f -> d | Z | 1 | 1, 2 |
| IORLW k | Logical OR with W with constant | W OR k -> W | Z | 1 | |
| IORWF f,d | Logical OR with W with f | W OR f -> d | Z | 1 | 1, 2 |
| XORLW k | Logical exclusive OR with W with constant | W XOR k -> W | Z | 1 | 1, 2 |
| XORWF f,d | Logical exclusive OR with W with f | W XOR f -> d | Z | 1 | |
| INCF f,d | Increment f by 1 | f+1 -> f | Z | 1 | 1, 2 |
| DECF f,d | Decrement f by 1 | f-1 -> f | Z | 1 | 1, 2 |
| RLF f,d | Rotate left f through CARRY bit | C | 1 | 1, 2 | |
| RRF f,d | Rotate right f through CARRY bit | C | 1 | 1, 2 | |
| COMF f,d | Complement f | f -> d | Z | 1 | 1, 2 |
| Bit-oriented Instructions | |||||
| BCF f,b | Clear bit b in f | 0 -> f(b) | 1 | 1,2 | |
| BSF f,b | Set bit b in f | 1 -> f(b) | 1 | 1,2 | |
| Program Control Instructions | |||||
| BTFSC f,b | Test bit b of f. Skip the following instruction if clear. | Skip if f(b) = 0 | 1 (2) | 3 | |
| BTFSS f,b | Test bit b of f. Skip the following instruction if set. | Skip if f(b) = 1 | 1 (2) | 3 | |
| DECFSZ f,d | Decrement f. Skip the following instruction if clear. | f-1 -> d skip if Z = 1 | 1 (2) | 1, 2, 3 | |
| INCFSZ f,d | Increment f. Skip the following instruction if set. | f+1 -> d skip if Z = 0 | 1 (2) | 1, 2, 3 | |
| GOTO k | Go to address | k -> PC | 2 | ||
| CALL k | Call subroutine | PC -> TOS, k -> PC | 2 | ||
| RETURN | Return from subroutine | TOS -> PC | 2 | ||
| RETLW k | Return with constant in W | k -> W, TOS -> PC | 2 | ||
| RETFIE | Return from interrupt | TOS -> PC, 1 -> GIE | 2 | ||
| Other instructions | |||||
| NOP | No operation | TOS -> PC, 1 -> GIE | 1 | ||
| CLRWDT | Clear watchdog timer | 0 -> WDT, 1 -> TO, 1 -> PD | TO, PD | 1 | |
| SLEEP | Go into sleep mode | 0 -> WDT, 1 -> TO, 0 -> PD | TO, PD | 1 | |
| Instruction | Description | Equivalent Instruction | Status Affected | |
|---|---|---|---|---|
| ADDCF | f,d | Add with carry | BTFSC INCF |
STATUS,C |
| ADDDCF | f,d | Add with Digit Carry | BTFSC INCF |
STATUS,DC |
| B | k | Branch | GOTO | |
| BC | k | Branch on Carry | BTFSC GOTO |
STATUS,C |
| BDC | k | Branch on Digit Carry | BTFSC GOTO |
STATUS,DC |
| BNC | k | Branch on No Carry | BTFSS GOTO |
STATUS,C |
| BNDC | k | Branch on No Digit Carry | BTFSS GOTO |
STATUS,DC |
| BNZ | k | Branch on No Zero | BTFSS GOTO |
STATUS,Z |
| BZ | k | Branch on Zero | BTFSC GOTO |
STATUS,Z |
| CLRC | Clear Carry | BCF | STATUS,C | |
| CLRDC | Clear Digit Carry | BCF | STATUS,DC | |
| CLRZ | Clear Zero | BCF | STATUS,Z | |
| MOVFW | f | Move File to W | MOVF | |
| SETC | f | Set Carry | BSF | STATUS,C |
| SETDC | Set Digit Carry | BSF | STATUS,DC | |
| SETZ | Set Zero | BSF | STATUS,Z | |
| SKPC | Skip on Carry | BTFSS | STATUS,C | |
| SKPDC | Skip on Digit Carry | BTFSS | STATUS,DC | |
| SKPNC | Skip on No Carry | BTFSC | STATUS,Z | |
| SKPNDC | Skip on No Digit Carry | BTFSC | STATUS,DC | |
| SKPNZ | Skip on Non Zero | BTFSC | STATUS,Z | |
| SKPZ | Skip on Zero | BTFSS | STATUS,Z | |
| SUBCF | f, d | Subtract Carry from File | BTFSC DECF |
STATUS,C |
| SUBDCF | f, d | Subtract Digit Carry from File | BTFSC DECF |
STATUS,DC |
| TSTF | f | Test File | MOVF |
Those came from http://www.mikroe.com/chapters/view/10/chapter-9-instruction-set/
