Hola,alguien me podria decir si el siguiente problema tiene alguna solucion:
#include <16f877a.h>
#fuses XT,NOPROTECT,PUT,BROWNOUT,NOLVP
#use delay(clock=4000000)
#include <flex_lcd.c>
#include <stdlib.h>
#use standard_io(b)
#byte portb=6
#define columna1 !input(PIN_B4)
#define columna2 !input(PIN_B5)
#define columna3 !input(PIN_B6)
//#define columna4 !input(PIN_B7)
char teclas[3];
char buffer=0;
int a;
int32 Buffer_ent=0;
char leer_teclado(void)
{
while(1)
{
portb=0b1110;
if(columna1){ while(columna1); return '1';}//Saca un 1 y no hace nada mientras se mantiene oprimido el pulsador
if(columna2){ while(columna2); return '2';}
if(columna3){ while(columna3); return '3';}
//if(columna4){ while(columna4); return 'F';}
portb=0b1101;
if(columna1){ while(columna1); return '4';}
if(columna2){ while(columna2); return '5';}
if(columna3){ while(columna3); return '6';}
//if(columna4){ while(columna4); return 'E';}
portb=0b1011;
if(columna1){ while(columna1); return '7';}
if(columna2){ while(columna2); return '8';}
if(columna3){ while(columna3); return '9';}
//if(columna4){ while(columna4); return 'D';}
portb=0b0111;
if(columna1){ while(columna1); return '*';}//o 'A'
if(columna2){ while(columna2); return '0';}
if(columna3){ while(columna3); return '#';}
//if(columna4){ while(columna4); return 'C';}
}
return 0;
}
main()
{
set_tris_b(0xf0);
port_b_pullups(TRUE);
lcd_init();
lcd_putc("Convirtiendo un\nbuffer en entero");
delay_ms(2000);
lcd_putc("\f");
while(1)
{
while(buffer<=3)
{
teclas[buffer]=leer_teclado();
Buffer_ent=atoi32(teclas);
printf(lcd_putc,"%c\nBuffer_ent=%02ld",teclas[buffer],Buffer_ent);
++buffer;
if(buffer==1)lcd_gotoxy(1,2);
if(buffer==2)lcd_gotoxy(1,3);
}
buffer=0;
lcd_gotoxy(1,1);
}
}
Convierto lo q hay en un buffer en un entero y lo muestro en el LCD,lo que quiero hacer es q la variable buffer_ent se actualice cada vez que se oprima una tecla y lo hace pero no se muestra en la parte de arriba del LCD sino solo el primer digito de este entero,tiene algun arreglo?