Bien ya se porque me ocurre un problema, pero no se como resolverlo. CUando pulso una tecla de las que esta en lacolumna que lee RB2 que es la misma de la que cuelga el RW del LCD, este entiende que ordeno leer y y entra en conflicto con el teclado y me tira el programa.
Aparte no se porque el Proteus solo corre el programa con el esquema que adjunto y lee 000 de la eeprom, aunque en el fichero .bin hay otros datos.
Si lo miras bien estan las lineas SLC y SDA cambiadas con respecto a la libreria pero si las pongo como corresponde no lee nada.
PEgo el esquema de Proteus y las rutinas principales
#include <16f84.h>
#use delay(clock=4000000,RESTART_WDT)
#use fast_io(A)
#use fast_io(B)
#fuses XT,NOWDT
#include <kbd2.c>
#include <lcd.c>
#include <2432.c>
#define MAX 3
main()
{
int dato_read;
int n;
char k;
EEPROM_ADDRESS direccion;
lcd_init(); // Inicializar LCD
init_ext_eeprom();
lcd_gotoxy(1,1);
lcd_putc("Tecla pulsada:"
;
while(1)
{ lcd_init();
lcd_gotoxy(1,1);
lcd_putc("Tecla pulsada:"
;
k = kbd_getc(); // Leer tecla.
if(k) // si no ha devuelto 0
{
lcd_gotoxy(15,1);
lcd_putc(k); // Visualizar la tecla pulsada en el LCD.
}
delay_ms(2000);
lcd_init();
lcd_gotoxy(1,2);
for (n=0;n<MAX;n++)
{
dato_read = read_ext_eeprom(n);
printf(lcd_putc,"%u",dato_read);
delay_ms(2000);
}
}
}
La libreria de KBD2 esta arriba.
La 2432.c solo esta modificada para usar los pines A
#define EEPROM_SDA PIN_A0
#define EEPROM_SCL PIN_A1
Observa que esta al reves que en el Proteus
y la LCD.c asi esta modificada
#define use_portb_lcd TRUE
respeto en LCD los pines del puerto B como vienen en la libreria.
No me deja subir el esquema de proteus, dice que es demasiado grande, como puedo subirlo?