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
Lesezeichen