Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori PIC. Quinta puntata - 5

Corso di programmazione per microcontrollori PIC


CALL k Questa istruzione serve per andare ad eseguire una subroutine e necessita di due cicli macchina. Facendo riferimento all'esempio del programma per accendere i due led, vi è una subroutine che inizia all'etichetta DELAY. Così, quando viene eseguita l'istruzione CALL DELAY, il micro carica nel program counter (il contatore di locazioni di memoria) l'indirizzo della label DELAY, facendo così proseguire il programma dalla etichetta DELAY. Al termine di ogni subroutine è necessario introdurre un'istruzione RETURN per far tornare il programma al punto in cui era stato abbandonato.

CLRWDT Questa istruzione, che come si vede non ha argomenti, serve per azzerare il Watch dog, in modo tale che non possa resettare il microcontrollore; viene processata in un ciclo macchina.

GOTO k Questa istruzione, in due cicli macchina, serve per far proseguire il programma ad un punto diverso. Se, ad esempio, si scrive la seguente istruzione:

....
GOTO SALTO
....
SALTO
.....
.....

Arrivati all'istruzione GOTO viene caricato nel Program Counter l'indirizzo della etichetta SALTO, costringendo così il programma a proseguire da quel punto. A prima vista potrebbe sembrare simile all'istruzione CALL, ma vi è una sostanziale differenza: la CALL prevede sempre, attraverso l'istruzione RETURN, il ritorno al punto in cui si è abbandonato il programma.

Nell'esempio del nostro programma, la routine DELAY serviva solo per introdurre un certo ritardo, ma effettuato il suo scopo, il programma doveva proseguire nel suo ciclo di alternanza di accensione e spegnimento. L'istruzione GOTO, invece, prevede un abbandono completo senza ritorno. Viene normalmente utilizzata insieme ad altre istruzioni per effettuare i cosiddetti salti condizionali. Cioè, alcune volte occorre far eseguire operazioni diverse a seconda del verificarsi o meno di un evento. Sempre riferendoci all'esempio precedente, nella routine DELAY si devono decrementare dei registri per ottenere il ritardo. Quando tale decremento ha azzerato completamente i registri, occorre quindi tornare al programma. Si deve cioè far seguire due strade diverse al programma a seconda che il decremento abbia prodotto risultato zero oppure no.

IORLW k Questa istruzione realizza una operazione di OR logico fra il registro W e k, ponendo come al solito il risultato in W; occorre 1 ciclo macchina.

MOVLW k Questa istruzione carica il registro W con il valore di k. Ovviamente, il valore di W precedente all'istruzione viene perso, L'istruzione viene processata in un ciclo macchina. Così, ad esempio, l'istruzione: MOVLW 14 Carica nel registro W il numero 14. Il contenuto precedente di W viene perso.

RETFIE Serve per effettuare il ritorno da una interrupt, occorrono due cicli macchina. Parleremo di questa istruzione analizzando dettagliatamente il modo in cui vengono gestiti via software gli interrupt.

RETLW k Questa istruzione è molto simile alla RETURN, e serve quindi per chiudere una subroutine e tornare al programma nel punto in cui era stato abbandonato; in aggiunta, questa istruzione carica nel registro W il valore di k, occorrono due cicli macchina.

RETURN Serve appunto per chiudere una subroutine, occorrono due cicli macchina.

SLEEP Pone il processore in modalità SLEEP, fermando l'oscillatore e bloccando quindi il flusso del programma. Come già visto, per uscire da tale situazione occorre un segnale del Watch Dog od un interrupt esterno, dura un ciclo macchina.

 

 

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

Ultimi Commenti