Buenas.
Voy a intentar aclarados vuestras dudas.
Cuando haceis un programa, no definis los registros de los PIC sino que incluis el fichero del procesador que sea, por ejemplo PIC16F84A.INC. Este archivo lleva definidos ya todos los registros del PIC que vais a utilizar:
Codigo:
INDF EQU H"0000"
TMR0 EQU H"0001"
PCL EQU H"0002"
STATUS EQU H"0003"
FSR EQU H"0004"
PORTA EQU H"0005"
PORTB EQU H"0006"
EEDATA EQU H"0008"
EEADR EQU H"0009"
PCLATH EQU H"000A"
INTCON EQU H"000B"
OPTION_REG EQU H"0081"
TRISA EQU H"0085"
TRISB EQU H"0086"
EECON1 EQU H"0088"
EECON2 EQU H"0089"
y los bits de los registros fundamentales. Si os fijais, los registros TRISA y TRISB están definidos como 85 y 86. Cuando el compilador revisa vuestro programa y encuentra estos registros, con direcciones fuera del banco 0 de memoria, os va a advertir con un WARNING, puesto que no va comprobando con cada registro como están los bits RP0 ni RP1 del STATUS. Es tarea del programador el llevar un buen control de estos bits y del direccionamiento de los bancos de memoria.
Entonces, si no quereis que os aparezcan estos WARNINGS, o bien modificais el archivo .INC y cambiais los valores del TRISA y TRISB, etc por 05, 06 , etc, o bien modificais vuestro programa de la siguiente forma:
bsf STATUS, RP0
clrf PORTA ;Port a como salida
movlw 0xff ; Port b como entrada
movwf PORTB
bcf STATUS, RP0
Al estar en el banco 1 (RP0 = 1) el registro "PORTA" apunta al "TRISA", es decir, el programa funciona perfectamente y no vais a ver más el WARNING. Lo mismo pasa con los PIR ADCON, etc.