Im Register Adr.00h (Sekunden) Bit 7 mit der Bitkennung CH ist wohl dafür verantwortlich. Es ermöglicht eine Sparsparfunktion und ist beim ersten Einschalten gesetzt. Also eine Init-Routine schreiben und nur dieses Bit auf 0 setzen. Ich habe es in Assembler so gemacht:
Ds1307_Init: mov b,#00h
lcall i2c_Ds1307_rd
anl a,#7fh
mov b,#00h
lcall i2c_Ds1307_wr
mov b,#02h
lcall i2c_Ds1307_rd
anl a,#3fh
mov b,#02h
lcall i2c_Ds1307_wr
mov a,#10h
mov b,#07h
lcall i2c_Ds1307_wr
ret
Funktioniert auf an Hieb. Viel Erfolg
Lesezeichen