Hola Harrisón,
en realidad no es complicado, yo uso PicBasic PRO y Proton IDE, y en estos compiladores es muy sencillo usando el comando I2Cout Dpin, Cpin, Control, { Address }, [ OutputData ] en Proton puedes escribir el dato; por ejemplo:
Device = 16F819
Xtal = 4
All_Digital= TRUE
Symbol SDA = PORTA.0
Symbol SCL = PORTA.1
Dim seco As Byte ;definir tamaño de variable segundos 1 a 255
Dim minu As Byte ;variable para los minutos
Dim hour As Byte ;variable para las horas
Dim dayW As Byte ;variable día de la semana
Dim dayM As Byte ;variable día fecha del mes
Dim month As Byte ;variable mes
Dim year As Byte ;variable año de 2 dígitos
Dim ctrl As Byte ;variable para control
grabarRTC:
seco = $00 ;setear 00 segundos
minu = $30 ;setear 30 minutos
hour = $13 ;setear las 13 horas
dayW = $2 ;setear día lunes, D=1, L=2, M=3, M=4, J=5, V=6, S=7
dayM = $22 ;setear día 27 del mes
month = $7 ;setear mes septiembre
year = $14 ;setear año 04
ctrl = $10 ;control %00010000 para encender el led conectado en SQW/OUT cada 1 seg.
I2Cout SDA, SCL, %11010000, 0, [seco, minu, hour, dayW, dayM, month, year, ctrl]
DelayMS 10 ;retardo para finalizar grabación
end
Como te das cuenta, empieza a escribir a partir de la dirección de memoria 0 hasta el 7, es deccir, el dato seco se escribe en 0, minu en 1 ... y ctrl en 7.
Aunque puedes escribir uno por uno:
I2Cout SDA, SCL, %11010000, 0, [seco]
I2Cout SDA, SCL, %11010000, 1, [minu]
I2Cout SDA, SCL, %11010000, 2, [hour]
I2Cout SDA, SCL, %11010000, 7, [ctrl]
Una disculpa pero no manejo Arduino y ni el compilador Flowcode, pero me imagino que hay una función o código que haga algo parecido...
Otro detalle es sobre la salida SQW/OUT es que es de colector abierto...
Saludos.