I assume you are going to use the software PICBASIC pro I2C commands and that you are using >4MHz system clock
the commands are two
I2CREAD DataPin,ClockPin,Control,{Address,}[Var{,Var...}]
I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]
Where datapin is the pic pin you are using to parse the data (SDA) and clockpin is the clock pin (SCL)
Control is the slaveaddress (first 7 MSB) + direction (R/W) (LSB 1=READ, 0=WRITE)
bit 1 of the slaveaddress is defined by the PIN A0 of the Si5351 (don't leave it floating if it doesn't have a pull-up or pull down)
Address is the position of the first byte do be written
and
[is the data]
http://melabs.com/resources/pbpmanual/I suggest to use SYMBOL to define the I2CCLOCK and I2CDATA pins
SYMBOL I2CDATA = < the port you connect to SDA >
SYMBOL I2CCLOCK = < the port you connect to SCL >
the slave address(es) for this device should be:
SYMBOL ADDRREAD = %11000001 'the A0 pin is pulled low
SYMBOL ADDRWRITE = %11000000 'the A0 pin is pulled low
Now you can setup and program the device by issuing those commands
I2CREAD I2CDATA,I2CCLOCK,ADDRREAD,{Address,}[Var{,Var...}]
I2CWRITE I2CDATA,I2CCLOCK,ADDRWRITE,{Address,}[Value{,Value...}]
for example, in order to disable
all the outputs of the device you should write to the register 3
I2CWRITE I2CDATA,I2CCLOCK,ADDRWRITE,3,[%0000000]
I would suggest, to have a clean code, easy to troubleshoot to use the SYMBOL statement to configure the registers you want to configure during the inizialization of the device
for example
'Addresses
SYMBOL Si5351_REG_2 = 2 ' Interrupt Status Mask
SYMBOL Si5351_REG_3 = 3 'output enable
.....
SYMBOL Si5351_REG_10 = 15 'whatever it does....
Putting here all the registers you are going to change
'values
SYMBOL Si5351_REG_2_VALUES = %00000000 ' SYS_INIT_MASK = 0 | LOL_B_MASK = 0 | LOL_A_MASK = 0 | LOS_MASK = 0
SYMBOL Si5351_REG_3_VALUES = %00000000 ' enabling all outputs
.....
SYMBOL Si5351_REG_10 = 15 'whatever it does....
then during initialization:
I2CWRITE I2CDATA,I2CCLOCK,ADDRWRITE,Si5351_REG_2,[Si5351_REG_2_VALUES]
I2CWRITE I2CDATA,I2CCLOCK,ADDRWRITE,Si5351_REG_3,[Si5351_REG_3_VALUES]
and so on!
Be careful to not change reserved registers or you will risk damage to your device! Whenever the reserved bits are only a part of a readable and writeable register you should first read it, change the bits that interest you, and them write it back to the device.
I don't know exactly how to configure and which registers to set but the datasheet contains the list of the registers and the function of individual bits
http://www.adafruit.com/datasheets/Si5351.pdfhave a nice day