Buenas de nuevo:
jordedalesp,hay varias maneras (como todo en programacion). Cada cual mas correcta o menos (segun lenguajes).
En lo que se refiere a C utilizado en micros, se suele utilizar mucho los #define para establecer parametros en las funciones. (Yo personalmente utilizaria parametros de funcion, pero eso yo).
Supongamos en tu caso la función send(). tiene dos parametros (caracter 1 y 2 del display). Pero tambien utilizas los globales definidos con #define.
Pues bien, una cosa que puedes hacer es comprobar si esta definida una global, y si lo esta, definir los parametros. Por ej:
archivo libreria.h
Código PHP:
#if defined(__USAR_SEND__)
#define PUERTO PORTB //Puerto
#define D RB0 //Linea de dato serie
#define CLK RB1 //Señal de clock
#define E RB2 //Señal de habilitacion del modulo SDA2131 (eneable)
void send(char pd, char sd); //Envio de par caracteres al display
#endif
char convertir(char comb); //Conversión de numero
#include "libreria.c"
en el caso de libreria.c
Código PHP:
#if defined(__USAR_SEND__)
void send(char pd, char sd){
const char mask1=1;
const char mask2=254;
char aux1=convertir(pd);
char aux2=convertir(sd);
unsigned short int dat= aux1*256+aux2; //Concatenar las variables tipo char
aux1=0;
aux2=0;
CLK=0;
E=1;
for (int i=0; i<16; i++){
aux1=PUERTO & mask2;
aux2=dat & mask1;
PUERTO=aux1 | aux2;
dat=dat>>1;
__delay_us(500);
CLK=1;
__delay_us(100);
CLK=0;
}
E=0;
return;
}
#endif
char convertir(char comb){
char aux=0;
switch (comb){
case 0: aux=0b10110111; break;
case 1: aux=0b00100100; break;
case 2: aux=0b01110011; break;
case 3: aux=0b01110110; break;
case 4: aux=0b11100100; break;
case 5: aux=0b11010110; break;
case 6: aux=0b11010111; break;
case 7: aux=0b00110100; break;
case 8: aux=0b11110111; break;
case 9: aux=0b11110100; break;
default: aux=0b11111111; break;
}
return aux;
}
Ahora, la función SEND solo se incluiria en tu proyecto si defines en tu main la bandera __USAR_SEND__
archivo main.c
Código PHP:
// inicializaciones anteriores... includes de pic.h, etc...
//
#define __USAR_SEND__ true
include "libreria.h"
// tu codigo fuente...
Fijate que la función convertir, la he dejado fuera del if. Entonces puedes incluir tu libreria.h en tu proyecto, y si no defines __USAR_SEND__ no se declarara en tu proyecto, pero la función convertir si.
Ojo: todo esto es a nivel teorico, no lo he probado con tu ejemplo
EDITO: una mejora de la libreria.h podria ser la siguiente:
Código PHP:
#if defined(__USAR_SEND__)
#if !defined(PUERTO) && !defined(D) && !defined(CLK) && !defined(E)
#define PUERTO PORTB //Puerto
#define D RB0 //Linea de dato serie
#define CLK RB1 //Señal de clock
#define E RB2 //Señal de habilitacion del modulo SDA2131 (eneable)
#endif
void send(char pd, char sd); //Envio de par caracteres al display
#endif
char convertir(char comb); //Conversión de numero
#include "libreria.c"
que pasaria ahora? pues que si en tu programa defines __USAR_SEND__ pero no defines PUERTO, D, CLK y E, entonces POR DEFECTO los declarara al entrar en el .h. Pero si los defines en tu main, entonces utilizará los que has definido...