| 
    
  
    
  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. 
    
   
   
          |