Ya probé el programa y la secuencia la hace bien, lo único que quedaría sería implementar el circuito para mostrarlo en el lcd. ¿Sugieres usar un codificador?
Listo terminé el programa, pero ahora me atoré en que me marca el siguiente error:
"Print format type is invalid"
Supongo que es porque int8 es un formato para las interrupciones, ahí tendría que guardarlo en otra variable? y después imprimirlo?
Anexo mi programa:
Ya lo solucioné, había que cambiar al final, en vez de:"printf(lcd_putc,"%02.1f",x); " había que poner :
printf(lcd_putc,"%u",x);
Pero sigue sin mostrarlo en el LCD, unicamente me marca los cuadros negritos.
¿Alguna idea de porque podría ser?
Listo terminé el programa, pero ahora me atoré en que me marca el siguiente error:
"Print format type is invalid"
Supongo que es porque int8 es un formato para las interrupciones, ahí tendría que guardarlo en otra variable? y después imprimirlo?
Anexo mi programa:
Código:
#include <16F628A.h>
#FUSES NOWDT, XT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD
#use delay(clock=4000000)
#include "lcd.c"
#byte porta = 0x05
#byte portb = 0x06
// ---------- Programa Principial ----------
void main()
{
port_b_pullups(FALSE); // Sin resistencias pullups a las salidas del puerto B.
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Al no usar el TIMER configuramos lo más básico.
setup_comparator(NC_NC_NC_NC); // Sin comparadores.
setup_vref(FALSE); // Al no usar comparadores no necesitamos Vref.
//---- Fin de la configuración del 16F628A ----
int8 x;
int8 enc;
int8 aux;
set_tris_a(0b11111);
set_tris_b(0b00000000);
portb=0;
x=0;
enc=0;
//iniciar el lcd
lcd_init();
lcd_putc("Bienvenido\n");
lcd_putc("Odometro\n");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("La distancia\n");
lcd_putc("Actual es\n");
delay_ms(2000);
lcd_gotoxy(14,2);
While (true)
{
lcd_gotoxy(8,2);
lcd_putc(" ");
lcd_gotoxy(8,2);
aux=enc;
enc=porta & 3;
If ((aux==2)&&(enc==3))
{
x++;
}
If ((aux==3)&&(enc==2))
{
x--;
}
portb = x;
printf(lcd_putc,"%02.1f",x);
delay_ms(1000);
}
}
Ya lo solucioné, había que cambiar al final, en vez de:"printf(lcd_putc,"%02.1f",x); " había que poner :
printf(lcd_putc,"%u",x);
Pero sigue sin mostrarlo en el LCD, unicamente me marca los cuadros negritos.
¿Alguna idea de porque podría ser?
Última edición por un moderador: