Hola
pues mira.. en el lcd.c hay un pin map, que se hace por medio de una estructura
#define set_tris_lcd(x) set_tris_d(x)
struct lcd_pin_map {
/*BOOLEAN enable;
BOOLEAN rs;
BOOLEAN rw;
BOOLEAN unused;*/ Comentar esto
int otro : 4; //Esto se hace para que puedas usar
int data : 4; // los primeros cuatro pines del puerto d
} lcd;
#byte lcd = 8 // pone la estructura sobre el puerto d
/*esto seria para usar las patillas de control del lcd en
el puerto a */
struc lcd_control_pin{
BOOLEAN sinuso;
BOOLEAN enable;
BOOLEAN rs;
BOOLEAN rw;
int otro : 2; //Ultimos dos pines porta libres
}lcd_cont;
#byte lcd_cont = 5 // Control sobre puerto a
struct lcd_pin_map const LCD_WRITE = {X,0};
struct lcd_pin_map const LCD_READ = {X,15};
//"X" significa para todas salidas un 0, para todas entradas un 15
// el valor "X" actua sobre el puerto d en los primeros cuatro pines
//incluye esto en el main para que los pines de control
//actuen como salidas
set_tris_a(0bX000XX00);
//Las "X" significa que si necesitas estos pines como entradas
//pues pones "1" y como salidas "0", los tres ceros seguidos son los
// pines de control
// ahora lo que tienes que modificar en las rutinas es por ejemplo:
BYTE lcd_read_byte() {
BYTE low,high;
set_tris_lcd(LCD_READ);
lcd_cont.rw = 1; //<-- aca cambias lcd.rw por esto
delay_cycles(1);
lcd_cont.enable = 1; //<-- aca igual lcd.enable
delay_cycles(1);
high = lcd.data;
lcd_cont.enable = 0; //<-- ACA
delay_cycles(1);
lcd_cont.enable = 1; //<--ACA
delay_us(1);
low = lcd.data; //<-- ACA NO
lcd_cont.enable = 0; //<-- ACA SI
set_tris_lcd(LCD_WRITE);
return( (high<<4) | low);
}
//Asi en todo el resto de rutinas
Esta no es la unica forma de modificar lcd.c.. para que funcione como lo necesitas... es solo una sugerencia
Espero te sirva..
Saludos