L' indirizzamento indiretto
  Si tratta di un meccanismo che permette l' accesso alla memoria RAM
  attraverso un puntatore, che è costituito dal registro  FSR e dal registro
  INDF. 
  in questi semplici PIC, dotati di poche risorse RAM, il meccanismo è
  altrettanti semplificato. 
  Il registro  INDF appare nella lista degli SFR, ma non è un registro fisico.
  Indirizzando INDF effettivamente si indirizza il registro il cui indirizzo è contenuto
  in FSR: FSR è un puntatore. 
  
  FSR  è un registro con 5 bit utili che identificano
  la locazione nell'intera area 00h-1Fh. 
  Con questo metodo è possibile accede a tutta la RAM. 
  Ad esempio, la locazione di RAM  all' indirizzo 10h contiene il valore
  CCh.  La locazione 11h contiene il valore 0Ah. 
  Se carichiamo l' indirizzo 10h in FSR, leggendo INDF si otterrà CCh, ovvero
  il valore contenuto nella locazione puntata. Incrementando di uno FSR (10+1=11) la lettura di INDF renderà 0Ah, dato che ora il puntatore indica la
  locazione all' indirizzo 08. 
  Una applicazione : azzerare la RAM da 10h a 1Fh 
  
    
      
             MOVLW 0x10          
          ;inizializza il puntatore 
               MOVWF FSR           
          ;alla locazione da cui iniziare 
          NEXT  CLRF  INDF          
          ;azzera indiretto (INDF) 
               INCF  FSR,F         
          ;puntatore + 1 
               BTFSC FSR,4         
          ;fine area RAM (>1Fh)? 
               GOTO  NEXT          
          ;no, un altro loop 
          CONT                     
          ;si, fine loop                   | 
       
     
   
  La lettura INDF (FSR = 0) produrrà 00h. Un tentativo di scrivere
  indirettamente INDF si traduce in  
  nessuna operazione (anche se i bit dello STATUS possono essere modificati). 
    
   
  Dopo quanto detto potrebbe essere utile un riepilogo del l' organizzazione della
  memoria. Ricordiamo che in base all' architettura Harvard memoria dati e
  memoria programma stanno su bus diversi. 
  Questo comporta che ci sarà un indirizzo 00h per il bus dati, corrispondente
  ad una locazione di RAM (in questo caso il registro INDF). 
  Mentre un indirizzo 00h sul bus della memoria programma, corrispondente ad una
  locazione della Flash (in questo caso, il vettore di Reset). 
  La memoria programma: 
  
    - In tecnologia Flash, è organizzata in "bytes" da 12 bit
      ciascuno
 
    - Contiene i codici di istruzione e quant' altro serve nell' esecuzione
      del programma
 
    - Il suo contenuto è creato dalla compilazione del file sorgente del
      programma e resta invariato anche se manca la tensione di alimentazione
 
    - Il suo contenuto non può essere alterato durante l' esecuzione del
      programma
 
    - Ci si accede in scrittura e lettura attraverso un dispositivo di
      programmazione (ICSP)
 
    - In questi PIC è ripartita in una sola pagina, sempre accessibile 
 
   
  La memoria dati: 
  
    - In tecnologia RAM, è organizzata in bytes da 8 bit ciascuno
 
    - Comprende sia l' area di RAM dati vera propria, sia l' area dei
      registri SFR
 
    - Il suo contenuto è modificabile durante l' esecuzione del programma e
      va perso se manca la tensione di alimentazione
 
    - Il contenuto della RAM dati è indefinito all' accensione, mentre per
      quanto riguarda gli SFR essi sono inizializzati dai default
 
    - Ci si accede in scrittura e lettura attraverso le istruzioni del
      programma
 
    - In questi PIC è ripartita in un solo banco, sempre accessibile
 
   
  PIC10F200/6 
  
    
    
      
        | Memoria | 
        Tipo | 
        Bus | 
        Amp. | 
        Divisione | 
        Accesso | 
        Note | 
       
      
        | programma | 
        Flash | 
        12 | 
        512 | 
        sempre accessibile | 
          | 
       
      
        | dati | 
        RAM | 
        8 | 
        16 | 
        sempre accessibile | 
        10F200/204    10h-1Fh 
          10F202/206    08h-1Fh | 
       
      
        | SFR | 
        RAM | 
        8 | 
        7/8 | 
        sempre accessibili | 
          | 
       
     
    
   
    
   
 |