ELEMANIA
PIC16F690 - Istruzioni di trasferimento

Esamineremo ora in maggiore dettaglio le istruzioni del PIC, partendo dal gruppo di istruzioni che consente di trasferire dati o di modificare singoli bit nei registri del microcontrollore. Questo gruppo di istruzioni viene generalmente denominato istruzioni di trasferimento dati.

BCF e BSF

Queste istruzioni permettono di azzerare (BCF) o di settare a uno (BSF) un bit di un registro. Per esempio:

BSF 03,5

mette a uno il bit numero 5 del registro di indirizzo 03.

Un uso frequente di queste istruzioni è la selezione di un banco di memoria, agendo sui bit 5 (RP0) e 6 (RP1) dello Status Register, come negli esempi seguenti:

         BCF STATUS,RP0 ; Seleziona il banco zero
         BCF STATUS,RP1
         .......                 ; seguono istruzioni che fanno riferimento a registri del banco 0

         BSF STATUS,RP0 ; Seleziona il banco uno
         BCF STATUS,RP1
         .......                 ; seguono istruzioni che fanno riferimento a registri del banco 1

         BCF STATUS,RP0 ; Seleziona il banco due
         BSF STATUS,RP1
         .......                 ; seguono istruzioni che fanno riferimento a registri del banco 2

         BSF STATUS,RP0 ; Seleziona il banco tre
         BSF STATUS,RP1
         .......                 ; seguono istruzioni che fanno riferimento a registri del banco 3

Tuttavia normalmente risulta più comodo selezionare i banchi di memoria con la direttiva BANKSEL, la quale viene sostituita dall'assemblatore con le istruzioni BCF e BSF opportune.

 

MOVLW (Move Literal Value Into W)

Questa istruzione carica il valore di una costante numerica nel registro W. La sintassi di uso è molto semplice. Per esempio

MOVLW 10

carica nel registro W il valore esadecimale 10 (cioè il valore decimale 16).

 

MOVF 

Questa istruzione può essere usata per copiare un registro in W o in se stesso. Esempio

MOVF 1A, W

copia il registro di indirizzo 1A nel registro W.

Esiste anche un secondo uso di questa funzione ed è il seguente:

MOVF 1A, F

In pratica questa istruzione sposta il contenuto del registro 1A nel registro stesso (come indicato dalla costante F). Questa operazione può sembrare piuttosto inutile, ma invece ha lo scopo di settare lo Zero Status Bit dello Status Register in base al contenuto del registro indicato (1A nel nostro caso), senza modificare il registro stesso. In altre parole questa istruzione fornisce un semplice modo per verificare se il contenuto di un dato registro è zero oppure no.

 

MOVWF (Move The Contents Of W Into The Register Address That Follows)

Questa istruzione copia il contenuto del registro W in un secondo registro che viene specificato come operando fornendone l'indirizzo nel seguente modo:

MOVWF 0B

La precedente copia W nel registro di indirizzo 0B.

Si osservi inoltre che non esistono istruzioni che consentono il trasferimento diretto di un registro in un altro o l'assegnazione di un valore costante direttamente a un registro (diverso da W). In tutte queste operazioni è necessario passare sempre attraverso il registro W. Per esempio:

         MOVLW d'255' ; scrive in W un valore pari a 255 decimale (8 bit a 1)

         BANKSEL ANSEL ; seleziona il banco del registro ANSEL

         MOVWF ANSEL  ; copia W in ANSEL

 

CLRW e CLRF 

L'istruzione CLRW (Clear Working Register) serve per azzerare il contenuto del registro W. Il suo uso è estremamente semplice:

CLRW

E' equivalente a

MOVLW 0

solo che CLRW modifica il contenuto del bit Z dello status register, mentre la MOVLW no.

L'istruzione CLRF permette di azzerare un qualsiasi registro. Esempio:

CLRF 1A

SWAPF

Effettua lo scambio (SWAP) fra i 4 bit più significativi e i 4 bit meno significativi (detti nibble) di un registro:

SWAPF 2B, F
 SWAPF 2B, W

Nel primo caso il risultato dello scambio viene rimesso nel registro stesso, mentre nel secondo caso il risultato viene salvato nel registro W.

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it