Hallo
Der Gedanke mit den Funktionen ist schonmal gut.
z.B.
read_byte
Übergeben wird die Adresse die du lesen willst, zurück bekommst du den
Wert der Speicherstellen.
Wie kriegst du jetzt das Byte auf den Pin?
Variable "adresse" enthält jetzt zum Beispiel 129= &B1000 0001. Damit
wirst du die erste Speicherstelle im RTC, in diesem Fall die Sekunden
auslesen.
Wie du auf Seite 9 im Datenblatt siehst, wird das LSB zuerst ausgegeb
en.
Du mußt jetzt eine Schleife programmieren, um alle 8 Bit der Variablen
"adresse" auszugeben. Bei jedem Durchlauf prüfst du jetzt, ungefähr
so
read_byte(bla bla )
set clk low
set RST low
wait 1 ms
set RST high
Schleifenanfang
set IO high
Jetzt prüfen, ob lsb von adresse low
wenn ja, dann set IO low
wait 1 ms
set CLK high
wait 1 ms
set CLK lowob, ob das LSB in "Adresse" gesetzt ist oder nicht und
setzt entsprechenden deinen PIN IO high oder low.
jetzt Adresse eine Stelle nach rechts schieben, damit das nächste Bit
nach LSB rutscht
Und das ganze 8 Mal für 8 Bits.
Die Zeiten habe ich einfach mal so angenommen. Und dann mußt du ja noch
die 8 Bits vom RTC einlesen. Läuft genauso, du mußt halt nur den IO auf
Eingang schalten und nach dem CLK Low prüfen ob IO LOW oder High. Und
die die BITs natürlich in eine Variable schieben.
Nach den 8 Bits einlesen RSTB wieder auf LOW und fertig.
Schau doch mal in der Codesammlung nach I2C Routinen in C. Schau Dir da
mal genau an, wie die die Routinen write_byte oder Read_byte
geschrieben haben. Da kann man viel lernen und sogar entsprechenden
anpassen.
MFG Dieter