Autor Tema: paginas del F84 (PicListLatina)  (Leído 7978 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
paginas del F84 (PicListLatina)
« en: 26 de Julio de 2002, 21:35:00 »
Esto es de un email de la piclislatina
Cada pagina de memoria de programa tiene 255 posiciones o sea H"FF" en el caso
del 16F84A se tienen cuatro paginas, pues solo tiene 1023 posiciones o sea 1K de
memoria de programa.
 
Primera pagina     H"000" ~ H"0FF"
Segunda pagina   H"100" ~ H"1FF"
Tercera pagina     H"200" ~ H"2FF"
Cuarta pagina      H"300" ~ H"3FF"
 
Si quieres poner la parte la tabla en la parte alta de la primera pagina, entiendo que
es el comienzo, o sea desde el inicio de la segunda pagina.
Con la directiva ORG le indicas al ensamblador en donde quieres poner el codigo, en el
caso de la tabla seria:
 
    ORG H"100"
Tabla  addwf   PCL,F
            DT         literales,..,..,

Si tienes que saber en que dirección estas, eso es facil, solo tienes que leer los
registros PCL y PCLATH el primero es la parte baja del contador de programa
el segundo es la parte alta.
Si tu preocupacion es por un call o goto, no te hagás problemas ya que estos manejan
todo el rango de memoria RAM del 16F84A, en otros pics es diferente y hay que
leer las hojas de datos primero, en donde se complica es cuando lo haces con
mnemonicos que tienen como destino la modificación directa del registro PCL,
como en las tablas con addwf PCL,F en estos casos si tienes que tener en cuenta
y cargar a mano el registro PCLATH, para esto exiten dos directivas al ensamblador:
 
    movlw    HIGH Tabla
    movwf   PCLATH
    movf      Valor,W      ;El registro Valor tiene el valor pasado a la tabla
    addwf    PCL,F
    DT          literales,..,..,
 
La directiva LOW devuelve la parte baja del contador de programa "8 bits"
y la directiva HIGH devuelve la parte alta del contador de programa, o sea
lo que va en el registro PCLATH. También exite la directiva $ que significa el
lugar actual o sea la dirección en donde está el mnemonico, te doy un ejemplo
que utilizo mucho para no poner etiquetas.
 
    btfsc  PULSADOR      ;¿Se liberó el pulsador?
   goto    $ - 1               ;No, vuelve desde el lugar actual menos 1 o sea a btfsc PULSADOR
 
   Otro caso podria ser mover la parte alta del lugar actual, esto se haria con:
   molw    HIGH $
   o tambien 2 direcciones más relativo al lugar en donde se está, esto es muy utilizado!!
   movlw  HIGH $ + 2  
 
También exiten dos directivas mas al ensamblador que trabajan en forma similar
estas son para manejar codigos relocalizables (MPLINK), pero también andan en
codigo absoluto, estas son, Pagesel y Pageselw la primera retoca solo los bits del registro
PCLATH la segunda lo carga completo como con movlw  HIGH Tabla, ejemplo :
 
    Pagesel Tabla
o
   Pageselw Tabla
 


Nestor A. Marchesini
Chajari-Entre Rios-Argentina
ICQ # 50983752 nick colo
nestorm@bitbyte.com.ar
http://www.deselectronica.com.ar

Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado valtasarr

  • PIC10
  • *
  • Mensajes: 12
RE: paginas del F84 (PicListLatina)
« Respuesta #1 en: 02 de Mayo de 2004, 15:36:00 »
Ya muy interesante esto aclara un poco mis dudas y sobre todo mi problema ahora bien, como hago yo para hacer un call o un goto a una etiqueta que por cantidad de codigo a sido situada en otra pagina? Es un 16F877. El Mplab me da el error de "Crossin page boundary,Ensure that bits are set" que parece ser que hay que poner no se que para que la llamada sea posible a esa direccion del programa. Para ello parece que hay las instrucciones lcall y lgoto y entiendo que con esto el Mplap pone esos bits. Haciendo esto el mensaje del Mplab ya no es el mismo y me dice que Setting page bits. Pero el resultado es el mismo, todo va bien asta que se hace la llamada y hay es cuando se va todo al carajo el pic se vuelve loco, hace lo que le dala gana y se resetea volviendo al inicio. Es cierto que en esa etiqueta se vuelve a llamar a rutinas de la pagina cero, sera que hay que volver a poner esos bits , cual sera el valor de esos bits? Por favor si alguien tiene un ejemplo de esto que me lo pase porfa que estoy parao, llevo una semana que no puedo crear y es que lo que mas me gusta de estos chismes es eso la opcion de la creatividad para realizar cualquier tonteria. Poder crear.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: paginas del F84 (PicListLatina)
« Respuesta #2 en: 03 de Mayo de 2004, 06:04:00 »
Esno es un mensaje de error, es una advertencia, si miras bien dice Warning, antes del mensaje...
Puedes compilar sin problemas...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado valtasarr

  • PIC10
  • *
  • Mensajes: 12
RE: paginas del F84 (PicListLatina)
« Respuesta #3 en: 03 de Mayo de 2004, 09:17:00 »
No se si esatre haciendo mal pero por lo menos a mi lo que pone es mensaje no warning. Ahora no me acuerdo pero tiene numero y todo y creo que es el 307 o 306, bueno el caso es que es un mensaje el cual no indica en si un error sino que tenga el guenta los bits de pagina  y ese es mi problema que no se usarlos, ni entiendo muy bien para que sirven.

Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: paginas del F84 (PicListLatina)
« Respuesta #4 en: 09 de Octubre de 2004, 22:39:00 »
   puede ser que de todo esto haya entendido algo... estoy con un programa para un pic F877... el programa es extenso, pesa unos 6K y la memoria total del pic es de 8k... ahora bien, yo hice rutinas y llamadas a las mismas, pero en ningun lugar le especifico el banco donde se encuentra... compilo y  me tira 0  errores y 89 warning... pregunta... ES NECESARIO ESPECIFICAR EL BANCO PARA QUE BUSQUE UNA RUTINA????.... EL MPLAB LO HACE AUTOMATICAMENTE???... PORQUE LOS PIC NO SON COMO LOS MOTOROLA... EN LOS MOTOROLAS NO EXISTEN BANCOS, ES TODO DE CORRIDO... Espero me hayan entendido, Gracias por las respuestas futuras  

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: paginas del F84 (PicListLatina)
« Respuesta #5 en: 13 de Octubre de 2004, 06:07:00 »
Hola Jonnyman,

Mira, haciendo un resumen muuuuuy resumen, la diferencia principal entre un microprocesador motorola y un pic es su arquitectura:

MOTOROLA: basados en arquitectura Von-Neuman
* Programa y datos son almacenados en la misma memoria principal. Es decir, los datos, programa, E/S, timers comparten el mismo espacio de memoria.
* Tienen un único bus de datos.

PICS de MICROCHIP: basados en arquitectura Harvard
* Bus de datos y bus de instrucciones separados.
* Direccionamiento separado para datos e instrucciones


Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: paginas del F84 (PicListLatina)
« Respuesta #6 en: 14 de Octubre de 2004, 10:52:00 »
SALUDOS!!... es cierto q el 877 tienen 8k de memoria de programa, pero dividida en 4 paginas... lo q hace muy engorroso la programacion de software mayores a 2k ya q cada pagina es de ese tamaño, las paginas son la 0,1,2 y 3, lamentablemente el 877 no direcciona directamente a las paginas 1,2 o 3 hay q setear unos bits que tiene el pclatch para poder cabiarse de pagina lo q lo hace mas engorroso aun.... pero hay una forma muy sencilla de conseguir el acceso a estas paginas, es importante saber que si una rutina esta an la pagina 2 y es llamada de la pagina 0 culakiera otra q no sea la pagina donde la ruitna se encuentra el micro se reiniciara o no arrancara... lo que yo hago es colocar las rutinas mas largas y las tablas en la pagina 1,2,3 segun necesite espacio, y tratar en lo maximo q el cuepro principal del programa y las rutinas mas usadas tales los retardos y dato y control de la lcd en la pagina 0... para colocar las rutinas en una pagina selecionada lo haces con la directiva ORG XXXXH las X representan el inicio de la pagina y debajo de eso colocas lo q kieras de esa manera ya estas poniendo el codigo en el lugar q kieres... ahora el problema esta en q si yamas a una rutina que se encuentra en la pagina 2 por ejemplo es dificil determinar en dodne se encuetra para cambiarte de pagina y ademas de eso esa posicion va estar variando segun vayas programando asi q hay 2 instrucciones muy comodas q hacen todo el trabajo que son PAGESEL y LCALL....
PAGESEL(SELECIONA PAGINA)
LCALL(LONG CALL O LLAMADO LARGO)
ejemplo:

voy a llamar una rutina que no esta en pagina 0  desde la pagina 0, tampoco se donde esta ubicada la rutina, la rutina se llama EJEMPLO
PAGINA 0

                   PAGESEL        EJEMPLO
                   LCALL            EJEMPLO
                   ;continua progrmanando


ORG       XXXXH;(COLOCA LAS RUTINAS EN OTRA PAGINA)

RUTINA
....
....
.....
RETURN


RUTINA
.....
...
RETURN

EJEMPLO    MOVLW          "H";carga el ascii de H en el acumulador
                  RETURN
espero te ayude!!!!!!!!!!!!



Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: paginas del F84 (PicListLatina)
« Respuesta #7 en: 14 de Octubre de 2004, 15:44:00 »
Sino te encuentras comodo con nuestros amados PICs, te recomiendo la linea 18Fxxx que tiene el sistema de pagina unica de MotorHola.

Estuve a punto de escribir Chotorola, je..je..
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: paginas del F84 (PicListLatina)
« Respuesta #8 en: 15 de Octubre de 2004, 15:54:00 »
   Muchas gracias por esas respuestas... son de inmensa ayuda ... ahora una pregunta, decias:

muy comodas q hacen todo el trabajo que son PAGESEL y LCALL....

Esas instrucciones, porque no estan en el repertorio de instrucciones del PIC??? ... programo el F877 y ahora entiendo porque mi problema en un programa de 6 k de memoria... al parecer es el tema de que las rutinas que tengo estan en lugares diferentes... lo voy a solucionar usando lo que me has otorgado, pero la duda es esa... dime... las instrucciones PAGESEL y LCALL funcionarian en cualquier PIC??? ... Gracias por la respuesta y Saludos!

Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: paginas del F84 (PicListLatina)
« Respuesta #9 en: 15 de Octubre de 2004, 19:48:00 »
Bueno lo q pasa es que en realidad no son instrucciones... son directivas que generan un codigo preprogramado osea una rutina q hace el cambio de pagina tal cual si tu programaras esa rutina y la yamaras a cada rato.... asi como esas hay muchisimas estan las directivas banksel, bankisel, if, then , else, code, udata, idata, tambien estan las directivas para los macros!!!! y otras mas..  y por supuesto q todas funcionan con todos los PIC´s de todas las series... un detaye q se me paso con el 877 a veces la directiva LCALL se pega no en todos los casos pero si esto sucede no lo uses... solo pon un CALL normal!!!!.....

Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: paginas del F84 (PicListLatina)
« Respuesta #10 en: 16 de Octubre de 2004, 07:49:00 »
   Muchisisimas gracias hombre "x" ... no tienes nick que te identifique o no veo cuan sea ... ahora una preguntita mas para rematar con todo... Decias:

asi como esas hay muchisimas estan las directivas banksel, bankisel, if, then , else, code, udata, idata, tambien estan las directivas para los macros!!!! y otras mas..

Existe algun documento que aclare y muestre todas las directivas existentes para PICs... si no entendi mal, esas son directivas del MPASM... corrigeme si me equivoco... Esas directivas, explicadas y detalladas, existen en algun documento... tu como las conociste?.. si conoces alguna web que contenga la info, podrias compartirla conmigo... Desde ya muuuuchisimas gracias y un abrazo desde Arg. Entre Rios! ... GRACIAS CHAMIGO!

Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: paginas del F84 (PicListLatina)
« Respuesta #11 en: 16 de Octubre de 2004, 10:05:00 »
OK.... bueno me contenta que te haya servido mi ayuda.... si son directivas del mpasm y te voy a enviar el documento en un mensaje privado ya q he intentado subir varios archivitos muy utiles y hasta ahora no he podido pórq me dice q no tengo espacio y los archivos son menores a 100k.... por cierto mi nick en PWRINVITRO lo q pasa es q segun me explico TODOPIC tienen un problema con los nuevos usuarios y no aparece el nick... la verdad yo ni cuenta me habia dado.... de todas maneras en mi firma dice mi nick tambien!!!    SUERTE!!!!

Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: paginas del F84 (PicListLatina)
« Respuesta #12 en: 16 de Octubre de 2004, 10:58:00 »
Ahh!!... pense que te habias puesto un nock sin texto ... Agradesco toda tu ayuda y esperare ansioso el documento que mensionas... Quisiera invitarte a que veas unos posts nuevos que he publicado en el foro... son algunas dudas que tengo con respecto a codigo... talves tengas las respuestas a varias de mis preguntas... Gracias nuevamente y Saludos!

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: paginas del F84 (PicListLatina)
« Respuesta #13 en: 03 de Diciembre de 2004, 07:38:00 »
Hola a todos, soy bastante nuevo en esto, pero me parecio muy util esto de tener las directivas que comentan explicadas, por eso me gustaria si alguien puede enviarme ese archivo al que hace referencia PWRINVITRO, necesito leer todo lo que haya sobre pics e instrucciones para avanzar un poco.

Gracias de antemano.
Pueden enviarmelo al correo privado o a djjgalizia@yahoo.com.ar

Saludos
Dalocorio

Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: paginas del F84 (PicListLatina)
« Respuesta #14 en: 26 de Diciembre de 2004, 20:52:00 »
   Hola Dario, te envie el archivo a tu correo. Saludos y Felices Fiestas!!! PayasoRebotadoNavidadmuñeco de nieveFumador


 

anything