si aqui esta:
#include <18f452.h>
#fuses hs,nowdt,noprotect,nowrt,nocpb,nowrtb,nocpd,noebtr,noebtrb
#use delay(clock=20M)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#define CK_FLASH_END (getenv("PROGRAM_MEMORY")-1)
#define CK_FLASH_PAGE_SIZE (getenv("FLASH_ERASE_SIZE")/2)
#define CK_NUM_PAGES (CK_FLASH_END/CK_FLASH_PAGE_SIZE)
#define CK_USER_PAGE (CK_FLASH_PAGE_SIZE*(CK_NUM_PAGES-1))
#org 28680,CK_FLASH_END {}
void main(){
int16 i;
int16 j;
unsigned int8 read_data[56];
unsigned int8 read_data2[56];
for(i=0;i<56;i++){
read_data =i;
read_Data2 =i+1;
}
//aqui grabo los datos
write_program_memory(28680,read_data,56);
read_program_memory(28680,read_data,56);
//aqui borro los datos y grabo otra vez los datos
erase_program_eeprom(28680);
write_program_memory(28680,read_data2,56);
read_program_memory(28680,read_data2,56);
delay_ms(10);
for(i=0;i<56;i++)
printf("%u\r\n",read_data2);
}
pasa lo siguiente, guardo los datos en una posicion y graba correctamente.
el problema viene cuando quiero guardar otros datos en la misma posicion, lo borro con la funcion erase_program_eeprom(), y lo vuelvo a grabar , pero ocurre que ya no graba sino que todo el bloque de memoria reservado se pone a 255.
es en simulacion, en proteus, ahi pude observar el estado de la memoria de programa