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.
|