Corso di programmazione per microcontrollori PIC. Quinta puntata – 4

microcontrollori PIC programmazione

Una routine è una parte di programma che può essere richiamata ogni qualvolta sia necessaria. Nel nostro programma, tale routine viene richiamata ogni volta che viene acceso o spento un led. Per richiamare tale routine viene utilizzata l’istruzione CALL. Vediamo come funziona tale routine.

In fase di inizializzazione viene caricato un certo valore (nel nostro caso 50h) nei registri COUNT_1 e COUNT_2; dopodiché, quando viene invocata la routine, il microcontrollore viene posto in un loop nel quale ad ogni ciclo questi due contatori vengono decrementati. Solo quando questi saranno posti a zero, la routine termina ed il programma, attraverso l’istruzione RETURN torna al suo normale flusso di esecuzione, dove era stato interrotto. Poiché i due cicli relativi al decremento di COUNT_1 e COUNT_2 sono tra di loro annidati, in pratica il microcontrollore deve eseguire un totale di cicli pari al prodotto dei due: essendo 50 esadecimale uguale al decimale 80, si ottiene che il micro dovrà eseguire un totale di 80 per 80 = 6400 loop prima di tornare al programma principale. Anche se può sembrare un numero molto grande, occorre ricordare che il micro è in grado di eseguire un’istruzione in un tempo dell’ordine del microsecondo. Ora che abbiamo visto a grandi linee come si struttura un programma in assembler, e come lo si rappresenta mediante i diagrammi di flusso, passiamo ad analizzare il set di istruzioni dei PIC.

IL SET DI ISTRUZIONI DEI PIC
Il set di istruzioni rappresenta l’insieme di istruzioni che il micro è in grado di eseguire e che è quindi possibile scrivere in un programma assembler. Tale set varia tra i micro della serie 16CXX ed i micro della serie 17CXX. Poiché stiamo utilizzando come esempio il 16C84, faremo riferimento per ora al set della serie 16C, tralasciando di analizzare in dettaglio il set della serie 17C, che non è altro che un ampliamento delle istruzioni della serie 16C. Il set di istruzioni del 16C84 è costituito da 35 istruzioni che possono essere così raggruppate: istruzioni letterali e di controllo, istruzioni byte oriented, istruzioni bit oriented. Vediamo ora in dettaglio il significato di questi tre gruppi e le istruzioni contenute.

ISTRUZIONI LETTERALI E DI CONTROLLO

Sono 13 istruzioni che permettono di eseguire operazioni utilizzando costanti ed etichette, ad esempio per caricare un valore numerico nel registro W.

ADDLW k Questa istruzione somma il contenuto del registro di lavoro W con k e pone il risultato dell’operazione in W; k può essere un numero oppure un’etichetta, e viene processata in un ciclo macchina. Poniamo, ad esempio, di avere W che contiene il numero 20. Eseguendo l’istruzione ADDLW 10 si otterrà che il registro W contiene il numero 30. Immaginiamo ora di avere scritto la seguente direttiva: COUNT EQU 05 ADDLW COUNT nella prima riga, come abbiamo visto, si associa all’etichetta COUNT il numero 05; nella seconda riga, otterremo come risultato che in W si troverà la somma del valore che W aveva precedentemente e il numero 05.

ANDLW k Questa istruzione esegue un’operazione di AND logico tra il contenuto di W e k, ponendo il risultato in W; essa viene processata in un ciclo macchina.

STAMPA     Tags:

Leave a Reply

Vuoi leggere un articolo Premium GRATIS?

RFID: un acronimo mille possibilità