Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori PIC. Quinta puntata - 7

Corso di programmazione per microcontrollori PIC


Le due istruzioni di Rotate Left through Carry (RLF) e Rotate Right through Carry (RRF) eseguono la rotazione dei registri di indirizzo f a sinistra o a destra, ponendo il bit che esce dal registro nel Carry e ponendo nel bit rimasto per così dire libero il valore del precedente del Carry (ricordiamo che il Carry è uno dei bit del registro STATUS, che viene posto a 1 quando si verifica un riporto).

Il significato di d è uguale alle altre istruzioni (un ciclo macchina). Rotate Left:

Rotate Right:


Poniamo ad esempio di avere il registro COUNT che contiene il numero 11100110 e che il Carry contenga 0. Se eseguiamo l'istruzione RLF REG1 il registro COUNT conterrà il numero binario 11001100, in quanto ruotato di un bit a sinistra, il Carry conterrà , dopo l'istruzione, 1 in quanto il bit all'estrema sinistra viene posto nel Carry, ed il bit all'estrema destra contiene invece 0, cioè il valore che aveva il Carry prima dell'esecuzione dell'istruzione. L'istruzione RRF REG1 partendo dalla stessa situazione di prima, vedrà invece il registro COUNT contenere il binario 01110011, mentre il Carry verrà posto a 0.



SUBWF f, d
Questa istruzione esegue la sottrazione tra il registro W ed il registro di indirizzo f, ponendo il risultato in f od in W a seconda del valore di d (un ciclo macchina).



SWAPF f, d
L'istruzione SWAPF serve per scambiare fra di loro i quattro bit più pesanti coi quattro meno pesanti di un registro di indirizzo f (un ciclo macchina).

Se ad esempio il registro COUNT contiene il numero binario 01101010, eseguendo l'istruzione SWAPF COUNT,1 otterremo che il registro COUNT contiene il numero binario 10100110.


ISTRUZIONI BIT ORIENTED


Sono 4 istruzioni, che permettono di andare a modificare o testare il valore di un bit di un registro.



BCF f, b
Con questa istruzione si va ad azzerare (Clear) un bit di un registro. L'indirizzo del registro si trova come al solito in f, mentre b, che può assumere un valore fra 0 e 7, rappresenta il bit da azzerare (un ciclo macchina). Poniamo ad esempio che il registro COUNT contenga il numero binario 01110101. L'istruzione BCF COUN T,5 otterrà che, dopo l'esecuzione, il registro COUNT varrà 01010101, in quanto viene posto a zero il bit D5, che rappresenta il sesto bit partendo da destra, cioè dal bit meno significativo.



BSF f, b Questa istruzione lavora esattamente come la precedente mahe anziché porre il bit a 0, lo pone a 1 (Set). Necessita di un ciclo macchina. Con lo stesso valore di COUNT, cioè 01110101, dopo l'istruzione BSF COUNT,3 il registro COUNT varrà 01111101.


BTFSS f, b: Queste due istruzioni sono particolarmente importanti, in quanto vanno a testare il valore di un bit, identificato da b, nel registro di indirizzo f e a seconda del valore di questo eseguono o meno la successiva istruzione. In particolare, con listruzione BTFSC si ha che se il valore del bit è 1, viene normalmente eseguita l'istruzione successiva, mentre se è 0, l'istruzione immediatamente successiva viene saltata, per eseguire quindi l'istruzione seguente (BTFSC sta per Bit Test File, Skip if Clear, cioè testa il bit del registro e se trova che è uguale a zero, salta l'istruzione successiva). L'istruzione BTFSS lavora in modo simile, solo che l'istruzione immediatamente successiva viene saltata se il valore del bit è 1 (uno o due cicli macchina).



ISTRUZIONI SPECIALI


Oltre alle istruzioni viste finora, esistono due istruzioni che sono specifiche per alcuni PIC della serie 16. Se si desidera scrivere un programma che sia compatibile con eventuali altri micro della famiglia, di solito si consiglia di non utilizzare tali istruzioni. Se tuttavia si sta scrivendo del codice che andrà utilizzato sempre e solo su un micro specifico (ad esempio il 16C84), queste due istruzioni possono essere utilizzate normalmente. Vediamo quali sono:



OPTION Questa istruzione serve per trasferire il contenuto del registro W nel registro OPTION che, come abbiamo già visto, è un registro speciale per la configurazione del timer e del prescaler (un ciclo macchina).



TRIS f L'istruzione TRIS serve per trasferire il contenuto del registro W in uno dei registri TRIS che, lo ricordiamo, sono i registri che permettono di configurare le porte del micro come ingressi o come uscite. Il valore di f può assumere soltanto i valori 5, 6 o 7, per accedere ai tre registri delle porte A, B e C nel caso queste siano tutte e tre presenti (un ciclo macchina). Nell'esempio del nostro programma, fra le istruzioni di inizializzazione vi erano le seguenti due istruzioni:


MOVLW 00 ;Poni in W il numero 0 TRIS PORT_B ;Porta B configurata come uscita che vengono utilizzate per inizializzare la porta B del micro come uscite (ricordiamo infatti che uno zero nel registro configura il corrispondente bit della porta come uscita, mentre un 1 lo configura come ingresso).

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 31 utenti e 78 visitatori collegati.

Ultimi Commenti