Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori PIC. Quinta puntata - 2

Corso di programmazione per microcontrollori PIC

Le labels sono delle parole che vengono utilizzate come rimandi nel programma oppure delle costanti che verranno sostituite dal compilatore nella generazione del codice macchina. Generalmente, la prima parte di un programma scritto in assembler contiene diverse labels che serviranno per semplificare la scrittura del programma stesso. Nel nostro caso, le prime cinque linee associano alle labels PORT_B, TMR0, COUNT_1, COUNT_2 e PIC84, i valori 06, 01, 0C, 0D e 03FF, ovviamente espressi in esadecimale.


La parola EQU non è una istruzione del PIC, ma una direttiva del compilatore, che dice appunto di associare ad una label un certo valore. Quando il programma viene compilato dall'assemblatore, per generare il codice finale in linguaggio macchina, ogni volta che il compilatore incontra, ad esempio, la parola PORT_B, sostituisce a questa il suo effettivo valore, cioè 06. In pratica il dichiarare delle costanti in questo modo, anziché scrivere direttamente il loro valore all'interno del programma, ha due sostanziali vantaggi:



-risulta molto più facile scrivere un programma, in quanto è più semplice utilizzare una label che ricorda il significato di una certa costante piuttosto che il suo valore numerico;


-diventa più facile e veloce effettuare modifiche al programma. Nel nostro caso, ad esempio, le due labels COUNT_1 e COUNT_2 determinano col loro valore la frequenza a cui si accendono e spengono alternativamente i due led. Se occorre modificare tale frequenza, è sufficiente che si vada a modificare il loro valore associato dalla EQU, e automaticamente verranno cambiati tutti i valori a loro associati all'interno del programma. Se non si fossero utilizzate tali labels, si sarebbero dovute cambiare diverse linee di programma per ottenere lo stesso effetto.



Altre label presenti nel programma sono: INIT, MAIN e DELAY. Scorrendo il programma si notano diverse istruzioni del tipo GOTO INIT, GOTO MAIN, CALL DELAY e cosi via. Queste istruzioni servono per proseguire il programma alla label associata. Così quando si giunge alla GOTO MAIN, il flusso del programma prosegue ad eseguire le istruzioni dalla label MAIN. Occorre ricordare che le etichette devono sempre essere scritte partendo dalla prima riga. Una parte importante del programma è costituita dai commenti. Per aggiungere dei commenti, è sufficiente porre un punto e virgola prima del commento stesso; il compilatore automaticamente ignorerà tutto ciò che è scritto dopo il punto e virgola. I commenti, anche se non servono direttamente al programma, sono tuttavia di estrema importanza per la comprensione del programma stesso. E' buona norma inserire commenti frequenti, ad esempio per le costanti usate nel programma, per le routine e così via. Dopo la prima parte relativa alla dichiarazione delle costanti, vi è il programma vero e proprio, che comincia dalla label INIT. La prima istruzione che si trova è ORG 0000h.

Questa, come la EQU già vista, non è un'istruzione del PIC ma una direttiva dell'assemblare; in pratica dice all'assemblare che la parte di programma che segue dovrà essere compilata in memoria a partire dalla locazione esadecimale 0000h. Vi è un'altra direttiva ORG in fondo al programma. Questa fa inserire l'istruzione GOTO INIT, cioè vai alla etichetta INIT, che rappresenta l'inizio del programma, all'indirizzo 03FF. Questo perché quando il PIC viene alimentato, o quando esce da una situazione di reset, il Program Counter parte dall'ultima locazione di memoria, che nel 16C84 è rappresentata dalla locazione di indirizzo 03FF, avendo tale micro 1 K di memoria programma. In tale locazione è quindi necessario inserire un rimando all'i-nizio, per così dire, vero, del programma.

 

 

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 1 utente e 41 visitatori collegati.

Utenti online

Ultimi Commenti