
'Testprogramm DS1307/ RTC Clock

$regfile = "m32def.dat"
$crystal = 8000000


'Konfigurieren der I2C Port-PINs
Config Scl = Portd.5
Config Sda = Portd.6

'Konfigurieren der I2C Geschwindigkeit...
Config I2cdelay = 150


'I2cinit


'---Konfiguration des 4x20 LCD Displays---

 Config Lcd = 20 * 4
 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.7 , Rs = Portc.6

'--------------------------------------------------


'Variablen festlegen...
'---------------------------------
Dim Wochentag As Byte
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Byte
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte


Dim Ds1307_schreiben As Byte
Dim Ds1307_lesen As Byte


'Adresse DS1307/ lesen oder schreiben...
'---------------------------------

Ds1307_schreiben = &B11010000
Ds1307_lesen = &B11010001



'Voreinstellung, Zeit- u. Datumswerte...
'---------------------------------

Tag = 2
Monat = 10
Jahr = 16
Sekunde = 20
Minute = 33
Stunde = 17

' Zeit setzen...
'---------------------------------

Sekunde = Makebcd(sekunde)
Minute = Makebcd(minute)
Stunde = Makebcd(stunde)

I2cstart

  I2cwbyte Ds1307_schreiben
  I2cwbyte 0
  I2cwbyte Sekunde
  I2cwbyte Minute
  I2cwbyte Stunde

I2cstop
'---------------------------------


' Datum setzen...
'---------------------------------

Tag = Makebcd(tag)
Monat = Makebcd(monat)
Jahr = Makebcd(jahr)

I2cstart

I2cwbyte Ds1307_schreiben

  I2cwbyte 3
  I2cwbyte Wochentag
  I2cwbyte Tag
  I2cwbyte Monat
  I2cwbyte Jahr

I2cstop


Do

' Zeit u. Datum holen...

I2cstart

  I2cwbyte Ds1307_schreiben
  I2cwbyte 0

  I2cstart
  I2cwbyte Ds1307_lesen
  I2crbyte Sekunde , Ack
  I2crbyte Minute , Ack
  I2crbyte Stunde , Ack
  I2crbyte Wochentag , Ack
  I2crbyte Tag , Ack
  I2crbyte Monat , Ack
  I2crbyte Jahr , Nack

I2cstop

  Cls

  Locate 1 , 1
   Lcd "Test RTC-Cl. Ds1307"

  Locate 2 , 1
   Lcd Bcd(tag) ; "." ; Bcd(monat) ; "." ; Bcd(jahr)

  Locate 3 , 1
   Lcd Bcd(stunde) ; ":" ; Bcd(minute) ; ":" ; Bcd(sekunde)


Waitms 1000


Loop