Autor Tema: duda con el banco 0 y el banco 1  (Leído 3704 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado svt

  • PIC10
  • *
  • Mensajes: 38
duda con el banco 0 y el banco 1
« en: 19 de Marzo de 2005, 11:00:00 »
Hola, tengo una duda, y en estos momentos no veo como se soluciona, estoy ofuscado y no veo la salida. Lo mejor seria que descansara un rato y lueog lo mirara pero, paf, no lo veo. Estoy en un proyecto de fin de carrera, tengo bastante hecho (si alguien tiene interes comento de que trata), pero bueno hay va mi duda:

estoy en el banco 0, tengo que poner a 0 o a 1 el bit 4 de pie1, que esta en el banco 1, para ello, paso al banco 1, poniendo a 1 el bit del registro de estado que toque, luego con bsf o bcf pongo el bit pie1,4 y despues retorno l banco 0, cuando hago el build all, me dice WARNING!!!!!!, operando no esta en banco 0, a ver pq leñe da ese warning sera una gilipollez grandisima  pero en estos momentos con lo tonto que soy no lo veo. Gracias e antemano por la ayuda que podais ofrecerme.
Una cos apor curiosidad, entre los dos puertos de comunicacinones que tiene mi proyecto (un rs232 que me han hecho poner,) y un usb, respecto a este, tengo informacion para ponerme con ello, pero alguien sabe algo al respecto?...estoy mirando el foro, y voy a seguir buscando por si encuentro algo, pero de todas formas si aluiensabe algo, hacedme el favor de deciirmelo. mi direccion svt:_spa@hotmail.com y si lo pone en el foro mejor aun, asi lo vemos todos.


saludos

Desconectado GUEORK

  • PIC10
  • *
  • Mensajes: 20
RE: duda con el banco 0 y el banco 1
« Respuesta #1 en: 19 de Marzo de 2005, 13:24:00 »
HOLA AMIGO:
Yo lo único que puedo decirte es que algo parecido me ha pasado (y me pasa) con el tema de configurar los puertos PORTA Y PORTB del PIC 16F84A que es el que estoy aprendiendo. Se supone que para configurar algún port como salida o entrada tienes que acceder al banco 1 con, por ej, "bsf STATUS,RP0" y luego "clrf TRISB" para que todas las líneas del puerto B se configuren como salida. Bueno, todo bien hasta que compilas el programa; entonces te dará un mensaje de advertencia diciendo "Register in operand not in bank 0. Ensure that... etc". En el libro de Ra-Ma (ver paginas 69/70 y 86), explica esto pero yo todavía no puedo comprenderlo; en el banco 0 están los registros de los puertos A y B, que son transparentes al cambio de los datos en sus líneas, estos registros son los que lee el programa cuando debe pasar sus datos al registro W, por ej, (movf PORTA,W). En el banco 1 están los registros de "configuración" de las líneas de cada puerto para que el PIC sepa si son de entrada o de salida. No puedo entender porqué hay que configurar un puerto utilizando PORTA (por ej) en vez de TRISA para que no dé luego un mensaje de error simplemente, porque el programa funciona correctamente. Bueno, es lo que hay! Yo sigo utilizando TRISA y/o TRISB (como corresponde) para la configuración de los puertos y me... los mensajes de error. En mi caso los programas terminan con un "BUILD SUCCEEDED", no sé si es tu caso. Si lo es, te quedará resignarte como a mí... Es como si tienes un primo en Francia y para enviarle una carta debieras poner "Italia" en el sobre, teniendo en cuenta que a pesar de que el cartero te advierta de que tu primo no vive en Italia la carta le llega igual (?).
Si algún alma caritativa nos desasna públicamente lo agradeceremos. By.

Desconectado IngLAOFX

  • PIC10
  • *
  • Mensajes: 43
RE: duda con el banco 0 y el banco 1
« Respuesta #2 en: 04 de Mayo de 2005, 02:42:00 »

Buno, a mi tambien me marca ese problema.. bueno, no problema, ya que los programas funcionan muy bien, pero hasta la fecha sigo viendo el mensaje de warning al compilar el codigo, peor no te preocupes si es el mismo mensaje, como ya lo dijeron, hay que resignarse...

Creo que eso sucede porque el entorno del MPLab tiene que lidiar con todos los pics, entonces, como no en todos los pics los registros estan en el mismo lugar, pues marca esta advertencia...

Como dato extra. no se si les ayude, pero considero que es un bun recurso nemotecnico, cuando quieran seleccionar algun banco, en lugar de hacerlo seteando los bits RP0 y RP1 del STATUS, pueden utilizar la directiva banksel, de la siguiente manera:

.......
         banksel   TRISB
         clrf           TRISB
         banksel   PORTB
......

pueden encontrar mas info en la ayuda del MPLab, al menos en la versoion actualk que es como la 6.7 o 6.7 no recuerdo bien..
Gana Mas Una Bruja Rentando Su Palo De Escoba A 10Euros por Vuelta Que Uno Prediciendole Un Esplendoroso Futuro A La Clase Obrera En Una Semana

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: duda con el banco 0 y el banco 1
« Respuesta #3 en: 04 de Mayo de 2005, 07:08:00 »
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.


 

anything