12.- Inizializzazioni delle periferiche.
In pagina 0 vanno poste anche le MACRO che generano subroutines: devono
essere definite prima dell' usao, ma nello steso tempo occupano spazio in
memoria programma anche se non sono usate.
;=============================================================================
; INITIALIZZAZIONI
;=============================================================================
MAIN
;-------------------
; inizializza PORT
;-------------------
init banksel PORTA
clrf
PORTA ; to 0
banksel LATA
|
Però è possibile anche organizzare le inizializzazioni, soprattutto se
complesse, come subroutine separate:
;=============================================================================
; INITIALIZZAZIONI
;=============================================================================
MAIN
;-------------------
; inizializza moduli
;-------------------
init call
initPORTA
call
initPORTB
call
initEUSART
|
13.- Programma principale
La costruzione del programma principale dipenderà da quali funzioni si
devono svolgere.
;=============================================================================
; PROGRAMMA PRINCIPALE
;=============================================================================
; qui il codice del programma principale
mainloop
...................
fine goto mainloop ; loop del programma
|
A seconda della complessità, sarà necessario inserire piò o meno
"forma" nel sorgente.
Dal punto di vista logico-organizzativo, una suddivisone in moduli logici,
con l' uso di MCRO, subroutine e librerie è la scelta migliore.
14.- Moduli, Driver, Librerie
Se la sezione precedente conteneva la struttura portante del programma, ora
è il momento di piazzare le definizioni dei moduli che lo compongono.
Driver, librerie, subroutines potranno trovare posto qui.
In processori che hanno la memoria paginata, occorrerà particolare attenzione
nel gestire le pagine.
;********************************************************************
;====================================================================
; AREA DEI DRIVER E DELLE LIBRERIE
;====================================================================
;********************************************************************
;--------------------------------------------------------------------
; qui i driver delle periferiche usate e le librerie necessarie
;--------------------------------------------------------------------
; qui il codice
|
Il posizionamento "in coda" di queste parti deriva dal fatto che
l' uso di librerie e driver intende che questi elementi siano già funzionanti
e quindi non richiedano azione di debug.
15.- Coda
Sempre nella coda possiamo piazzare messaggi, tabelle e tutti quegli
elementi che hanno la minima probabilità di richiedere un debug.
;********************************************************************
;====================================================================
;= MESSAGES TABLES =
;====================================================================
;********************************************************************
; Strighe messaggi o simili
; esempio
; char # |||||||8|||||||*|||*
STR_0: DB
"LCD 2x16 KBD 3x4",0 ; wellcome prompt
|
Questa scelta è ideale per processori senza paginazione. Per quelli con
paginazione ocorrerà predisporre, se necessario, una opportuna gestione delle
pagine.
15. - The END
Alla fine del listato, l' END finale chiude l' area da
compilare
;********************************************************************
;========================= fine del sorgente ======================
;********************************************************************
END
|
Il testo, se necessario, potrà procedere oltre, ma la compilazione si
arresta a questa linea; qualunque cosa sia seguente non verrà considerata
dall' Assembler.
|