SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: Pegasux en Domingo 25 de Febrero de 2007, 22:36

Título: Duda Gorda Sobre Los Bancos De Memoria
Publicado por: Pegasux en Domingo 25 de Febrero de 2007, 22:36
Muy buenas. Al compilar mi codigo me da el error de que el registro al que intento acceder (option_reg) no esta en el banco 0, cuando yo acabo de configurar RP0 a 1 y RP1 a 0 (banco 1). Estoy mirando programas de ejemplo y veo que accede a PORTB que esta en el banco 0 cuando el banco actual es el 1:

                bsf   STATUS,RP0   ; Acceso al Banco 1.
   clrf   PORTB      ; Puerto B como salida.
   bcf   STATUS,RP0   ; Acceso al Banco 0.

y al compilar este ejemplo no da ningun error. La unica diferencia es que mi programa es para el 16f876 y el ejemplo es para el 16f84.
No entiendo nada. ¿Alguien me lo puede explicar?
Saludos.
Título: Re: Duda Gorda Sobre Los Bancos De Memoria
Publicado por: pic-man en Lunes 26 de Febrero de 2007, 00:01
supongo que ese ejemplo usa un include para incluir el archivo 16f84.inc, en ese archivo la etiqueta PORTB hace referencia a la direccion 0x06, al momento de cambiar al banco 1 y borrar PORTB en realidad está borrando el registro TRISB que se encuentra en la direccion 0x86, pero al estar ya en el banco 1 se puede mandar a escribir en la direccion 0x06 ya que de otro modo al compilar el codigo aparecen mensajes de warning, aqui lo importante es darse cuenta que al estar en el banco 1 no se accede a PORTB sino a TRISB, asi que si despues quieres acceder a algun registro del banco 0 debes cambiar de banco y despues acceder a ese registro

espero que haya quedado un poco claro  :D