Hola estimados. Tengo un problema al mostrar una variable unsigned int16 en un LCD.
Lo que hace el código es sumar 4 variables (5 a 200) de tipo unsigned int8 y lo guarda en una unsigned int16.
Al querer imprimirlo en un LCD 2x16, solo muestra las sumas de valores inferiores a 256, al ser valores superiores a este, se imprimen otros números. Por ejemplo: cuando todas las variables unsigned int8 son 200, la suma de la misma guardada en la variable unsigned int16 debería ser 800, pero el LCD muestra 32.
¿A qué se debe este problema?.
De antemano, muchas gracias.
El código resumido es:
void main ()
{
....
unsigned int16 tic = 2000;
unsigned int8 md_1 = 5;
unsigned int8 md_2 = 5;
unsigned int8 md_3 = 5;
unsigned int8 md_4 = 5;
.....
lcd_gotoxy(1,1);
printf(lcd_putc, "%lu", tic);
lcd_gotoxy(1,2);
printf(lcd_putc, "%u %u %u %u", md_1, md_2, md_3, md_4);
.....
def_par( &md_1, &md_2, &md_3, &md_4); //Función para obtener valores de 5 a 200
tic = md_1 + md_2 + md_3 + md_4; // Suma los valores y lo almacena en tic
.....
}
Lo que hace el código es sumar 4 variables (5 a 200) de tipo unsigned int8 y lo guarda en una unsigned int16.
Al querer imprimirlo en un LCD 2x16, solo muestra las sumas de valores inferiores a 256, al ser valores superiores a este, se imprimen otros números. Por ejemplo: cuando todas las variables unsigned int8 son 200, la suma de la misma guardada en la variable unsigned int16 debería ser 800, pero el LCD muestra 32.
¿A qué se debe este problema?.
De antemano, muchas gracias.
El código resumido es:
void main ()
{
....
unsigned int16 tic = 2000;
unsigned int8 md_1 = 5;
unsigned int8 md_2 = 5;
unsigned int8 md_3 = 5;
unsigned int8 md_4 = 5;
.....
lcd_gotoxy(1,1);
printf(lcd_putc, "%lu", tic);
lcd_gotoxy(1,2);
printf(lcd_putc, "%u %u %u %u", md_1, md_2, md_3, md_4);
.....
def_par( &md_1, &md_2, &md_3, &md_4); //Función para obtener valores de 5 a 200
tic = md_1 + md_2 + md_3 + md_4; // Suma los valores y lo almacena en tic
.....
}