TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: proteus7 en 29 de Diciembre de 2013, 19:26:42

Título: Como saltar a diferentes paginas con tablas usando el goto
Publicado por: proteus7 en 29 de Diciembre de 2013, 19:26:42
hola  necesito  su ayuda para lo siguiente:

tengo una tabla que se encuentra en la pagina cero y por medio de esta quiero ir ala pagina 3  con la instruccion goto que esta anidada en "tabla" ya bus que en el foro pero no encuentro algo que se paresca a lo que yo quiero hacer alguien sabe como hacerlo?

;====================================================
aqui es donde quiero saber como le hago para que vaya directamente ala pagina 3 donde se encuentra la rutina_0
  
tabla                              ; esta tabla se encuentra en pagina 0
    addwf      pcl,f
    goto        rutina_0       ; esta rutina se encuentra en la pagina 3 del pic 877a
    goto        rutina_1       ; esta rutina se encuentra en la pagina 3 del pic 877a      
    goto        rutina_2       ; esta rutina se encuentra en la pagina 3 del pic 877a
  
    ORG        01800h       ; pagina 3
rutina_0

;=======================================================
Lo he echo de esta forma y asi,  si funciona, pero lo que quiero es hacer que con la tabla
vaya directo ala pagina 3 .


tabla                              ; esta tabla se encuentra en pagina 0
    addwf      pcl,f
    goto        rutina_0       ; esta rutina se encuentra en la pagina 0 del pic 877a
    goto        rutina_1       ; esta rutina se encuentra en la pagina 0 del pic 877a      
    goto        rutina_2       ; esta rutina se encuentra en la pagina 0 del pic 877a


rutina_0
    bsf          pclath,3       ; carga pagina 3
    bsf          pclath,4
    goto       Rutina_cero   ; ir apagina 3 donde se encuentra la rutina_cero

    ORG      01800h          ; pagina 3

Rutina_cero
    
Título: Re: Como saltar a diferentes paginas con tablas usando el goto
Publicado por: tapi8 en 30 de Diciembre de 2013, 07:32:37
Tienes unas directivas del MPLAB "lgoto" y "lcall" creo recordar, mira hace ya algun tiempo me paso esto mismo, ya no recuerdo muy bien como era porque no lo volvi a usar, pero enconcre el post que puse en aquella ocasion:

http://www.todopic.com.ar/foros/index.php?topic=37693.0

Tambien puedes setear los bits 3 y 4 del PCLATCH antes de llamar a la tabla.
Título: Re: Como saltar a diferentes paginas con tablas usando el goto
Publicado por: BrunoF en 30 de Diciembre de 2013, 16:31:58
Hola, esto se ha tratado varias veces en el foro.

Una forma que se me ocurre para tu caso sería hacerlo así:

Código: ASM
  1. tmp     equ     0x70
  2. pcLow   equ     0x71
  3.  
  4.         movlw   .2              ;en el ejemplo intentaré saltar a la rutina_2
  5.         movwf   tmp
  6.         bcf     STATUS,C        ;aseguro STATUS,C = 0 para rotar a la izq (multiplicar por 2)
  7.         rlf     tmp,f
  8.         movf    tmp,W
  9.         call    tabla           ;leer parte baja de dirección del elemento al cual saltar
  10.         movwf   pcLow
  11.         incf    tmp,W
  12.         call    tabla           ;leer parte alta de dirección del elemento al cual saltar
  13.         movwf   PCLATH          ;cargar PCLATH con parte alta de dirección a saltar
  14.         movf    pcLow,W
  15.         movwf   PCL             ;saltar
  16.  
  17. tabla                              ; esta tabla se encuentra en pagina 0
  18.     addwf     PCL,F
  19.     retlw      LOW  rutina_0       ; esta rutina se encuentra en la pagina 3 del pic 877a
  20.     retlw      HIGH rutina_0       ; esta rutina se encuentra en la pagina 3 del pic 877a
  21.     retlw      LOW  rutina_1       ; esta rutina se encuentra en la pagina 3 del pic 877a
  22.     retlw      HIGH rutina_1       ; esta rutina se encuentra en la pagina 3 del pic 877a
  23.     retlw      LOW  rutina_2       ; esta rutina se encuentra en la pagina 3 del pic 877a
  24.     retlw      HIGH rutina_2       ; esta rutina se encuentra en la pagina 3 del pic 877a
  25.  
  26.     ORG        01800h       ; pagina 3
  27. rutina_0
  28.         nop
  29.         ;...
  30.  
  31. rutina_1
  32.         nop
  33.         ;...
  34.  
  35. rutina_2
  36.         nop
  37.         ;...
Título: Re: Como saltar a diferentes paginas con tablas usando el goto
Publicado por: proteus7 en 06 de Enero de 2014, 22:04:33
gracias brunof y tapi8 por responder,   lo que estoy haciendo es leer  los codigos ascii probenientes del  puerto rs232 del pc , al recibirlos los decodifico por medio de la tabla y dependiendo del caracter que reciba  manda ala rutina correspondiente  para escribir el caracter en un lcd 2x16  pero estas rutinas deben estar en la pagina 3.

voy analizar bien la rutina que enviaste brunof haber que se puede hacer

saludos :lol: