>> [AVR Peripherie] >> [DS1307] >> Beispiel in BASCOM mit myAVR myAVR mit LCD und DS1307 BascombeispielDownload$regfile = "m8def.dat" $crystal = 3686411 ' Einstellen des LCD Display's von myAVR in BASCOM 'Config Portd = Output Config Lcdpin=Pin, Db4=Portd.4, Db5=Portd.5, Db6=Portd.6, Db7=Portd.7, E=Portd.3, Rs=Portd.2 Config Lcd = 16 * 2 ' Einstellen der TWI (I2C) Schnittstelle in BASCOM Config Sda = Portc.4 Config Scl = Portc.5 ' Address des DS1307 $D0=schreiben $D1=lesen Const Ds1307w = &HD0 Const Ds1307r = &HD1 ' Einstellen der Datum-/Zeitfunktion in BASCOM dabei werden automatisch ' die Variablen _year,_month,_day,_hour,_min,_sec im BCD Format angelegt Config Clock = User ' Datumsformat deutsch Tag.Monat.Jahr und als Trennzeichen den Punkt Config Date = Dmy , Separator = . Cls Cursor Off ' Nur zum stellen der Uhr Kommentar entfernen 'Time$ = "17:30:59" 'Date$ = "24.08.07" Lcd " *** myAVR ***" Do Locate 2 , 1 : Lcd Mid(date$ , 1 , 6) ; " " ; Time$ Waitms 1000 Loop End ' Benutzer definierte Routinen die von der datetime.lib im BASCOM genutzt werden Dim Weekday As Byte Getdatetime: I2cstart ' Start I2cwbyte Ds1307w ' DS1307 schreiben I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen I2cstart ' Start I2cwbyte Ds1307r ' DS1307 lesen (ab vorher eingestellter Adresse 0) I2crbyte _sec , Ack ' Sekunden I2crbyte _min , Ack ' Minuten I2crbyte _hour , Ack ' Stunden I2crbyte Weekday , Ack ' Wochentag (in Dummy gelesen da von date$/time$ nicht genutzt) I2crbyte _day , Ack ' Tag I2crbyte _month , Ack ' Monat I2crbyte _year , Nack ' Jahr I2cstop _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) Return Setdate: _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year) I2cstart ' Start I2cwbyte Ds1307w ' DS1307 schreiben I2cwbyte 4 ' DS1307 Adresszeiger auf 4 (Byte 5) stellen I2cwbyte _day ' Tag schreiben I2cwbyte _month ' Monat schreiben I2cwbyte _year ' Jahr schreiben I2cstop Return Settime: _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart ' Start I2cwbyte Ds1307w ' DS1307 schreiben I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen I2cwbyte _sec ' Sekunden schreiben I2cwbyte _min ' Minuten schreiben I2cwbyte _hour ' Stunden schreiben I2cstop Return
© 05.12.2007 Hans-Jürgen Jacob (Pirna)
|
|