Hi, Mike Blakey wrote: >Thanks for the interest Dale, You're right, I download and update the data table >from time to time, This 'will' be a end user operation via a laptop and rs232. >When the application is running the lookup needs to be VERY fast, or rather a low >overhead from receiving an interrupt, the EEDATA read is just too slow. Well as I see it you have little choice, ofcource it's possible to 'download' data into the programmem from eeram but I think it will cause more trouble than it's worth ( among other things, the program mem does *not* have as many write cycles as the eeram !! i.e. you will burn out the program mem fast if you do this every power cycle ) However might I suggest an non-portable :) solution to reading the eeram instead, assume the following: 1: At entry Bank2 is active 2: EECON1,EEPGD is set ( can be done at startup ) 3: FSR points to EECON1 4: We exit with Bank2 active Now, if this can be accomplished or not in your code is ofcource another matter, however if these conditions can be meet then you couls always do something like this: ; *********************************************************************** ; EE_READ_BYTE - Routine to read a byte from ee ram ; Adress in W, byte will be delivered in W ; Assume bank2 active at entry ; Assume FSR points to EECON1 ( in bank3 ) ( note STATUS,IRP = 1 ) ; exits with bank2 still active EE_READ_BYTE MOVWF EEADR ; put in adress reg. BSF INDF,RD ; set bit to read MOVF EEDATA,W ; move data to W RETURN ; and return Something around 3 instructions not counting the call/return. Not so bad :) This might be acceptable if several bytes are to be fetched from eeram and other use of FSR is not needed. Maybe something to 'work' on, /Tony -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.