OK.. I got data back on I2C from the 18F2525! Different than the 877, but perhaps some of what I just figured out will help you...

I am using 24LC512 units, I have two chips wired for addressing as follows:

Chip1 - A0=0,A1=0,A2=0
Chip2 - A0=1,A1=0,A2=0

So, the chips can now be called as follows:

Chip1 con %10100000 ' address of chip1
Chip2 con %10100010 ' address of chip2

' -----[ Program Description ]---------------------------------------------
' EEPROM PIN EEPROM PIN NAME PIC PIN MISC
' EEPROM.1 A0
' EEPROM.2 A1
' EEPROM.3 A2
' EEPROM.4 Vss
' EEPROM.5 SDA SDA RC4 DPIN - data
' EEPROM.6 SCL SCL RC3 CPIN - clock
' EEPROM.7 WP
' EEPROM.8 Vcc

Using a setting I THINK is appropriate for this PIC for the I2C master setting from the spec sheets. (I don't know if this is rigth or not, but it seems to be working..)

SSPCON1 = %11011100
SSPCON2 = %01111000

Using RC3, RC4 on the PIC as SLC and SDA:
DPIN var PortC.4 ' I2C data
CPIN var PortC.3 ' I2C clock

My calls then look like this:

I2cwrite DPIN, CPIN, Chip1, address,[$02,$47,STR SSMAX\34],failw

-- and --

I2cread DPIN, CPIN, Chip1, address,[STR SSOUT\36],failr

And it is working well! If you can't get it working, check the MCP sheet for the pic, and look for the register settings for the IC2..

TG