martin66119
14.01.2007, 11:01
Einen schönen Sonntag euch allen!
Ich bin dabei oder besser versuche eine Heizungssteuerung zu programmieren.
Mit folgendem Code, den ich hier gefunden habe ist eine Uhr auf meinem Controller implementiert.
Hierzu habe ich zwei Fragen:
1) Was ist die '$lib "ds1307rtc.lib" und wo finde ich diese?
2) In der Datumsanzeige sind sonderzeichen drin, die ich so nicht haben möchte. Wie und wo kann ich diese ändern (z.B. dass es so aussieht
14-01-07).
Neben den obigen Fragen habe ich noch eine weitere.
Um Schaltvorgänge zu bestimmten Uhrzeiten zu realisieren muss ich in bestimmten Zeitintervallen die Uhrzeit abfragen. Z.B. Wenn später wie 22:00 dann ausschalten. Wenn später wie 06:00 dann einschalten. Wie macht man sowas am besten.
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcdbus = 4
Config Lcdmode = Port
Config Sda = Portc.4
Config Scl = Portc.5
Cls
$lib "mcsbyte.lbx" ' for smaller code
'$lib "ds1307rtc.lib" ' modified lib
'address of ds1307
Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
Const Ds1307r = &HD1
Config Clock = User ' this will dim the bytes automatic
'dim other needed variables
Dim Weekday As Byte
'Locate 1 , 1
'Lcd "DS1307"
'Waitms 100
' assigning the time will call the SetTime routine
Time$ = "23:22:30" ' to watch the day changing value
Date$ = "13.01.07" ' 13 november 2002
Cls
Do
Locate 1 , 1
Lcd Date$ ;
Locate 2 , 1
Lcd Time$
Waitms 500
Loop
End
'called from ds1307clock.lib
Getdatetime:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' start address in 1307
I2cstart ' Generate start code
I2cwbyte Ds1307r ' send address
I2crbyte _sec , Ack
I2crbyte _min , Ack ' MINUTES
I2crbyte _hour , Ack ' Hours
I2crbyte Weekday , Ack ' Day of Week
I2crbyte _day , Ack ' Day of Month
I2crbyte _month , Ack ' Month of Year
I2crbyte _year , Nack ' Year
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 4 ' starting address in 1307
I2cwbyte _day ' Send Data to SECONDS
I2cwbyte _month ' MINUTES
I2cwbyte _year ' Hours
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' starting address in 1307
I2cwbyte _sec ' Send Data to SECONDS
I2cwbyte _min ' MINUTES
I2cwbyte _hour ' Hours
I2cstop
Return
Danke für die Hilfe an alle!
Martin
Ich bin dabei oder besser versuche eine Heizungssteuerung zu programmieren.
Mit folgendem Code, den ich hier gefunden habe ist eine Uhr auf meinem Controller implementiert.
Hierzu habe ich zwei Fragen:
1) Was ist die '$lib "ds1307rtc.lib" und wo finde ich diese?
2) In der Datumsanzeige sind sonderzeichen drin, die ich so nicht haben möchte. Wie und wo kann ich diese ändern (z.B. dass es so aussieht
14-01-07).
Neben den obigen Fragen habe ich noch eine weitere.
Um Schaltvorgänge zu bestimmten Uhrzeiten zu realisieren muss ich in bestimmten Zeitintervallen die Uhrzeit abfragen. Z.B. Wenn später wie 22:00 dann ausschalten. Wenn später wie 06:00 dann einschalten. Wie macht man sowas am besten.
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config Lcdbus = 4
Config Lcdmode = Port
Config Sda = Portc.4
Config Scl = Portc.5
Cls
$lib "mcsbyte.lbx" ' for smaller code
'$lib "ds1307rtc.lib" ' modified lib
'address of ds1307
Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
Const Ds1307r = &HD1
Config Clock = User ' this will dim the bytes automatic
'dim other needed variables
Dim Weekday As Byte
'Locate 1 , 1
'Lcd "DS1307"
'Waitms 100
' assigning the time will call the SetTime routine
Time$ = "23:22:30" ' to watch the day changing value
Date$ = "13.01.07" ' 13 november 2002
Cls
Do
Locate 1 , 1
Lcd Date$ ;
Locate 2 , 1
Lcd Time$
Waitms 500
Loop
End
'called from ds1307clock.lib
Getdatetime:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' start address in 1307
I2cstart ' Generate start code
I2cwbyte Ds1307r ' send address
I2crbyte _sec , Ack
I2crbyte _min , Ack ' MINUTES
I2crbyte _hour , Ack ' Hours
I2crbyte Weekday , Ack ' Day of Week
I2crbyte _day , Ack ' Day of Month
I2crbyte _month , Ack ' Month of Year
I2crbyte _year , Nack ' Year
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 4 ' starting address in 1307
I2cwbyte _day ' Send Data to SECONDS
I2cwbyte _month ' MINUTES
I2cwbyte _year ' Hours
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' starting address in 1307
I2cwbyte _sec ' Send Data to SECONDS
I2cwbyte _min ' MINUTES
I2cwbyte _hour ' Hours
I2cstop
Return
Danke für die Hilfe an alle!
Martin