Okay, I'll try this again... To read from my EEPROM inside the 'F628 I put the desired EE address in w and call 'ReadEE' (see code snippet). I'll confirm the value in address 0x00 of the EE space equal to 0xAA, and address 0x01 equal to 0x55 by looking at the EEPROM memory window. If I run at 4Mhz and read the two addresses one after the other, 'ReadEE' sends back 0xAA each time. If I step through the program using the ICE2000, I'll get the correct values: 0xAA, and 0x55. What gives? ReadEE BANK1 movwf EEADR ;Address to read bsf EECON1,RD ;EE Read movf EEDATA,w ;w = EEDATA BANK0 return Thanks, Tim Date: Fri, 22 Feb 2002 15:25:34 -0500 From: Olin Lathrop Subject: Re: [PIC]: 16F628 EEPROM revisited > If I read EEADR 0x00 and store it in a register it equals AA. Then if I > read EEADR 0x01 and store it in a register it also equals AA. If I step > through the program, EEADR 0x01 = 55. Just to test it, I put a 10uS delay > between reads - no change. Then I tried to read EEADR 0x00 then 0x04 - no > change. EEADR is just a RAM location in terms of reading/writing from the firmware. If you write AA to it, you will read AA from it. However, if have no idea what you mean by the phrase "read EEADR 0x01" verus "read EEADR 0x00. EEADR is at a fixed address specified by Microchip, and you can't control the value you *read* from a register, so this makes absolutely no sense to me. -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu