So sieht im Moment das Programm für die Uhrzeit aus.
Funktioniert eigentlich ganz gut. Fehlt halt nur noch der Timer!

Wenn das Programm funktioniert, werde ich es natürlich auch veröffentlichen!!!

Code:
' -----[ Initialisierung ]------------------------------------------------------
$regfile = "8515DEF.dat"                                    ' Chip auswählen
$crystal = 7372800                                          ' Quarzfrequenz festlegen

Config Sda = Portd.0                                        ' I2C-Port festlegen
Config Scl = Portd.1                                        ' I2C-Port festlegen

Config Lcdmode = Port
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 16 * 2                                         ' LCD-Typ festlegen
Cursor = Off                                                ' Cursor ausschalten

Dim S As Byte , M As Byte , H As Byte , D As Byte
Dim Wm As Byte , Yd As Byte , Month As Byte                 ' Uhrvariablen

S = 0
M = 0
H = 0
D = 1
Month = 1
Wm = 1
Yd = 5

Ddrd = &B00010000

Cls

Settime:

    S = Makebcd(s)                                          'Sekunden
    M = Makebcd(m)                                          'Minuten
    H = Makebcd(h)                                          'Stunden
    D = Makebcd(d)                                          'Tag
    Month = Makebcd(month)                                  'Monat

    I2cstart                                                'I2C Start
    I2cwbyte &HA0                                           'Schreibemodus
    I2cwbyte 0                                              'select control register
    I2cwbyte &HC                                            'set year and day bit for masking
    I2cstop                                                 'I2C Stop

    I2cstart                                                'I2C Start
    I2cwbyte &HA0                                           'Schreibemodus
    I2cwbyte &H2                                            'Sekunden-Register auswählen
    I2cwbyte S                                              'Sekunden schreiben
    I2cwbyte M                                              'Minuten schreiben
    I2cwbyte H                                              'Stunden schreiben
    I2cwbyte D                                              'Tag schreiben
    I2cwbyte Month                                          'Monat schreiben
    I2cstop                                                 'I2C Stop


'???????????????????????????????????????????????????????????????????????????????

    I2cstart                                                'I2C Start
    I2cwbyte &HA0                                           'Schreibemodus
    I2cwbyte 8                                              'Alarm-Register auswählen
    I2cwbyte &H4B                                           '01001011 schicken

    'hier sollte der Timer stehen

    I2cstop                                                 'I2C Stop

'???????????????????????????????????????????????????????????????????????????????


    Gettime:

   I2cstart                                                 'I2C Start
   I2cwbyte &HA0                                            'Schreibemodus
   I2cwbyte 2                                               'Sekunden-Register auswählen
   I2cstart                                                 'I2C Start
   I2cwbyte &HA1                                            'Lesemodus
   I2crbyte S , Ack                                         'lese Sekunden
   I2crbyte M , Ack                                         'lese Minuten
   I2crbyte H , Ack                                         'lese Stunden
   I2crbyte Yd , Ack                                        'lese Jahr und Tag
   I2crbyte Wm , Nack                                       'lese Wochentag und Monat
   I2cstop                                                  'I2C Stop

   S = Makedec(s)
   M = Makedec(m)
   H = Makedec(h)

   If H >= 10 Then
   Locate 1 , 5 : Lcd H
   Else
   Locate 1 , 5 : Lcd " " ; H
   End If

   Locate 1 , 7 : Lcd ":"

   If M >= 10 Then
   Locate 1 , 8 : Lcd M
   Else
   Locate 1 , 8 : Lcd "0" ; H
   End If

   Locate 1 , 10 : Lcd ":"

   If S >= 10 Then
   Locate 1 , 11 : Lcd S
   Else
   Locate 1 , 11 : Lcd "0" ; S
   End If

   If Pind.6 = 0 Then                                       'An Pind.6, der an INT des PCF8583 angeschlossen ist,
   Portd = &B00010000                                       'soll eine LED leuchten, wenn der Timer abgelaufen ist
   Else
   Portd = &B00000000
   End If

   Goto Gettime