If what you want to do is to store from software control, this should work: /* Set up what and how to store */ EEADRH=0x10; // Address high 5 bits EEADR=0x00; // Addres low byte EEDATH=1; // Data high 6 bits EEDATA=2; // Data low byte EEPGD=1; // Select program memory /* Do the low-level stuff */ WREN=1; // Enable writes GIE=0; // No ints #pragma update_RP = 0 // Switch off RPx update RP0=0; RP1=0; // Set bank EECON2=0x55; // Required sequence (Check data book) EECON2=0xAA; // Required sequence (Check data book) WR=1; // Start write #pragma update_RP = 1 // Switch on RPx update nop(); // Ignored instruction GIE=1; // Ints on WREN=0; // Disable writes The pragma directive is important. If you omit the pragmas and your code contains RAM-events prior to the EECON2 storage that affect other banks than bank 3, the required EECON2 sequence will not be generated by the compiler. What it will do is something like this: - Load 0x55 in W - Set bank 3 - Store W in EECON2 This violates the sequence, and the controller core will not store anything. Dag Bakken MP> Hi all MP> I'm very new with the PIC. MP> Well I have looked at it a couple of times but it's first now that I have a MP> enviroment that works for me. MP> I'm programming the 877 in C (cc5x) MP> and I would like to store data in the flash memory. MP> Could anyone explain how I can store data in easy, low level format MP> so even I could understand it. MP> Regards MP> Michael Pettersson MP> -- MP> http://www.piclist.com hint: The list server can filter out subtopics MP> (like ads or off topics) for you. See http://www.piclist.com/#topics -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.