Esercitazioni
PIC - Assembly
|
La struttura del sorgente
L' Assembly, tipicamente, si basa su una struttura a linee: ogni linea ha un valore
proprio.
|
Per
MPASM la lunghezza massima di una linea è 255 caratteri (spazi compresi).
Una
linea può contenere:
-
una istruzione del set proprio del microcontroller usato (opcode)
con i relativi operandi (se richiesti)
-
una label
-
un commento
-
una direttiva dell' Assembler
-
una macroistruzione
Se prendiamo un semplicissimo testo sorgente come esempio:
; Esempio di programma per
microcontroller PIC
list p=16f876
;definizione del
processore
#include p16f876.inc
;include definizioni relative
__config _WDT_OFF
& _BODEN_ON & _HS_OSC & _LVP_OFF
Dest equ 0x0B
;definizione di una costante
org 0x0000
;vettore di reset
goto
Start
org 0x0020
;inizio programma
Start movlw
0x0A
andlw Dest,f
bcf Dest, 3
goto Start
end |
La sua struttura è questa:
label
|
|
opcode
direttive
macro
|
|
operandi
|
|
commento
|
|
; Esempio di programma per
microcontroller PIC
|
|
riga
vuota
|
|
|
|
list p=16f876
#include p16f876.inc |
|
;definizione del
processore
;include definizioni relative |
|
riga
vuota
|
|
|
|
__config _WDT_OFF
& _BODEN_ON & _HS_OSC & _LVP_OFF |
|
riga
vuota |
|
|
Dest |
equ 0x0B |
|
;definizione di una costante |
|
riga
vuota |
|
|
|
org 0x0000 |
|
;vettore di reset |
|
goto |
Start |
|
|
riga
vuota |
|
|
|
org 0x0020 |
|
;inizio programma |
Start |
movlw
andlw
bcf
goto |
0x0A
Dest,f
Dest, 3
Start |
|
|
end |
|
|
Va notato che una riga può contenere un singolo elemento, come l' ultima,
ma anche più elementi, come la terza. E' importante, però, avere chiaro che
ogni linea ha un valore di per se e deve essere scritta seguendo rigidamente
le regole, che sono poche e semplici, ma la violazione delle quali non viene
perdonata dall' Assembler, che le individuerà segnalando spietatamente anche
il più piccolo errore sintattico o di uso.
Quindi, spazi, tab, segni particolari come : o ; non sono a caso, ma secondo
le regole.
Tuttavia questo non impedisce di dare al testo una forma gradevole e nello
stesso tempo ordinata, il che facilita di molto la rilettura.
E' possibile inserire anche righe completamente vuote nel sorgente, per
formare spazi nella stampa della lista oppure anche utilizzare comandi dell'
Assembler per formattare la lista (salto pagina, abilitazione e
disabilitazione di parti della lista, ecc.).
Elementi del sorgente
Dall' esempio che stiamo considerando, si nota che un testo previsto per la
compilazione assembler di un programma per processori PIC tipicamente prevede
alcuni elementi fissi:
- intestazione e descrizione (commenti)
- definizione del processore
- include delle label relative
- configuration bytes
- definizione di costanti, variabili, RAM, ecc.
- posizionamento al vettore di reset
- istruzioni del programma
- chiusura della compilazione
Anche se normalmente si aggiungeranno commenti, strutture di
condizionamento della compilazione, include di file esterni, ecc., i 7 punti
qui sopra sono indispensabili in qualsiasi sorgente.
La loro sequenza logica è quella in cui sono scritti nel testo sorgente. Li
ritroviamo anche nell' esempio che stiamo utilizzando. Vediamo ora maggiori
dettagli.
|