Hola amigos vuelvo a dar guerra que raro!! tengo una memoria 24lc1025 la borro le grabo valores y luego me vuelve los numeros pares bien y los impares con valor de 255, nisiquiera los borro alguna sugerencia??
#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)
#include <ctype.h>
#include <string.h>
#define eep_escribir 0b10100000 //Primeros 512kas
#define eep_leer 0b10100001
#define eep1_escribir 0b10101000 //Primeros 512kas
#define eep1_leer 0b10101001
int const longitud=4;
char rcvchar=0x00;
int xbuff=0x00;
char cbuff[longitud];
#int_RDA
void serial_isr()
{
rcvchar=0x00;
if (kbhit())
{
cbuff[xbuff++]=getc();
if (xbuff>longitud)
xbuff=longitud;
}
}
int dato=0,AUX,i=0;
long int direccion=0,direccion1=0;
short int status;
void main()
{
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_LOW|-2);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
i2c_start();
i2c_write(eep_escribir);
i2c_write(direccion1>>8);
i2c_write(direccion1);
while (direccion1<6400 )
{
i2c_write(0);
delay_ms(5);
i2c_stop();
direccion1++;
}
direccion1=0;
i2c_start();
i2c_write(eep1_escribir);
i2c_write(direccion1>>8);
i2c_write(direccion1);
while (direccion1<6400 )
{
i2c_write(0);
delay_ms(5);
i2c_stop();
direccion1++;
}
while (1)
{
if (direccion<64000 )
{
printf("%u ",i);
i2c_start();
i2c_write(eep_escribir);
i2c_write(direccion>>8);
i2c_write(direccion);
i2c_write(i);
delay_ms(100);
i2c_stop();
i++;
direccion++;
}
while (cbuff[0]=='a'&& cbuff[1]=='0')
{
disable_interrupts(INT_RDA);
printf("valor\r");
direccion=0;
WHILE (direccion!=6400)
{
for (AUX=0; AUX<8; ++aux)
{
i2c_start();
i2c_write(eep_escribir);
i2c_write(direccion>>8);
i2c_write(direccion);
i2c_start();
i2c_write(eep_leer);
dato=i2c_read(0);
i2c_stop();
printf("%u ",dato);
direccion++;
}
printf("\r");
}
strcpy(cbuff," ");
xbuff=0;
enable_interrupts(INT_RDA);
}
}
}
muchas gracias compañeros