Il Set di istruzioni dei PIC18
|
Il Set di Istruzioni 18F
Il set di istruzioni dei PIC18F è decisamente più ampio e realmente
"ortogonale" se confrontato con quello dei mid-range.
Sono state aggiunte numerose istruzioni relative alle nuove possibilità ,
come la gestione di tabelle, l' indirizzamento indiretto e le operazioni sullo
stack. Ma sono state implementate anche numerose istruzioni di test su bit e
files e la moltiplicazione hardware.
Le tabelle seguenti riportano gli opcodes e le caratteristiche essenziali
delle istruzioni ; in rosso le istruzioni addizionali del set 18F rispetto al
set 16F.
BIT-ORIENTED OPERATIONS
Nell' area delle bit oriented, è stata aggiunta solo l' istruzione BTG
, che è un utile toggle di un bit in un file.
Va però rilevato che, se gli mnemonici sono uguali a quelli della famiglia
16F, la sintassi delle istruzioni è modificata dall' aggiunta del modo di
indirizzamento a nelle opzioni dell' oggetto.
Mnemonici
e
Operandi
|
Schema
operativo |
Cicli |
16-Bit
Instruction Word |
Flags
|
BIT-ORIENTED
OPERATIONS |
BCF f,b,a |
Bit Clear f |
1 |
1001 bbba ffff ffff |
- |
BSF f,b,a |
Bit Set f |
1 |
1000 bbba ffff ffff |
- |
BTFSC f,b,a |
Bit Test f, Skip if Clear |
1
(2/3) |
1011 bbba ffff ffff |
- |
BTFSS f,b,a |
Bit Test f, Skip if Set |
1
(2/3) |
1010 bbba ffff ffff |
- |
BTG f,b,a |
Bit Toggle f |
1 |
0111 bbba ffff ffff |
- |
CONTROL ORIENTED OPERATIONS
Qui c'è una maggiore ricchezza nelle operazioni di controllo :
- è stata aggiunto un completo set di branch condizionali alla situazione dei
flag dello STATUS, oltre ad un branch incondizionato, BRA.
- si trova poi una istruzione per il supporto alle operazioni aritmetiche (DAW)
e
- sono presenti due operatori per trattare il contenuto dello stack (POP e
PUSH).
- Inoltre è stata aggiunta una chiamata relativa (RCALL).
La sintassi di base delle istruzioni non è modificata rispetto alla famiglia
16F, così pure sono usati i vecchi mnemonici .
Va però notato che le istruzioni CALL e GOTO si sviluppano non su una, ma su
due word a 16 bit ciascuna, in modo da avere un campo di indirizzamento
diretto di 20 bit (FFFFFh, 1 Mword).
Mnemonici
e
Operandi
|
Schema
operativo |
Cicli |
16-Bit
Instruction Word |
Status
Affected
|
Note |
CONTROL
ORIENTED OPERATIONS |
BC
n |
Branch if Carry |
1
(2) |
1110 0010 nnnn nnnn |
- |
|
BN
n |
Branch if Negative |
1
(2) |
1110 0110 nnnn nnnn |
- |
|
BNC
n |
Branch if Not Carry |
1
(2) |
1110 0011 nnnn nnnn |
- |
|
BNN
n |
Branch if Not Negative |
1
(2) |
1110 0111 nnnn nnnn |
- |
|
BNOV n |
Branch if Not Overflow |
1
(2) |
1110 0101 nnnn nnnn |
- |
|
BNZ
n |
Branch if Not Zero |
1
(2) |
1110 0001 nnnn nnnn |
- |
|
BOV
n |
Branch if Overflow |
1
(2) |
1110 0100 nnnn nnnn |
- |
|
BRA
n |
Branch Unconditionally |
2 |
1110 0nnn nnnn nnnn |
- |
|
BZ
n |
Branch if Zero |
1
(2) |
1110 0000 nnnn nnnn |
- |
|
CALL n,s |
Call Subroutine
1st word
2nd word
|
2 |
1110 110s kkkk kkkk
1111 kkkk kkkk kkkk |
- |
|
CLRWDT |
Clear Watchdog Timer |
1 |
0000 0000 0000 0100 |
TO,PD |
|
DAW |
Decimal Adjust WREG |
1 |
0000 0000 0000 0111 |
C |
|
GOTO n |
Go to Address
1st word
2nd word
|
2 |
1110 1111 kkkk kkkk
1111 kkkk kkkk kkkk |
- |
|
NOP |
No Operation |
|
0000 0000 0000 0000 |
- |
|
NOP |
No Operation |
1 |
1111 xxxx xxxx xxxx |
- |
|
POP |
Pop Top of Return Stack (TOS) |
1 |
0000 0000 0000 0110 |
- |
|
PUSH |
Push Top of Return Stack (TOS) |
1 |
0000 0000 0000 0101 |
- |
|
RCALL
n |
Relative Call |
2 |
1101 1nnn nnnn nnnn |
- |
|
RESET |
Software Device Reset |
1 |
0000 0000 1111 1111 |
all |
|
RETFIE s |
Return from Interrupt Enable |
2 |
0000 0000 0001 000s |
GIE/GIEH
GIEL/PEIE
|
|
RETLW k |
Return with Literal in WREG |
2 |
0000 1100 kkkk kkkk |
- |
|
RETURN s |
Return from Subroutine |
2 |
0000 0000 0001 001s |
- |
|
SLEEP |
Go into Standby mode |
1 |
0000 0000 0000 0011 |
TO, PD |
|
|