Mikrocontroller Startseite >> [AVR Peripherie] >> [DS1307] >> Beispiel in BASCOM mit myAVR


myAVR mit LCD und DS1307 Bascombeispiel

DownloadDownload

$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


[Impressum] [Kontakt] [Links] [Home]
© 05.12.2007 Hans-Jürgen Jacob (Pirna)