Tips & Tricks - PIC

 

 


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.

 


 

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 17/05/12 .