;******************************************************************************* ;* ;* Titel: Unterprogramm zur Nutzung des RTC DS1307 ueber I2C ;* (SR_RTC_DS1307_sample.asm) ;* ;* Datum: 01/01/11 Version: 0.3 ;* Autor: WEIGU ;* ;* Informationen zur Beschaltung: ;* Prozessor: ATmega32A Quarzfrequenz: 16MHz ;* Eingaenge: ;* Ausgaenge: ;* ;* Informationen zur Funktionsweise: ;* ;* ;******************************************************************************* ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Reservierungen und Zuweisungen ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .EQU ERRLED = 0 ;1 falls Fehler LED erwuenscht sons 0 .EQU ERRDDR = DDRD ;LED zur Anzeige eines Uebetragungsfehler .EQU ERRPORT = PORTD .EQU ERRPNr = 7 ;------------------------------------------------------------------------------- ; Daten senden (8 Datenbyte) ;------------------------------------------------------------------------------- RTCSND: rcall I2CSTA ;Startbit senden + Kontrolle cpi r25,0x08 brne RTCSNE ldi r24,0xD0 ;Adresse des RTC DS1307 (Maxim 1101000) senden rcall I2CSND ;(Bit 2^0 = 0 schreiben) + Kontrolle cpi r25,0x18 brne RTCSNE ldi r24,0x00 ;Adresszeiger = 0 senden + Kontrolle rcall I2CSND cpi r25,0x28 brne RTCSNE ;8 Datenbyte senden + Kontrolle lds r24,RTCTAB+0 ;Sekunden rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+1 ;Minuten rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+2 ;Stunden rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+3 ;Wochentag rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+4 ;Tag rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+5 ;Monat rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+6 ;Jahr rcall I2CSND cpi r25,0x28 brne RTCSNE lds r24,RTCTAB+7 ;Kontrollregister rcall I2CSND cpi r25,0x28 brne RTCSNE rjmp RTCSNR RTCSNE: .IF (ERRLED == 1) sbi ERRDDR,ERRPNr ;Ausgang fuer Fehler LED initialisieren sbi ERRPORT,ERRPNr ;Fehler LED ein .ENDIF RTCSNR: rcall I2CSTO ;Stoppbit senden ret