ELEMANIA
PIC16F690 - La direttiva BANKSEL
La direttiva BANKSEL

Come abbiamo già avuto modo di vedere, le operazioni sui registri del PIC richiedono quasi sempre (tranne per i registri che sono mappati con lo stesso nome in tutti i banchi di memoria) di selezionare prima il banco a cui il registro appartiene.

Torniamo all'esempio del semplice programma che azzera il contenuto di PIE1:

         BSF STATUS,RP0 ; setta a 1 il bit 5 di SR
         BCF STATUS,RP1 ; resetta a 0 il bit 6 di SR
 
         CLRF PIE1 ;  pulisce (azzera) il contenuto del registro

L'assembly del PIC fornisce una direttiva detta BANKSEL (bank select) che consente di semplificare l'accesso a un banco. In pratica non occorre ricordarsi a quale banco appartiene un dato registro, poiché basta usare BANKSEL seguita dal nome del registro stesso. In altre parole, il programma dell'esempio precedente può essere riscritto usando BANKSEL nel seguente modo:

         BANKSEL PIE1
 
         CLRF PIE1 ;  pulisce (azzera) il contenuto del registro

In pratica BANKSEL PIE1 equivale alle due istruzioni BSF e BCF sui bit dello Status Register (in effetti BANKSEL viene sostituita dall'assemblatore con le istruzioni BSF e BCF).

La direttiva BANKSEL può essere usata anche con i registri GPR (General Purpose) definiti dal programmatore, a condizione che l'indirizzo di tali registri venga indicato in modo assoluto e non in modo relativo. La ragione è abbastanza chiara: se l'indirizzo del registro è indicato in modo relativo, la BANKSEL non ha modo di sapere a quale banco appartiene il registro stesso. Si consideri l'esempio seguente:

TMP   EQU 20
TMP2  EQU A0

         BANKSEL TMP
         CLRF TMP ;  pulisce (azzera) il contenuto del registro di indirizzo 20

         BANKSEL TMP1
         CLRF TMP1 ;  pulisce (azzera) il contenuto del registro di indirizzo A0

Osservando la mappa di memoria del PIC notiamo che i due indirizzi 20 e A0 corrispondono a due locazioni rispettivamente nel banco 0 e nel banco 1 che hanno lo stesso indirizzo relativo (entrambe hanno indirizzo relativo 20).

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it