tztz die von myAVR.de brauchen 2 Tage zum bearbeiten der Bestellung mit nur ein paar Sachen, früher ging das schneller.
mfg
Jay
Aquarium Blaulicht mit Dimmfunktion
Moderator: T.Hoffmann
ja klar kannst, ich habe heute weiter mit dem Programm weiter gemacht. Das bascom des ärgert mich so. kann mir vielleicht mal einer sagen wieso ich die Real-Time-Clock nicht so einstellen kann wie ich es will? Zurzeit stelle ich die Uhr so ein, kann nur eine bestimmte Uhrzeit vordefiniert setzen.
ich möchte aber genau eingeben können wie viel Uhr es ist, das funktioniert aber nicht.
EDIT: hachja, wenn man nochmal sich alles anschaut findet man auch seine eigenen Fehler, jetzt geht es.
mfg
Jay
Code: Alles auswählen
_sec = Makebcd(00) : _min = Makebcd(00) : _hour = Makebcd(12)
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
EDIT: hachja, wenn man nochmal sich alles anschaut findet man auch seine eigenen Fehler, jetzt geht es.
mfg
Jay
das mit der zeit habe ich schon gelöst es funktioniert, ich habe ein anderes Problem. ich kann in den EEPROM eine Uhrzeit eingeben wann gestartet werden soll und wann ende ist nur eben das ständig vergleichen und auswerten macht Probleme. bascom hab ich zuletzt vor einem Jahr richtig benutzt.
hier ist mein bisheriger code:
Hier ist der Aufbau des Menüs:
mfg
Jay
hier ist mein bisheriger code:
Code: Alles auswählen
'--------------------------------------------------------------
' AquaCom Firmware Version 1.00
' Copyright © 2012 by Juri Galinger
'---------------------------------------------------------------
$regfile = "m168def.dat"
$crystal = 10000000 '10 MHz
$lib "mcsbyteint.lbx"
Dim Quarzmhz As Integer
Dim Quarz As Single
Dim Freq As String * 4
'Quarz in MHz zum anzeigen der Frequenz
Quarzmhz = 10
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portb.5 , Rs = Portb.4
Config Lcdbus = 4
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 64
Config Timer2 = Pwm , Compare A Pwm = Clear Up , Prescale = 64
Config Sda = Portc.4
Config Scl = Portc.5
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
Config Date = Dmy , Separator = .
Enable Timer1
Enable Timer2
Enable Interrupts
Ocr2a = 255
Compare1a = 255
Compare1b = 255
Deflcdchar 0 , 4 , 14 , 21 , 31 , 10 , 14 , 21 , 32
Deflcdchar 1 , 32 , 4 , 14 , 21 , 4 , 4 , 4 , 32
Deflcdchar 2 , 32 , 31 , 31 , 31 , 32 , 32 , 32 , 32
Deflcdchar 3 , 32 , 4 , 4 , 4 , 21 , 14 , 4 , 32
Deflcdchar 4 , 32 , 14 , 14 , 32 , 32 , 32 , 32 , 32
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 14 , 14 , 32
Deflcdchar 6 , 8 , 8 , 4 , 4 , 10 , 10 , 17 , 17
Dim R As Byte
Dim G As Byte
Dim B As Byte
Dim Prozess As Integer
Dim Mnuselect As Integer
Dim Mnuselectscount As Integer
Dim Mnuselectback As Integer
Dim Mnuselectpointer As Integer
Dim Mnutext(8) As String * 8
Dim Mnuselects(8) As Integer
Dim I As Integer
Dim N As Integer
Dim M As Byte
Dim O As Byte
Dim Mnuselectold As Integer
Dim X As Bit
Dim Xq As Integer
Dim X1 As Integer
Dim X2 As Integer
Dim X3 As Integer
Dim Xa As String * 3
Dim Xb As String * 3
Dim Xc As String * 3
Dim Temp As String * 8
Dim T1 As Byte
Dim T2 As Byte
Dim T3 As Byte
Dim Temp2 As String * 8
Dim R1 As Byte
Dim R2 As Byte
Dim R3 As Byte
Dim Temp3 As String * 8
Dim U1 As Byte
Dim U2 As Byte
Dim U3 As Byte
Dim Aa As Byte
Dim A1 As Eram String * 8
Dim A2 As Eram String * 8
Dim Ab As Byte
Dim A3 As Eram String * 8
Dim A4 As Eram String * 8
' A1 = "09:00:00"
' A2 = "10:00:00"
' A3 = "11:00:00"
' A4 = "12:00:00"
Dim Ba As Byte
Dim B1 As Eram String * 8
Dim B2 As Eram String * 8
Dim Bb As Byte
Dim B3 As Eram String * 8
Dim B4 As Eram String * 8
' B1 = "13:00:00"
' B2 = "14:00:00"
' B3 = "15:00:00"
' B4 = "16:00:00"
Dim Ca As Byte
Dim C1 As Eram String * 8
Dim C2 As Eram String * 8
Dim Cb As Byte
Dim C3 As Eram String * 8
Dim C4 As Eram String * 8
' C1 = "17:00:00"
' C2 = "18:00:00"
' C3 = "19:00:00"
' C4 = "20:00:00"
Dim Gsplit(3) As String * 3
Restart:
Config Pinb.0 = Output 'nur für Programmier modus test
Config Pind.7 = Input
Config Pind.6 = Input
Config Pind.5 = Input
Portb.0 = 1
Portd.7 = 1
Portd.6 = 1
Portd.5 = 1
Cursor Off
Cls
'Start test
If Pind.6 = Pind.7 And Pinb.0 = 0 Then ' !!! Programmier modus
Locate 1 , 1
Lcd "Bootload"
Locate 2 , 1
Lcd "ISP used"
Waitms 1000
Goto Restart
Else ' wenn kein ISP dann weiter
Config Pinb.0 = Input
Portb.0 = 1
Mnuselect = 0
Prozess = 50
Gosub Loader
Locate 1 , 1
Lcd Chr(0) ; "AQUACOM"
Locate 2 , 1
Lcd " Hallo! "
Waitms 200
Cls
Do
Select Case Mnuselect
Case 0:
' Hauptmenue
Mnuselectback = 0
Mnutext(1) = "Port 1"
Mnuselects(1) = 1
Mnutext(2) = "Port 2"
Mnuselects(2) = 2
Mnutext(3) = "Port 3"
Mnuselects(3) = 3
Mnutext(4) = "Uhrzeit"
Mnuselects(4) = 4
Mnutext(5) = "System"
Mnuselects(5) = 9
Mnuselectscount = 5
Gosub Mnushow
Case 1:
' Untermenü "Port 1"
Mnuselectback = 1
Mnutext(1) = "1 ein <"
Mnuselects(1) = 11
Mnutext(2) = "2 aus"
Mnuselects(2) = 12
Mnutext(3) = "3 ein >"
Mnuselects(3) = 13
Mnutext(4) = "4 aus"
Mnuselects(4) = 14
Mnutext(5) = "-"
Mnuselects(5) = 15
Mnuselectscount = 5
Gosub Mnushow
Case 2:
' Untermenü "Port 2"
Mnuselectback = 2
Mnutext(1) = "1 ein <"
Mnuselects(1) = 21
Mnutext(2) = "2 aus"
Mnuselects(2) = 22
Mnutext(3) = "3 ein >"
Mnuselects(3) = 23
Mnutext(4) = "4 aus"
Mnuselects(4) = 34
Mnutext(5) = "-"
Mnuselects(5) = 25
Mnuselectscount = 5
Gosub Mnushow
Case 3:
' Untermenü "Port 3"
Mnuselectback = 3
Mnutext(1) = "1 ein <"
Mnuselects(1) = 31
Mnutext(2) = "2 aus"
Mnuselects(2) = 32
Mnutext(3) = "3 ein >"
Mnuselects(3) = 33
Mnutext(4) = "4 aus"
Mnuselects(4) = 34
Mnutext(5) = "-"
Mnuselects(5) = 35
Mnuselectscount = 5
Gosub Mnushow
Case 4:
' Untermenü "Uhrzeit"
Mnuselectback = 4
Mnutext(1) = Chr(225) + "ndern"
Mnuselects(1) = 41
Mnutext(2) = "l" + Chr(239) + "schen"
Mnuselects(2) = 42
Mnuselectscount = 2
Gosub Mnushow
Case 9:
Mnuselectback = 9
Mnutext(1) = "FET dim"
Mnuselects(1) = 91
Mnutext(2) = "PWM1 dim"
Mnuselects(2) = 92
Mnutext(3) = "PWM2 dim"
Mnuselects(3) = 93
Mnutext(4) = "LCD Char"
Mnuselects(4) = 94
Mnutext(5) = "Infos"
Mnuselects(5) = 95
Mnuselectscount = 5
Gosub Mnushow
Case 11:
Mnuselectback = 1
O = 11
Gosub Einstell
Case 12:
Mnuselectback = 1
O = 12
Gosub Einstell
Case 13:
Mnuselectback = 1
O = 13
Gosub Einstell
Case 14:
Mnuselectback = 1
O = 14
Gosub Einstell
Case 21:
Mnuselectback = 2
O = 21
Gosub Einstell
Case 22:
Mnuselectback = 2
O = 22
Gosub Einstell
Case 23:
Mnuselectback = 2
O = 23
Gosub Einstell
Case 24:
Mnuselectback = 2
O = 24
Gosub Einstell
Case 31:
Mnuselectback = 3
O = 31
Gosub Einstell
Case 32:
Mnuselectback = 3
O = 32
Gosub Einstell
Case 33:
Mnuselectback = 3
O = 33
Gosub Einstell
Case 34:
Mnuselectback = 3
O = 34
Gosub Einstell
Case 41:
Mnuselectback = 4
X1 = _hour
X2 = _min
X3 = _sec
Gosub Uhrzeit
Case 42:
Mnuselectback = 4
_sec = Makebcd(00) : _min = Makebcd(00) : _hour = Makebcd(12) ' 12:00:00
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
Prozess = 250
Gosub Loader
Waitms 100
Mnuselect = Mnuselectback
Case 91:
Mnuselectback = 9
O = 1
Gosub Pwmtest
Case 92:
Mnuselectback = 9
O = 2
Gosub Pwmtest
Case 93:
Mnuselectback = 9
O = 3
Gosub Pwmtest
Case 94:
Mnuselectback = 9
O = 4
Gosub Zeichen
Case 95:
Mnuselectback = 9
Gosub Info
Case Else:
' Falls der Mnuselec mal querläuft, wird wieder ins
' Hauptmenü gesprungen.
Mnuselect = 0
End Select
If Pind.6 = 0 And Pind.5 = 0 And Pinb.0 = 1 Then Goto Restart
Waitms 1
Loop
Rechnen:
O = 1
While O < 13
Select Case O
Case 1 :
Temp2 = A1
Case 2 :
Temp2 = A2
Case 3 :
Temp2 = A3
Case 4 :
Temp2 = A4
Case 5 :
Temp2 = B1
Case 6 :
Temp2 = B2
Case 7 :
Temp2 = B3
Case 8 :
Temp2 = B4
Case 9 :
Temp2 = C1
Case 10 :
Temp2 = C2
Case 11 :
Temp2 = C3
Case 12 :
Temp2 = C4
Case 13:
'oK
End Select
I = Split(temp2 , Gsplit(1) , ":")
Temp2 = Gsplit(1)
R1 = Val(temp2)
Temp2 = Gsplit(2)
R2 = Val(temp2)
Temp2 = Gsplit(3)
R3 = Val(temp2)
Temp3 = Time$
I = Split(temp3 , Gsplit(1) , ":")
Temp3 = Gsplit(1)
U1 = Val(temp3)
Temp3 = Gsplit(2)
U2 = Val(temp3)
Temp3 = Gsplit(3)
U3 = Val(temp3)
If U1 = R1 And U2 = R2 And U3 = R3 Then
Select Case O
Case 1 :
Cls
Locate 1 , 1
Lcd Time$
Locate 2 , 1
Lcd "A1 aktiv"
Case 2 :
Case 3 :
Case 4 :
Case 5 :
Case 6 :
Case 7 :
Case 8 :
Case 9 :
Case 10 :
Case 11 :
Case 12 :
Case 13:
'oK
End Select
Waitms 550
End If
Incr O
Wend
Return
Einstell:
Mnuselectold = Mnuselect
Mnuselectpointer = 1
M = 1
Select Case O
Case 11 :
Temp = A1
Case 12 :
Temp = A2
Case 13 :
Temp = A3
Case 14 :
Temp = A4
Case 21 :
Temp = B1
Case 22 :
Temp = B2
Case 23 :
Temp = B3
Case 24 :
Temp = B4
Case 31 :
Temp = C1
Case 32 :
Temp = C2
Case 33 :
Temp = C3
Case 34 :
Temp = C4
End Select
I = Split(temp , Gsplit(1) , ":")
Temp = Gsplit(1)
T1 = Val(temp)
Temp = Gsplit(2)
T2 = Val(temp)
Temp = Gsplit(3)
T3 = Val(temp)
While Mnuselectold = Mnuselect
Cls
N = Mnuselectpointer + 1
Decr N
If N > Mnuselectscount Then
N = Mnuselectscount
End If
' Anzeige der Zeilen
For I = Mnuselectpointer To N
Locate 1 , 1
If T1 < 10 Then Lcd "0" Else Lcd ""
Lcd T1 ; ":"
If T2 < 10 Then Lcd "0" Else Lcd ""
Lcd T2 ; ":"
If T3 < 10 Then Lcd "0" Else Lcd ""
Lcd T3
Select Case M ' Anzeigen was verändert wird
Case 1:
Locate 2 , 1 : Lcd Chr(1) ; Chr(1)
Case 2:
Locate 2 , 4 : Lcd Chr(1) ; Chr(1)
Case 3:
Locate 2 , 7 : Lcd Chr(1) ; Chr(1)
End Select
Next
Waitms 250
If Pind.7 = 0 Then
Select Case M
Case 1:
T1 = T1 + 1
If T1 > 23 Then T1 = 0
Case 2:
T2 = T2 + 1
If T2 > 59 Then T2 = 0
Case 3:
T3 = T3 + 1
If T3 > 59 Then T3 = 0
End Select
End If
If Pinb.0 = 0 Then
Select Case M
Case 1:
T1 = T1 - 1
If T1 = 255 Then T1 = 23
Case 2:
T2 = T2 - 1
If T2 = 255 Then T2 = 59
Case 3:
T3 = T3 - 1
If T3 = 255 Then T3 = 59
End Select
End If
If Pind.5 = 0 Then
M = M + 1
If M > 3 Then
Temp = Str(t1) + ":" + Str(t2) + ":" + Str(t3)
Select Case O
Case 11 : A1 = Temp
Case 12 : A2 = Temp
Case 13 : A3 = Temp
Case 14 : A4 = Temp
Case 21 : B1 = Temp
Case 22 : B2 = Temp
Case 33 : B3 = Temp
Case 34 : B4 = Temp
Case 41 : C1 = Temp
Case 42 : C2 = Temp
Case 43 : C3 = Temp
Case 44 : C4 = Temp
End Select
O = 0
Prozess = 50
Gosub Loader
Mnuselect = Mnuselectback
End If
End If
If Pind.6 = 0 Then
Mnuselect = Mnuselectback
End If
Wend
Cls
Return
Mnushow:
' Wenn dieser Punkt angesprungen wird, verlangt das System eine Eingabe.
' Alle weiteren Aktionen, sofern nicht durch Interrupts erzeugt, werden
' nicht weiter verarbeitet.
' Das alte Mnuselect wird gesichert
Mnuselectold = Mnuselect
' Der Zeiger wird auf den ersten Menüeintrag gestellt.
Mnuselectpointer = 1
' So lange das Menue nicht geaendert wurde, wird dies immer fortgesetzt.
While Mnuselectold = Mnuselect
Gosub Rechnen 'Uhrzeit überprüfen
' Zuerst einmal muss nun auf dem Display etwas angezeigt werden.
' Dies ist der Zaehler für die anzuzeigende Zeile
Cls
' Displayzeilen minus 1
N = Mnuselectpointer + 1
Decr N
' Mehr als die verfuegbaren Menuepunkte können nicht angezeigt werden.
If N > Mnuselectscount Then
N = Mnuselectscount
End If
' Anzeige der Zeilen
For I = Mnuselectpointer To N
Locate 1 , 1
Lcd Mnutext(i)
Locate 2 , 1
If _hour < 10 Then Lcd "0" Else Lcd ""
Lcd Str(_hour) ; ":"
If _min < 10 Then Lcd "0" Else Lcd ""
Lcd Str(_min)
Lcd " "
If X = 0 Then
Lcd Chr(4)
Else
Lcd Chr(5)
End If
If _sec = Xq Then
Else
Toggle X
End If
Xq = _sec
Lcd " "
Next
Waitms 250
' hier werden nun die Menuetasten ausgewertet.
' Aktion Taste nach oben
If Pind.7 = 0 Then
' Nur wenn das Menü noch nicht oben ist.
If Mnuselectpointer > 1 Then
Decr Mnuselectpointer
End If
End If
' Aktion Taste nach unten
If Pinb.0 = 0 Then
' Nur wenn das Menü noch nicht unten ist
If Mnuselectpointer < Mnuselectscount Then
Incr Mnuselectpointer
End If
End If
' Aktion Taste vor
If Pind.5 = 0 Then
Mnuselect = Mnuselects(mnuselectpointer)
End If
' Aktion Taste zurueck
If Pind.6 = 0 Then
Mnuselect = Mnuselect - Mnuselectold
End If
Wend
Cls
' Es wird wieder ins Hauptprogramm zurueck gesprungen.
Return
Uhrzeit:
Mnuselectold = Mnuselect
Mnuselectpointer = 1
M = 1
While Mnuselectold = Mnuselect
Cls
N = Mnuselectpointer + 1
Decr N
If N > Mnuselectscount Then
N = Mnuselectscount
End If
For I = Mnuselectpointer To N
Locate 1 , 1
If X1 < 10 Then Lcd "0" Else Lcd ""
Lcd X1 ; ":" ;
If X2 < 10 Then Lcd "0" Else Lcd ""
Lcd X2 ; ":"
If X3 < 10 Then Lcd "0" Else Lcd ""
Lcd X3
Select Case M
Case 1:
Locate 2 , 1 : Lcd Chr(1) ; Chr(1)
Case 2:
Locate 2 , 4 : Lcd Chr(1) ; Chr(1)
Case 3:
Locate 2 , 7 : Lcd Chr(1) ; Chr(1)
End Select
Next
Waitms 250
If Pind.7 = 0 Then
Select Case M
Case 1:
X1 = X1 + 1
If X1 > 23 Then X1 = 0
Case 2:
X2 = X2 + 1
If X2 > 59 Then X2 = 0
Case 3:
X3 = X3 + 1
If X3 > 59 Then X3 = 0
End Select
End If
If Pinb.0 = 0 Then
Select Case M
Case 1:
X1 = X1 - 1
If X1 < 0 Then X1 = 23
Case 2:
X2 = X2 - 1
If X2 < 0 Then X2 = 59
Case 3:
X3 = X3 - 1
If X3 < 0 Then X3 = 59
End Select
End If
If Pind.5 = 0 Then
M = M + 1
If M > 3 Then
_sec = X3
_min = X2
_hour = X1
Gosub Settime
Prozess = 10
Gosub Loader
Mnuselect = Mnuselectback
End If
End If
If Pind.6 = 0 Then
Mnuselect = Mnuselectback
End If
Wend
Cls
Return
Pwmtest:
Mnuselectold = Mnuselect
Mnuselectpointer = 1
M = 0
While Mnuselectold = Mnuselect
Cls
N = Mnuselectpointer + 1
Decr N
If N > Mnuselectscount Then
N = Mnuselectscount
End If
For I = Mnuselectpointer To N
Locate 1 , 1
Lcd "Port " ; O
Locate 2 , 1
Lcd Chr(1) ; "+-" ; Chr(3) ; " " ; M
If O = 1 Then Ocr2a = M
If O = 2 Then Compare1a = M
If O = 3 Then Compare1b = M
Next
Waitms 250
If Pind.7 = 0 Then
M = M + 1
End If
If Pinb.0 = 0 Then
M = M - 1
End If
If Pind.6 = 0 Then
Mnuselect = Mnuselectback
End If
Wend
Cls
Return
Zeichen:
Mnuselectold = Mnuselect
Mnuselectpointer = 1
M = 120
While Mnuselectold = Mnuselect
Cls
N = Mnuselectpointer + 1
Decr N
If N > Mnuselectscount Then
N = Mnuselectscount
End If
For I = Mnuselectpointer To N
Locate 1 , 1
Lcd "char " ; Chr(m)
Locate 2 , 1
Lcd "Nr.: " ; M
Next
Waitms 250
If Pind.7 = 0 Then
M = M + 1
End If
If Pinb.0 = 0 Then
M = M - 1
End If
If Pind.6 = 0 Then
Mnuselect = Mnuselectback
End If
Wend
Cls
Return
Info:
Mnuselectold = Mnuselect
Mnuselectpointer = 1
M = 0
While Mnuselectold = Mnuselect
Cls
N = Mnuselectpointer + 1
Decr N
If N > Mnuselectscount Then
N = Mnuselectscount
End If
For I = Mnuselectpointer To N
If M = 0 Then
Locate 1 , 1
Lcd "ATmega"
Locate 2 , 1
Lcd "168A-PU"
End If
If M = 1 Then
Locate 1 , 1
Lcd "Quarz"
Locate 2 , 1
Lcd Quarzmhz ; " MHz"
End If
If M = 2 Then
Locate 1 , 1
Lcd "I2C"
Locate 2 , 1
Lcd "DS1307W"
End If
If M = 3 Then
Locate 1 , 1
Lcd "MOSFET"
Locate 2 , 1
Lcd "IRL540NS"
End If
If M = 4 Then
Quarz = Quarzmhz * 1000000
Quarz = Quarz / 16320
Quarz = Quarz / 2
Quarz = Round(quarz)
Locate 1 , 1
Lcd "PWM 1-2"
Locate 2 , 1
Lcd Quarz ; " Hz"
End If
If M = 5 Then
Locate 1 , 1
Lcd "Temp " ; Chr(6) ; Chr(242)
Locate 2 , 1
Lcd "0 - 50" ; Chr(223) ; "C"
End If
If M = 6 Then
Locate 1 , 1
Lcd "Dev Juri"
Locate 2 , 1
Lcd "Galinger"
End If
Next
Waitms 250
If Pind.7 = 0 Then
M = M - 1
If M = 255 Then M = 0
End If
If Pinb.0 = 0 Then
M = M + 1
If M > 6 Then M = 6
End If
If Pind.6 = 0 Then
Mnuselect = Mnuselectback
End If
Wend
Cls
Return
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
Loader:
Cls
For I = 1 To 8
Locate 1 , I
Lcd Chr(2)
Waitms Prozess
Next
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
End If ' !!!Programmier Modus abfrage
Jay