Una pregunta amigos,
Estoy intentando controlar una LCd standar 2x16, funciona sin problemas, pero estoy intentando lograr una libreria que se ANSI-c para empezar a aplicar con FreeRTOS. Sucede que tengo el bus de datos de la LCD en pines de diferentes puertos.
D0...E5
D1...E6
D2...E7
D3...F5
D4...G3
D5...A0
D6...A1
D7...A2
Mi intención es empaquetarlos de alguna manera que al programar se vean como si fuera un puerto nuevo creado por mi, de 8 bits. Sin tener que estar pendientes que son de diferentes.
Pensé que de alguna manera en una structura seria la solución, pero intente de varias formas y no creo saber como hacerlo.
CCS usa algo como esto:
typedef struct
{ // 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 LSB pin of that port.
} LCD_PIN_MAP;
Pero precisamente CCS no es ANSI-C y para empezar BOOLEAN ya no es compatible, entonces recordé este hilo, pero mis intentos son fallidos.
CCS creo ese nuevo tipo de dato, con el cual se vale para crear después esto:
// these definitions only need to be modified for baseline PICs.
// all other PICs use LCD_PIN_MAP or individual LCD_xxx pin definitions.
/* EN, RS, RW, UNUSED, DATA */
const LCD_PIN_MAP LCD_OUTPUT_MAP = {0, 0, 0, 0, 0};
const LCD_PIN_MAP LCD_INPUT_MAP = {0, 0, 0, 0, 0xF};
La verdad no se me ocurre manera de lograrlo. ¿Ustedes me pueden guiar por favor?
SALUDOS!