TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: angel esahu en 12 de Noviembre de 2007, 17:18:18
-
que tal gente alguien podria ayudarme necesito saber como crear librerias ya he buscado pero
no he dado con el tema estoy programando en asembler un pic 16f pero cada que tengo un nuevo programa me veo an la necesidad de declarar los puertos segun los necesito me gustaris saber como pasar un programa.asm a programa.lib osea convertirlo en una libreria de antemano gracias
-
que tal gente alguien podria ayudarme necesito saber como crear librerias ya he buscado pero
no he dado con el tema estoy programando en asembler un pic 16f pero cada que tengo un nuevo programa me veo an la necesidad de declarar los puertos segun los necesito me gustaris saber como pasar un programa.asm a programa.lib osea convertirlo en una libreria de antemano gracias
Has leído el manual del MPASM, MPLINK y MPLIB? Allí explica paso a paso como hacerlo. Es importante que tengas nociones de programacion en relocatable mode.
-
habría que estudiar el verdadero significado de las librerias, puesto que la mayoría de las veces lo que se hace es redistribuir el programas en varios archivos .c, .h, .inc
-
Hola, lo que dice JCC40 es real, cada proyecto nuevo requiere seguramente incializaciones nuevas, no entendi muy bien lo que quiso decir PaliotroqueZ....
Saludos!
-
habría que estudiar el verdadero significado de las librerias, puesto que la mayoría de las veces lo que se hace es redistribuir el programas en varios archivos .c, .h, .inc
Las librerías se usan para funciones muy concretas y repetitivas, sino carecen de sentido. Pero 'existen'.
Si usas C18, alguna vez habrás usado un
#include <stdlib.h>
Pues bien, al hacer eso no estas leyendo el .h en realidad estás leyendo un stdlib.lib que dentro tiene el stdlib.h y todos los .c que componen la librería
Esto que logra? agilizar el proceso de compilación, se hace cientos de veces más rápido.
Pero como dije antes solo para algo que lo uses siempre.
Hola, lo que dice JCC40 es real, cada proyecto nuevo requiere seguramente incializaciones nuevas, no entendi muy bien lo que quiso decir PaliotroqueZ....
Si, es cierto pero también si uno escribe el código de cierta forma podrá tener portabilidad. De hecho las librerías de microchip tienen precondicionales en el código que permiten usar la misma librería para N diferentes tipos de pics. Si uno ve el código fuente podrá ver varios #ifdef ... #endif
-
Hola, permitanme disentir en algunos conceptos.
Las librerías se usan para funciones muy concretas y repetitivas, sino carecen de sentido. Pero 'existen'.
Las librerias se utilizan para "modularizar" y tambien facilitar el proceso de linkeo.
La modularización consiste en agrupar funcionalidad, ejemplo manejo de strings, etc, facilitar el proceso de linkeo, consiste en vez de estar incluyendo muchisimos archivos solo incluir el archivo de libreria correspondiente.
Si usas C18, alguna vez habrás usado un
#include <stdlib.h>
Pues bien, al hacer eso no estas leyendo el .h en realidad estás leyendo un stdlib.lib que dentro tiene el stdlib.h y todos los .c que componen la librería
Esto que logra? agilizar el proceso de compilación, se hace cientos de veces más rápido.
Un compilador C realiza basicamente 2 tareas:
1. Preprocesado, donde todos los archivos H y C son pegados en un solo archivo, las macros y los define son reemplazados por sus respectivos valores.
2. Ensamblado de este archivo, donde el compilador va traduciendo cada estructura C en su correspondiente codigo ASM
Cuando incluis un archivo header, lo que haces es instruir al compilador en macros, constantes (defines) y lo mas importante, prototipo de funciones, esto es avisarle al compilador como son los parametros, cual es el valor que retorna, y mas importante cual es el convenio de llamada que usa la funcion en si. El compilador propiamente dicho nunca sabes nada archivos lib.
El linker es el que toma todos los archivos compilados ( objetcs ) y los linkea en una imagen final, el input del linker son estos objects y aca si los archivos de libreria correspondientes.
Saludos !
-
Cuando incluis un archivo header, lo que haces es instruir al compilador en macros, constantes (defines) y lo mas importante, prototipo de funciones, esto es avisarle al compilador como son los parametros, cual es el valor que retorna, y mas importante cual es el convenio de llamada que usa la funcion en si. El compilador propiamente dicho nunca sabes nada archivos lib.
El linker es el que toma todos los archivos compilados ( objetcs ) y los linkea en una imagen final, el input del linker son estos objects y aca si los archivos de libreria correspondientes.
RICHI777 gracias por el aporte, de todas formas si revisas el contexto mi idea no era explicarlo con la profundidad de un manual sino simplemente explicar en palabras simples la diferencia de usar librerias (.lib) a usar el código fuente completo.
En el .lib están los headers y los .o, todo junto. Por eso el proceso es rápido y además recuerda la ubicación de donde estaba el código fuente de forma de que luego cuando simulas puedes ir viendo el código fuente.
Si uno hace un cambio en ese código fuente no cambiará nada en el funcionamiento del software porque no se reconstruyó la librería .lib
Un ejemplo empírico es usar la libreria XLCD con el pinout por default y compilar un proyecto. Luego copiar los fuentes al path local del proyecto y compilarlo ahi y verificar la diferencia en velocidad.
:) :)
Uno agrupa funcionalidades en un .lib pero cuando se trabaja con periféricos, con interrupciones y demases suele ser poco práctico usarlas ya que uno requiere hacer pequeñas modificaciones para no sacrificar perfomance o lo que sea. La portabilidad del código suele ir de la mano de una pérdida de perfomance. Cuando la perfomance es importante uno debe tocar los archivos uno mismo y allí es donde la portabilidad no lo es tal.
Las funciones que uno agrupe para un código pueden no reutilizarse 'exactamente igual' para otro y de allí su excaso uso.
-
Gracias a todos por la ayuda, ! Y vaya que son intresantes estos temas ! estoy un poco confundido con tantos terminos
pues soy nuevo en esto de la programacion ya que solo he realizado programas sencillos pero lo que no puedo negar
es que me han dado material suficiente como para ponerme estudiar, leer,investigar y demas; nuevamente Gracias a todos
por lo pronto ya se donde consultar sobre el tema y que es lo que tengo que leer solo espero que sigan ayudando con las dudas que voy teniendo :) :-)
-
Gracias a todos por la ayuda, ! Y vaya que son intresantes estos temas ! estoy un poco confundido con tantos terminos
pues soy nuevo en esto de la programacion ya que solo he realizado programas sencillos pero lo que no puedo negar
es que me han dado material suficiente como para ponerme estudiar, leer,investigar y demas; nuevamente Gracias a todos
por lo pronto ya se donde consultar sobre el tema y que es lo que tengo que leer solo espero que sigan ayudando con las dudas que voy teniendo :) :-)
Me parece excelente, y ojalá nunca pierdas la capacidad de asombro y de interés por cosas nuevas :)