Hola, uso un LCD de 16x2 junto a un PIC 16F877A. El caso es q fisicamente lo tengo conectado así:
Enable -> E0
R/W -> E1
RS -> E2
y las líneas de datos a los 8 bits del port D
Veo q en la librería LCD.C en vez de usar 8 usa 4 bits, esto no es problema, aunque lo tenga conectado así uso 4 bits para la comunicación y ya está. El problema viene de q la structura "lcd_pin_map" no sé como mapearla sobre 2 puertos diferentes (el E y el D en mi caso) en vez de sobre un solo puerto (el B o el D q te da a elegir la rutina).
Os copio aquí la porción de código que creo hay q modificar a ver si alguien me puede ayudar:
-------------------------------------------
// #define use_portb_lcd TRUE
struct lcd_pin_map { // This structure is overlayed
BOOLEAN enable; // on to an I/O port to gain
BOOLEAN rs; // access to the LCD pins.
BOOLEAN rw; // The bits are allocated from
BOOLEAN unused; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;
#if defined(__PCH__)
#if defined use_portb_lcd
#byte lcd = 0xF81 // This puts the entire structure
#else
#byte lcd = 0xF83 // This puts the entire structure
#endif
#else
#if defined use_portb_lcd
#byte lcd = 6 // on to port B (at address 6)
#else
#byte lcd = 8 // on to port D (at address

#endif
#endif
#if defined use_portb_lcd
#define set_tris_lcd(x) set_tris_b(x)
#else
#define set_tris_lcd(x) set_tris_d(x)
#endif
-------------------------------
Como veis la variable lcd la envía al puerto B o D según queramos, y yo lo q necesito es enviar una parte al E (la de control) y otra al D (la de datos).
¿Ideas para no tener q rehacer la librería completa?