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







Zitieren
Lesezeichen