Machen wir es mal einfacher. Du willst nur einen Zähler abspeichern. Wie viel Speicher du hast ist da vollkommen egal. Um einen 16 bit int abzuspeichern brauchst du nur 2 Bytes. Und du weißt immer wo die stehen. Die ganzen 31 Bytes brauchst du dafür sowie nicht. Du würdest deinen int einfach immer auf den Adressen 0 und 1 abspeichern.
Du musst also erst mal deinen int in Bytes aufteilen. Da gibt es mehre Optionen. Aber am einfachsten geht es so:
int counter;
byte low = lowByte(counter);
byte high = highByte(counter);
Das kann man dann auch einfach in einem Array speichern, für den Fall das die RTC Lib ein Array als Parameter will:
int counter;
byte bytes[2];
bytes[0] = lowByte(counter);
bytes[1] = highByte(counter);
Und nach dem Auslesen wieder zusammensetzen geht so:
counter = word(high, low);
Da kommt es dann darauf an in welchem Format deine RTC lib die Daten will. Oft wird da ein Byte Array und dessen Größe übergeben. Auch beim Auslesen des RAMs. Man erstellt dann einen Puffer und sagt der Funktion sie soll in beschreiben.
Als Adresse übergibt man die Anfangsadresse auszulesenden Bereichs.
Ich habe mir das selbst geschrieben und es so gemacht:
void DS1307RTC::setRAM(uint8_t rtc_addr, uint8_t* data, int size)
{}
Dann fülle ich einfach ein Array mit meinem Daten und übergebe die Start-Adresse (in deinem Fall 0), das Array und die Größe des Arrays (in deinem Fall 2).
Ein guter Weg mehrere Werte zu speichern ist einfach die Werte durch zu nummerieren:
RTC.setRAM(alarmNumber * ALARM_SIZE, data, ALARM_SIZE);
Bei meinem Programm ist ALARM_SIZE = 5. Dadurch wird alarmNumber 0 auf den Adressen 0-4 gespeichert. AlarmNumber 1 aber landet automatisch auf 5-9. AlarmNumber 2 ist dann 10-14, da 2 * 5 = 10, etc.
Aber da musst du wie gesagt mal deine RTC Lib anschauen. Das kann da auch anders sein! RAM Zugriff ist auch nicht bei allen Libs implementiert.
EDIT:
Ich nehme mal an die DS1302 fängt auch bei Adresse 0 an. Funktioniert nämlich etwa anderes wie bei den anderen RTCs. Das RAM fängt bei C0h an, aber es gibt einen speziellen "Burst Mode" um mehrere Zellen hintereinander anzusprechen. Und dafür fangen die Adressen explizit bei 0 an. Sowohl für RAM als auch die Clock Register.
Abgesehen davon setzten vernünftige Libs das intern um.
Verlinke mal zu deiner RTC Lib, dann kann man da auch genaueres sagen und dir genauen Code liefern