ELEMANIA
PIC16F690 - Istruzioni
Set istruzioni

Il set di istruzioni del PIC16F690 è composto da solo 35 istruzioni:

Istruzione Descrizione Operazione Flag CLK
Istruzioni di trasferimento dati
MOVLW k Carica la costante k in W k -> w 1
MOVWF f Carica W in f W -> f 1
MOVF f,d Carica f in W o in f (a seconda di d) f -> d Z 1
CLRW Resetta W 0 -> W Z 1
CLRF f Resetta f 0 -> f Z 1
SWAPF f,d Scambia i nibble (semi-byte) in f f(7:4),(3:0) -> f(3:0),(7:4) 1
Istruzioni aritmetico-logiche
ADDLW k Somma la costante k a W W+k -> W C, DC, Z 1
ADDWF f,d Somma W e f W+f -> d C, DC ,Z 1
SUBLW k Sottrae k da W k-W -> W C, DC, Z 1
SUBWF f,d Sottrae W da f f-W -> d C, DC, Z 1
ANDLW k AND logico fra W e la costante k W AND k -> W Z 1
ANDWF f,d AND logico fra W e f W AND f -> d Z 1
IORLW k OR logico fra W e la costante k W OR k -> W Z 1
IORWF f,d OR logico fra W e f W OR f -> d Z 1
XORLW k OR-esclusivo logico fra W e k W XOR k -> W Z 1
XORWF f,d OR-esclusivo logico fra W e f W XOR f -> d Z 1
INCF f,d Incrementa f di 1 f+1 -> f Z 1
DECF f,d Decrementa f di 1 f-1 -> f Z 1
RLF f,d Rotazione a sinistra di f con il bit CARRY C 1
RRF f,d Rotazione a destra di f con il bit CARRY C 1
COMF f,d Complementa f f -> d Z 1
Istruzioni orientate ai bit
BCF f,b Resetta il bit b di f 0 -> f(b) 1
BSF f,b Setta il bit b di f 1 -> f(b) 1
Istruzioni di controllo di programma
BTFSC f,b Testa il bit b di f. Salta l'istruzione successiva se vale zero. Skip if f(b) = 0 1 (2)
BTFSS f,b Testa il bit b di f. Salta l'istruzione successiva se vale uno. Skip if f(b) = 1 1 (2)
DECFSZ f,d Decrementa f. Salta l'istruzione successiva se vale Z=1 (cioè se f si azzera). f-1 -> d skip if Z = 1 1 (2)
INCFSZ f,d Incrementa f. Salta l'istruzione successiva se vale Z=0. f+1 -> d skip if Z = 0 1 (2)
GOTO k Salta all'indirizzo k k -> PC 2
CALL k Chiamata a subroutine all'indirizzo k PC -> TOS, k -> PC 2
RETURN Return da subroutine TOS -> PC 2
RETLW k Return con constante k salvata in W k -> W, TOS -> PC 2
RETFIE Return da interrupt TOS -> PC, 1 -> GIE 2
Altre istruzioni
NOP No operation TOS -> PC, 1 -> GIE 1
CLRWDT Resetta il timer watchdog 0 -> WDT, 1 -> TO, 1 -> PD TO, PD 1
SLEEP Manda il PIC in modo sleep 0 -> WDT, 1 -> TO, 0 -> PD TO, PD 1

Convenzione nei nomi delle istruzioni

Le istruzioni sono composte dallo mnemonico (il nome dell'istruzione stessa) e da uno o due operandi (a volte nessuno). Esempi:

SLEEP                 ; istruzione senza operandi
GOTO etichetta    ; istruzione con un operando
BCF STATUS,RP0  ; istruzione con due operandi

Gli operandi sono indicati nella tabella precedente in quattro modi diversi che riassumiamo qui sotto. Negli esempi seguenti facciamo uso sia di valori numerici che delle costanti predefinite nel file include (quest'ultima modalità è in generale preferibile in quanto produce codice più leggibile ed è più semplice da memorizzare):

All'inizio i nomi delle istruzioni del PIC sono difficili da memorizzare. Per questa ragione conviene abituarsi subito alla logica delle convenzioni di nomi utilizzate:

 

Formato delle istruzioni (in binario)

Tutte le istruzioni sono lunghe 14 bit, comprensivi di codice operativo e di operandi. I 14 bit sono diversamente suddivisi all'interno dell'istruzione a seconda della tipologia dell'istruzione stessa. I formati possibili si possono raggruppare in quattro diverse tipologie:

  1. Byte-oriented file register operations:
  2. Bit-oriented file register operations:
  3. Literal and control operations:
  4. GOTO and CALL instructions:

Per esempio l'istruzione BCF (gruppo 2)

BCF f, b

azzera il bit b del registro f. Il numero b del bit varia da 0 a 7 ed è codificato con 3 bit. Il registro invece può valere da 0 a 127 ed è codificato con 7 bit:

Facciamo un altro esempio. L'istruzione GOTO di salto incondizionato (gruppo 4)

GOTO k

codifica l'indirizzo k con 11 bit (da 0 a 2047) nel seguente modo:

Come ultimo esempio consideriamo l'istruzione ADDWF (gruppo 1)

ADDWF f,d

Questa istruzione somma il contenuto del registro W col contenuto della locazione di memoria f e memorizza il risultato della somma in W (d=0) oppure in f (d=1). Il formato dell'istruzione è il seguente:

 

Tempo di esecuzione delle istruzioni

Nell'elenco delle istruzioni la colonna CLK riporta il numero di cicli di istruzione (instruction cycle) necessari per eseguire ogni istruzione. Nel PIC un ciclo di istruzione corrisponde a quattro periodi di clock. La maggior parte delle istruzioni ha un tempo di esecuzione di un singolo ciclo.

Facciamo un esempio per chiarire il concetto. Supponiamo un clock interno standard a 4 MHz. In questo caso il periodo di clock è dato da:

Tclk = 1/fclk = 1/4M = 250 ns

Come si è detto la maggior parte delle istruzioni impiega un ciclo per essere eseguita. In questo caso il tempo di esecuzione (cioè la durata di un ciclo di istruzione) è dato da:

Texe = 4 * Tclk = 4 * 250 ns = 1 µs

Fanno eccezione alla regola precedente le istruzioni la cui esecuzione può modificare il Program Counter (istruzioni di salto). In questi casi il tempo di esecuzione richiede un ciclo di istruzione se il salto non viene eseguito e 2 cicli di istruzione (il doppio del tempo) se il salto viene eseguito.

Conoscere il tempo impiegato per l'esecuzione di ciascuna istruzione è particolarmente importante quando si vuole realizzare un ciclo di ritardo.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it