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:
-
nd indica che l' istruzione non č disponibile per
quel core
-
- indica che
nessun flag viene modificato da quell' istruzione
-
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.
-
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
-
non sono riportate le istruzioni del set esteso del
core a 16 bit.
|