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:
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:
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:
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).
Sito realizzato in base al
template offerto da
http://www.graphixmania.it