haber, nose si te fijaste pero este micro no tiene ningun puerto completo de 8 bits, solo estan del 0 al 5, osea 6 bits, que es suficiente para 4 bits de datos y 2 de control y el r/w a gnd, es correcto esto verdad??
ahora en la libreria esto esta bien?:
struct lcd_pin_map {
BOOLEAN enable; // RC4
BOOLEAN rs; // RC5
BOOLEAN unused1; // RC6
BOOLEAN unused2; // RC7
int data : 4; // RC0-RC3
} lcd;
en la siguiente parte estoy cambiando el puerto d por el c:
#if defined use_portb_lcd
...
#else
//#locate lcd = getenv("sfr:PORTC") // This puts the entire structure over the port
#ifdef __pch__
#locate lcd =
0xf82 #else
#locate lcd =
7 #endif
#define set_tris_lcd(x) set_tris_c(x)
#endif
despues viene esto, que cambios hago aca, porque no hice ningun cambio, me parece uqe es la dimension del LCD?:
#ifndef lcd_type
#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#endif
#define lcd_line_two 0x40 // LCD RAM address for the second line
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
y ahora para la funcion por ejemplo:
void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}
como hago para que el dato nibble (4 bits) se vaya a la parte menor del puerto?, roto? o que? creo que roto, no?
weno, seguire haciendo ello cuando vuelva, jeje, ya toy de salida, haber si lo logro...
que significa: int data : 4;
y esto?: lcd.data = n;
que coloca los datos desde el pin 4?
un saludo
