Tutorials - PIC

 

PIC 8 bit - Opcodes


Le istruzioni dei PIC 8-bit

Nel gruppo dei PIC con dati a 8 bit sono disponibili 3 core diversi, con istruzioni codificate su 12, 14  e 16 bit
Ogni core dispone di un set differente, del quale fanno parte comunque un certo numero di istruzioni comuni.

A queste si aggiungono altre istruzioni e il loro numero cresce con la disponibilitą di bit di codifica, per cui si passa dai 33 opcodes per il core a 12 bit ai 75 del core a 16 bit.

Se pure gli opcodes hanno nomi uguali a paritą di azione, possono esistere alcune differenze nei flag di STATUS che sono modificati; nella tabella seguente ne č riportata una lista comparativa.  

 

Istruzione

Flag modificati

Opcode

Funzione

Core

12 bit 14 bit 16 bit
ADDLW (W + k) --> W nd C DC Z N OV C DC Z
ADDWF (W + f) --> dest C DC Z C DC Z N OV C DC Z
ADDWFC (W + f + C) --> dest nd nd N OV C DC Z
ANDLW W AND k --> W Z Z N Z
ANDWF W AND f --> dest Z Z N Z
BC salta a dest se C = 1 nd nd -
BCF 0 --> f - - -
BN salta a dest se N = 1 nd nd -
BNC salta a dest se C = 0 nd nd -
BNN salta a dest se N = 0 nd nd -
BNOV salta a dest se OV = 0 nd nd -
BNZ salta a dest se Z = 0 nd nd -
BRA salta a dest in ogni caso nd nd -
BSF 1 --> f - - -
BTFSC skip codice successivo se f = 0 - - -
BTFSS skip codice successivo se f = 1 - - -
BTG !f --> f nd nd -
BOV salta a dest se OV = 1 nd nd -
BZ salta a dest se Z = 1 nd nd -
CALL Call Subroutine - - -
CLRF 0x00 --> f Z Z Z
CLRW 0x00 --> W Z Z nd
CLRWDT 0x00 --> WDT TO PD TO PD TO PD
COMF !f --> dest Z Z N Z
CPFSEQ (f - W), skip se f = W nd nd -
CPFSGT (f - W), skip se f > W nd nd -
CPFSLT (f - W), skip se f < W nd nd -
DAW Decimal Adjust W nd nd C
DECF (f - 1) --> dest Z Z N OV C DC Z
DECFSZ (f - 1) --> dest skip if 0 - - -
DCFSNZ (f - 1) --> dest skip if not 0 nd nd -
GOTO Unconditional Branch - - -
INCF (f + 1) --> dest Z Z N OV C DC Z
INCFSZ (f + 1) --> dest skip if 0 - - -
INFSNZ (f + 1) --> dest skip if not 0 nd nd -
IORLW W OR k --> W Z Z N Z
IORWF W OR f --> dest Z Z N Z
LFSR k --> FSRf nd nd -
MOVF f --> dest Z Z N Z
MOVFF fs --> fd nd nd -
MOVLB k --> BSR<3:0> nd nd -
MOVLW k --> W - - -
MOVWF W --> f - - -
MULLW (W x k) --> PRODH:PRODL nd nd -
MULWF (W x f) --> PRODH:PRODL nd nd -
NEGF (!f + 1) --> f nd nd N OV C DC Z
NOP No operation - - -
POP TOS --> bit bucket nd nd -
PUSH PC+2 --> TOS nd nd -
RCALL Short Subroutine CALL nd nd -
RESET Istruzione Reset nd nd tutti
RETFIE Return from Interrupt  nd - GIE/GIEH PEIE/GIEL
RETLW k --> W,  TOS --> PC - - -
RETURN Return from Subroutine nd - -
RLCF f --> d; f<7> --> C; C --> d<0> nd nd N C Z
RLF C C nd
RLNCF f --> d; f<7> --> d<0>; nd nd N Z
RRCF f --> d; f<0> --> C; C --> d<7> nd nd N C Z 
RRF C C nd
RRNCF f --> d; f<0> --> d<7>; nd nd N Z
SETF 0xFF --> f nd nd -
SLEEP SLEEP Mode TO PD GPWUF TO PD TO PD
SUBFWB (W - f - C) --> dest nd nd N OV C DC Z
SUBLW (k - W) --> W nd C DC Z N OV C DC Z
SUBWF (f - W) --> dest C DC Z C DC Z N OV C DC Z
SUBWFB (f - W - C) --> dest nd nd N OV C DC Z
SWAPF f<3:0> --> dest<7:4>
f<7:4> --> dest<3:0>
- - -
TBLRD Table Read nd nd -
TBLWT Table Write nd nd -
TSTFSZ skip codice successivo se f = 0 nd nd -
XORLW W XOR k --> W Z Z N Z
XORWF W XOR f --> dest Z Z N Z

Note:

  1. nd  indica che l' istruzione non č disponibile per quel core

  2. -  indica che nessun flag viene modificato da quell' istruzione

  3. esistono alcuni processori che dispongono di set di istruzioni a 16 bit leggermente diversi es. 17Cxx e processori con core a 14 bit che hanno un set istruzioni esteso 16Fxxxx.

  4. non sono riportate le istruzioni OPTION e TRIS dei core a 12 e 14 bit, che sono da considerarsi obsolete e il cui uso č sconsigliato

  5. non sono riportate le istruzioni del set esteso del core a 16 bit.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 01/12/10.