HOla que tal amigos, como se encuentran.... necesito una ayudita.... Estoy haciendo un programa de lectura y escritura de memoria, pero cuando lo simulo pues la memorioa me coloca un blanco cuando la mando a leer a pesar de estar mandando un 9 para que lo escriba y luego lo lea pero no lo hacve y no entiendo que es lo que estoy haciendo mal... Ya me habian advertido que trabajar con las memorias es una tarea ardua pero bueno decidi probar a ver que tal...
Aqui está el codigo:
#include <18f4550.h>
//Ajusta los valores de la palabra de configuración durante el ensamblaje:
//Protección de código y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT
#fuses NOPROTECT,NOCPD,NOLVP,NOWDT,XT
#use fast_io (C)
#use fast_io (D)
#use delay(clock=4000000)
//Habilita las funciones RS232, velocidad a 9600 baudios
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use I2C(master, sda=PIN_B0, scl=PIN_B1)
int puntero=1,temp,i,opcion=0,indicador=0;
int16 r;
void escribir(void);
void registro(void);
void main(void)
{ set_tris_d(0x07); //Puerta D Salida
set_tris_c(0xFC); //Puerta C entradas
while(true)
{
printf("\f");
printf("****************************************** \n\r");
printf(" ESCOJA UNA OPCION \n\r");
printf("(1)ESCRIBIR MEMORIA \n\r");
printf("(2)VER DATOS DE LA EEPROM \n\r");
printf("****************************************** \n\r");
opcion=getc();
switch (opcion)
{
case '1':
escribir();
break;
case '2':
registro();
break;
default:
printf(" ESCOJA UNA OPCION DEL 1 AL 2 \n\r");
delay_ms(1000);
break;
}
}
}
void escribir(void)
{ i2c_start();
i2c_write(0xA0);
i2c_write(0x00);
i2c_write(0x01);
i2c_write('9');
i2c_stop();
}
void registro(void)
{
i2c_start();
i2c_write(0xA0);
i2c_write(0x00);
i2c_write(0x01);
i2c_start();
i2c_write(0xA1);
r=i2c_read();
printf(" Valor: %c ",r);
i2c_stop();
delay_ms(3000);
}
Atte: Enigma... La llanerita de Guayana