Corso di programmazione per microcontrollori PIC. Quinta puntata – 3

microcontrollori PIC  corso programmazione

A volte si fa riferimento a tale rimando parlando di vettore di reset del micro. Dopo la ORG, inizia il programma vero e proprio, con diverse istruzioni. Quasi tutte le istruzioni sono costituite da due parti: l’istruzione vera e propria, che dice al micro il tipo di operazione che deve essere eseguita, e gli operandi, cioè in pratica ciò su cui l’istruzione deve andare ad agire. Consideriamo ad esempio la prima istruzione:


MOVLW 00 ;Poni in W il numero 0



Questa istruzione serve per trasferire un dato nel registro W, che abbiamo già visto essere un registro di lavoro particolare utilizzato da molte istruzioni. Ovviamente, occorre specificare il dato che deve essere posto in questo registro, e a questo provvede l’operando, nel nostro caso 00. Il risultato quindi di questa istruzione è quello di aver caricato il numero 00 nel registro W. Un’altra istruzione dello stesso tipo è, qualche riga più avanti,


la seguente:



MOVLW B 00000001



Di nuovo serve per caricare nel registro W un dato, ma questa volta il dato viene scritto come numero binario. Infatti se non viene specificato nulla, come nel caso della MOVLW 00, si intende che il dato è scritto in esadecimale (che è il modo standard di scrittura, e che può comunque essere reimpostato diversamente).

Se, per comodità , si vuole scrivere un numero in una base diversa dalla esadecimale, occorre utilizzare una notazione come quella vista. La B prima del numero fa sapere all’assemblatore che il numero che si sta scrivendo è espresso in notazione binaria. E’ possibile utilizzare anche numeri in base decimale od ottale, purché si utilizzino le lettere D od O prima del numero racchiuso tra virgolette. Prima di addentrarci nella descrizione dettagliata di tutte le istruzioni che il PIC 84 è in grado di eseguire, cerchiamo di capire come funziona il nostro programma per l’accensione e lo spegnimento alternativo dei led.

Normalmente, prima di scrivere la sequenza di istruzioni che compone un programma, si descrive il programma che il micro dovrà eseguire attraverso un diagramma di flusso,o flow chart, per esprimere il tipo di operazioni che il micro dovrà eseguire. Nel nostro caso, il diagramma di flusso potrebbe essere quello rappresentato a pagina 46: come si vede il micro, dopo aver eseguito una prima parte definita di inizializzazione, nella quale configura la porta B come porta di uscita (ad essa sono collegati i led), permane indefinitamente in un loop, un anello di istruzioni, nel quale alternativamente accende e spegne i due led; il programma sembrerebbe finito così.

Se però facessimo girare questo programma, ci accorgeremmo che in realtà i due led non si accendono alternativamente, ma li vedremmo entrambi sempre accesi. Questo perché non abbiamo tenuto conto della velocità con cui un microcontrollore esegue queste operazioni.


Senza entrare adesso nel merito del calcolo preciso, che affronteremo più avanti, si può però già intuire come se l’alternanza di acceso e spento viene effettuata migliaia di volte al secondo, il risultato sarà quello di vedere i led sempre accesi. Proprio per evitare ciò è necessario introdurre un qualcosa che rallenti il ciclo di esecuzione del programma, e a questo provvede una routine che abbiamo chiamato DELAY, cioè ritardo.

STAMPA     Tags:

Leave a Reply