Thanks Mel for your example
This is the first time i have tried the example out , but i am running into problems .
because the example was for an I2C eeprom and i had a 24lc128
i decided to tried and copy the the first ten words that were store in the eeprom starting at address 10 to address 28 which contains the following sequence

Eprom Values
****************************************
Addr10 500
Addr12 600
Addr14 700
Addr16 800
Addr18 900
Addr20 1000
Addr22 1100
Addr24 1200
Addr26 1300
Addr28 1400

but i am getting the following results
Addr10 5125
Addr10 30725
Addr10 62465
Addr10 22530
Addr10 48130
Addr10 8195
Addr10 33795
Addr10 59395
Addr10 19460
Addr10 45060
Addr10 5125

using my pragram below


DEFINE LOADER_USED 1 ' uses a bootloader
Include "Modedefs.Bas"


Define OSC 20
clear

' Setup Hardware for uart
DEFINE HSER_BAUD 19200
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_CLROERR 1

@ device pic16F877, HS_osc, wdt_off, pwrt_on, protect_off

' Hardware Defines
' ----------------

SCL VAR PORTC.3 ' I2C clock pin
SDA VAR PORTC.4 ' I2C data pin

' Software Defines
' ----------------
' ** Declare the Variables **
Temp VAR WORD ' General Purpose
Data_Out VAR WORD ' Data read from the Eeprom
Data_In VAR WORD ' Data written to the Eeprom
address VAR WORD ' Address

' added Software Defines
' ----------------

DataW var WORD [30] ' Array big enough for your needs
I2Caddress var BYTE ' Device Address
MessageAddress var WORD
' Starting Address of Data in external EEPROM
MessageLen var BYTE
' Number of WORD Array Elements to load (Min=1, Max=128)
TempA var BYTE ' Temporary BYTE Counter
TempB var BYTE ' Temporary BYTE Counter
TempC var BYTE ' Temporary BYTE Counter
TempW var WORD ' Temporary WORD Variable

index var byte '
'
' Initialise Hardware
' -------------------
ADCON1=7
TRISA=%00000000
TRISB=%00000000
TRISC=%10000000
TRISD=%00000000


Data_Out=0: Data_In =0: Temp =0


'WRITE SUB
'=======
for address = 0 TO 98 STEP 2 ' Loop 50 times
Data_In =Temp ' Data_In is data for EPROM
I2CWrite SDA,SCL,%10100000,address,[Data_In] ' Write each 2 location
Pause 10 ' Delay 10ms after each write
Temp =Temp + 100
Next address

HSerout [" Eprom Values " ,10,13]
HSerout [" ****************************************" ,10,13]


loop:

'This is all you need in your program each time you want to acquire a message....

MessageAddress=10 ' Starting address for data
MessageLen=10 ' Remember this is the number of WORDS to load
Gosub GetwordData ' Load from EEPROM into WORD array


'READ SUB
'=======

for index = 0 to 9
'HSerout [" Addr" ,dec address," ", dec Data_Out,10,13]
HSerout [" Addr" ,dec MessageAddress," ", dec DataW(index) ,10,13]


Pause 1000
next index
GoTo loop

End

i know i must be doing something wrong
Could you help ?

Toni