Tutorials - PIC18

 

Il Set di istruzioni dei PIC18

 


BYTE-ORIENTED OPERATIONS

Svariate aggiunte anche nell' area delle istruzioni di trattamento dei byte, con una notevole aggiunta di possibilità utili. 

In particolare :

  • tre istruzioni di comparazione diretta tra il registro W e un altro registro f
  • due istruzioni di skip a seguito di incremento e decremento che completano quelle già presenti nel set 16F, rendendo più agevole la gestione dei loop in cui si decrementa o incrementa un contatore
  • una comoda istruzione di move tra registro e registro (MOVFF), che mancava al set 16F
  • le istruzioni di rotate sono state aggiornate con due istruzioni che interessano il Carry e due no. Attenzione che lo mnemonico del set 16F  RLF/RRF è diventato RLCF/RRCF , ovvero comprendente il Carry, mentre RLNCF/RRNCF sono rate che non comprendono il Carry
  • due istruzioni aritmetiche, una di moltiplicazione a 8 bit tra W e un altro registro ed una di sottrazione con Borrow
  • SWAPF è sostituita con TSTFSZ

La sintassi di tutte è modificata dall' aggiunta del modo a nelle opzioni dell' oggetto, mentre gli mnemonici vecchi sono ancora in uso.

Mnemonici
e
 Operandi

Descrizione Cicli 16-Bit Instruction Word

Status
Affected

Note
BYTE-ORIENTED OPERATIONS
ADDWF   f,d,a Add WREG and f 1 0010 01da ffff ffff C,DC, Z,
OV, N
1,2
ADDWFC  f,d,a Add WREG and Carry bit to f 1 0010 00da ffff ffff C,DC, Z,
OV, N
1,2
ANDWF   f,d,a AND WREG with f 1 0001 01da ffff ffff Z,N 1,2
CLRF    f,d,a Clear f 1 0110 101a ffff ffff Z 2
COMF    f,d,a Complement f 1 (2/3) 0110 11da ffff ffff Z,N 1,2
CPFSEQ f,a Compare f with WREG, Skip = 1 (2/3) 0110 001a ffff ffff - 4
CPFSGT f,a Compare f with WREG, Skip > 1 (2/3) 0110 010a ffff ffff - 4
CPFSLT f,a Compare f with WREG, Skip < 1 (2/3) 0110 000a ffff ffff - 1,2
DECF    f,d,a Decrement f 1 0000 01da ffff ffff C,DC,Z,
OV, N
all
DECFSZ  f,d,a Decrement f, Skip if 0 1 (2/3) 0010 11da ffff ffff - all
DCFSNZ f,d,a Decrement f, Skip if Not 0 1 (2/3) 0100 11da ffff ffff - 1,2
INCF   f,d,a Increment f 1 0010 10da ffff ffff C,DC, Z,
OV, N
all
INCFSZ f,d,a Increment f, Skip if 0 1 (2/3) 0011 11da ffff ffff - 4
INFSNZ f,d,a Increment f, Skip if Not 0 1 (2/3) 0100 10da ffff ffff - 1,2
IORWF  f,d,a Inclusive OR WREG with f 1 0001 00da ffff ffff Z,N 1,2
MOVF   f,d,a Move f 1 0101 00da ffff ffff Z,N 1
MOVFF  fs,fd

Move fs (source) to 1st word
     fd (dest.) 2nd word

2 1100 ffff ffff ffff
1111 ffff ffff ffff
-  
MOVWF  f,a Move WREG to f 1 0110 ffff ffff ffff -  
MULWF  f,a Multiply WREG with f 1 0000 111a ffff ffff - 1,2
NEGF   f,a Negate f 1 0110 110a ffff ffff C,DC, Z,
OV, N
 
RLCF   f,d,a Rotate Left f through Carry 1 0011 01da ffff ffff C,Z,N 1,2
RLNCF  f,d,a Rotate Left f (No Carry) 1 0100 01da ffff ffff  Z,N  
RRCF   f,d,a Rotate Right f through Carry 1 0011 00da ffff ffff C,Z,N  
RRNCF  f,d,a Rotate Right f (No Carry) 1 0100 00da ffff ffff  Z,N  
SETF    f,d,a Set f 1 0110 100a ffff ffff -  
SUBFWB f,d,a

Subtract f from WREG w/ Borrow

1 0101 01da ffff ffff C,DC, Z,
OV, N
1,2
SUBWF   f,d,a Subtract WREG from f 1 0101 11da ffff ffff C,DC, Z,
OV, N
 
SUBWFB f,d,a Subtract WREG from f w/ Borrow 1 0011 10da ffff ffff - 4
TSTFSZ f,a Swap Nibbles in f 1 (2/3) 0110 011a ffff ffff - 1,2
XORWF  f,d,a EXclusive OR WREG with f 1 0001 10da ffff ffff Z,N  

Note 

  1. Quando un PORT viene modificato come funzione di se stesso (ad es. MOVF PORTB, 1, 0), il valore usato è quello presente sui pin del port.
    Ad esempio, se il data latch è =_ 1 per un pin configurato come ingresso ed è mantenuto a livello basso da un segnale
  2. Se l' istruzione è eseguita sul registro TMR0 (se applicabile con ‘d’ = 1), il presacler assegnato sarà azzerato.
  3. Se il Program Counter (PC) viene modificato o un test condizionale è vero, l' istruzione richiede 2 cicli, il secondo dei quali è eseguito come un NOP.
  4. Alcune istruzioni hanno la lunghezza di 2 word., la seconda delle quali sarà eseguita come un NOP se la prima parte dell' istruzione contiene tutte le informazioni necessarie nei primi 16 bit. Questo garantisce che tute le locazioni della mmeoria programma contengano una istruzione valida.

Va inoltre notato che l' istruzione CLRW non è più supportata.


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 08/11/10.