;       CONSIDERAZIONI SUI BANCHI DI REGISTRI CONDIVISI
;       
;	    di Walter Giocoso
;	    http://digilander.iol.it/wgiocoso
;
;       I registri con indirizzi compresi tra 70H e 7FH del BANCO0,
;       possono essere letti e scritti qualunque sia il banco indirizzato
;       Una variabile inserita al di fuori di questa zona, invece, non viene vista 
;       in un banco diverso da quello in cui è definita.
;       Nessun problema invece per le EQU che possono essere definite ovunque. 
;       Le EQU, infatti, cosi' come le LABEL verrano sostituite in fase di compilazione
;       con il loro valore numerico o indirizzo, come e' possibile notare disassemblando
;       con apposito programma un HEX, cioe' un programma compilato.
;---------------------------------------------------------------------------------------



        PROCESSOR   16F876A
	    __CONFIG    3FF1H
	    RADIX 	    DEC
	    INCLUDE     "P16F876A.INC"
	    ERRORLEVEL  -302
	
	    ORG         20H                 ;registri per uso generico banco 0

FLAG    EQU         1	    
	
        ORG	        70H		            ;registri per uso generico condivisi

CONT    RES         1                   ;variabile di conteggio        
REG     RES         1

        ORG         00H                 ;prima locazione area programma
        
        MOVLW       00000010B
        MOVWF       REG
        MOVLW       01H
        MOVWF       CONT

        MOVLW       0
        BCF         STATUS, RP0         ;banco 0
        BCF         STATUS, RP1         ;==
        MOVF        CONT,   0           ;il registro W adesso conterrà 01H
        INCF        CONT,   1
        BTFSC       REG,    FLAG
        MOVLW       11111111B
         
        MOVLW       0
        BSF         STATUS, RP0         ;banco 1
        BCF         STATUS, RP1         ;==
        MOVF        CONT,   0           ;il registro W adesso conterrà 02H
        INCF        CONT,   1
        BTFSC       REG,    FLAG
        MOVLW       11111111B

        
        MOVLW       0
        BCF         STATUS, RP0         ;banco 2
        BSF         STATUS, RP1         ;==
        MOVF        CONT,   0           ;il registro W adesso conterrà 03H
        INCF        CONT,   1
        BTFSC       REG,    FLAG
        MOVLW       11111111B


        MOVLW       0
        BSF         STATUS, RP0         ;banco 3
        BSF         STATUS, RP1         ;==
        MOVF        CONT,   0           ;il registro W adesso conterrà 04H
        BTFSC       REG,    FLAG
        MOVLW       11111111B
        

        
        END
