Autor Tema: Problemacon PAGESEL en 16F88 con MPLABx  (Leído 1828 veces)

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

Desconectado rtt

  • PIC10
  • *
  • Mensajes: 2
Problemacon PAGESEL en 16F88 con MPLABx
« en: 02 de Abril de 2014, 16:49:49 »
Hola a todos,
Mi problema es el siguiente. Estoy utilizando un 16F88 programándolo en asm desde MPLABx, En el proyecto tengo un fichero fuente con el contenido que pongo a continuación, y un fichero 16f88.lnk que contiene las instrucciones para el linker sacado del paquete gnupic. El código es el siguiente.

radix DEC
LIST  P=16F88
radix dec

#define max_flash 0x1000
#define prima_adresa max_flash-100 ; 100 word in size

; Code Protect Off | ? | Debug Off | ? | ? | Low voltaje programing Off | ? | MCLR Reset On | Power On retart OFF |Wadth Dog Off | Oscilador Interno RC
__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

ERRORLEVEL 1, -305

;0000000000000000000000000 RESET 00000000000000000000000000

   ORG     0x0000
        PAGESEL IntrareBootloader
   GOTO   IntrareBootloader

;&&&&&&&&&&&&&&&&&&&&&&&   START     &&&&&&&&&&&&&&&&&&&&&&
;----------------------  Bootloader  ----------------------

   ORG prima_adresa
   NOP
   NOP
   NOP
   NOP
   ORG prima_adresa+4

; PROGRAMA PRINCIPAL

IntrareBootloader

; Inicializacion Puerto B

BANKSEL TRISB               ; BANK 1
MOVLW   b'11010111'         ; RB2 (RX)=input, RB3 (Led)=output RB5 (TX)=output
MOVWF    TRISB

BANKSEL PORTB               ; BANK 0
MOVLW   B'00001000'        ; Activo RB3
MOVWF   PORTB

GOTO     $

La cuestión es que cuando miro desde la utilidad que visualiza la memoria de programa del pic, la instrucción del goto generada tiene una dirección de la primera página, cuando debería estar saltando a la correcta que está en la segunda página segun el PAGESEL.

¿A alguien se le ocurre que puede estar pasando?

Gracias de antemano

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problemacon PAGESEL en 16F88 con MPLABx
« Respuesta #1 en: 02 de Abril de 2014, 19:35:53 »
La instrucción GOTO no contiene todos los bits de salto en estos micros, es por ello que haces el PAGESEL, que setea los bits más altos de la dirección a saltar. Es lo que sería un LATCH. Precargas los bits altos de la dirección mediante el PAGESEL y el GOTO carga la parte baja de la dirección. Cuando se ejecuta el salto se utilizan todos los bits mencionados para armar la dirección final de salto, pero en la instrucción GOTO no esperes ver siempre la dirección final a la cual saltará el PC finalmente.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado rtt

  • PIC10
  • *
  • Mensajes: 2
Re: Problemacon PAGESEL en 16F88 con MPLABx
« Respuesta #2 en: 03 de Abril de 2014, 03:10:46 »
Contestada mi pregunta  ;-), muchas gracias.