LA RESPUESTA ES LA SIGUIENTE:
;******************************************************************************************************
CUANDO SE DEBE PAGINAR UN PROGRAMA:
COMO SU NOMBRE LO INDICA LAS PAGINAS DE PROGRAMA DE LOS MICROCONTROLADORES ESTAN O CONTIENEN UN VALOR MAXIMO
DE 256 LINEAS DE CODIGO... CADA LINEA PUEDE SER UN CALL, GOTO, MOVWF O UN NOP....ETC
TEN CUENTA QUE LA CANTIDAD DE PAGINAS DE PROGRAMA LAS DA LAS CARACTERISTICAS DEL PIC Y ESTA DADO EN 1K 2K ...ETC
COMO CONCEJO CUANDO LLEGAMOS AUN RANGO CERCANO A LAS 240 LINEAS ES MEJOR PASAR A UNA NUEVA PAGINA DE PROGRAMA
FIJATE QUE SONBRARIAN 16 LINEAS DE PROGRAMA ...ESTAS LAS DEJAMOS COMO SEGURIDAD EN EL CASO DE CORRECCIONES.....
;******************************************************************************************************
COMO SE HACE UNA NUEVA PAGINA:
FACIL...
PONES UN ENCABEZADO ASI
ORG 0X00 ;PAGINA 0--> PCLATCH =0 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
ORG 0X100 ;PAGINA 1--> PCLATCH =2 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
ORG 0X200 ;PAGINA 2--> PCLATCH =3 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
ORG 0X300 ;PAGINA 3--> PCLATCH =4 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
ORG 0X400 ;PAGINA 4--> PCLATCH =5 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
ORG 0X500 ;PAGINA 5--> PCLATCH =6 EN HEX MAXIMO F
AQUI NUESTRO CODIGO MAXIMO 256 LINEAS DE CODIGO
;******************************************************************************************************
COMO PASAR DE UNA PAGINA A OTRA....
HAY BARIOS METODOS DE HACERLO
;***********************************************
;>>>>>>>PRIMER METODO EL COMPLICADO
POR MANIPULACION DIRECTA DE LOS BITS DEL PCLATH
;**********
;EN EL PROGRAMA EJMPLO ESTANDO EJECUTANDO LINEAS EN LA PAGINA 2 Y LLAMANDO UNA RUTINA_N DE LA PAGINA 4
BSF PCLATH,2 ; MANIPULO EL BIT DOS DEL PCLATH
CALL RUTINA_N ;LLAMO LA RUTINA
BCF PCLATH,2 ;RETORNO VALORES AL PCLATH PARA QUE SIGA EN DICHA PAGINA 2
BCF PCLATH,1
;**********
;EN EL PROGRAMA EJMPLO ESTANDO EJECUTANDO LINEAS EN LA PAGINA 5 Y LLAMANDO UNA RUTINA_N DE LA PAGINA 3
BSF PCLATH,0 ; MANIPULO EL BIT CERO DEL PCLATH
BSF PCLATH,1 ; MANIPULO EL BIT UNO DEL PCLATH
CALL RUTINA_N ;LLAMO LA RUTINA.
CLRF PCLATH
BSF PCLATH,0 ; MANIPULO EL BIT CERO DEL PCLATH
BSF PCLATH,2 ; MANIPULO EL BIT DOS DEL PCLATH RETORNO VALORES AL PCLATH PARA QUE SIGA EN DICHA PAGINA 5
;**********
;; Y ASI COMPLICADAMENTE SEGUIMOS TRABAJANDO
;***********************************************
;>>>>>>>SEGUNDO METODO Y EL FACIL
SE HARIA POR MACROS EN DONDE SOLO LE LLAMAS EL MACRO ALGO PARECIDO AL ANTERIOR PERO MENOS COMPLICADO
TEN ENCUENTA QUE EL LLAMADO DE UN MACRO NO ES LO MISMO QUE UN CALL ...PUES SOLO ESCRIBES EL NOMBRE DEL MACRO
Y TU COPILADOR SE ENCARGA DE COPIAR EL CODIGO CONTENIDO EN EL MACRO.
;**********
PAGINA0 MACRO
CLRF PCLATH ; BORRO TODOS LOS BITS DEL PCLATH
ENDM
PAGINA1 MACRO
PAGINA0 ;LLAMO EL MACRO PAGINA0 POR SEGURIDAD Y ASI EVITAR MALOS SALTOS
BSF PCLATH,0 ; MANIPULO EL BIT CERO DEL PCLATH
ENDM
PAGINA2 MACRO
PAGINA0 ;LLAMO EL MACRO PAGINA0 POR SEGURIDAD Y ASI EVITAR MALOS SALTOS
BSF PCLATH,1 ; MANIPULO EL BIT UNO DEL PCLATH
ENDM
PAGINA3 MACRO
PAGINA0 ;LLAMO EL MACRO PAGINA0 POR SEGURIDAD Y ASI EVITAR MALOS SALTOS
PAGINA2
BSF PCLATH,0 ; MANIPULO EL BIT CERO DEL PCLATH
ENDM
PAGINA4 MACRO
PAGINA0 ;LLAMO EL MACRO PAGINA0 POR SEGURIDAD Y ASI EVITAR MALOS SALTOS
BSF PCLATH,2 ; MANIPULO EL BIT DOS DEL PCLATH
ENDM
PAGINA5 MACRO
PAGINA4
BSF PCLATH,0 ; MANIPULO EL BIT CERO DEL PCLATH
ENDM
PAGINA6 MACRO
PAGINA4
BSF PCLATH,1 ; MANIPULO EL BIT UNO DEL PCLATH
ENDM
;***ETC
;**********
;EN EL PROGRAMA EJMPLO ESTANDO EJECUTANDO LINEAS EN LA PAGINA 2 Y LLAMANDO UNA RUTINA_N DE LA PAGINA 4
PAGINA4 ;PONGO EL MACRO PAGINA4 PARA APUNTAR A DICHA PAGINA
CALL RUTINA_N ;LLAMO LA RUTINA
PAGINA2 ;RETORNO VALORES AL PCLATH PARA QUE SIGA EN DICHA PAGINA 2
;**********
;EN EL PROGRAMA EJMPLO ESTANDO EJECUTANDO LINEAS EN LA PAGINA 5 Y LLAMANDO UNA RUTINA_N DE LA PAGINA 3
PAGINA3 ;PONGO EL MACRO PAGINA3 PARA APUNTAR A DICHA PAGINA
CALL RUTINA_N ;LLAMO LA RUTINA
PAGINA5 ;RETORNO VALORES AL PCLATH PARA QUE SIGA EN DICHA PAGINA 5
;**********
;; Y ASI FACILITO SEGUIMOS TRABAJANDO
;******************************************************************************************************
;AHORA LA SOLUCION A TU PREGUNTA
CUANDO LE DAS CARGAR
movlw HIGH Funcion ;AQUI CARGA AL PCLATH EL VALOR DE LA UBICACION DE LA PAGINA DE LA FUNCION
movwf PCLATH ;MUEVE DICHO VALOR AL PCLATH
movlw Funcion ;AQUI CARGA AL PCL EL VALOR DE LA UBICACION EN LA PAGINA DE LA FUNCION
movwf PCL ;MUEVE DICHO VALOR AL PCL
;ASI MISMO EJECUTA DICHA FUNCION
SALUDOS ESPERO LES SIRBA MI EXPLICACION