1 | $regfile = "m8def.dat"
|
2 | $crystal = 3579545 ' default use 40 for the frame space
|
3 | $lib "mcsbyte.lbx" ' for smaller code
|
4 | $lib "ds1307clock.lib" ' modified lib
|
5 |
|
6 | 'configure the scl and sda pins
|
7 | Config Sda = Portc.4
|
8 | Config Scl = Portc.5
|
9 | Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
|
10 | Config Lcd = 16 * 2
|
11 | Config Lcdbus = 4 '4 Bit Modus
|
12 | Cursor Off Noblink 'LCD = Cursor aus
|
13 | 'address of ds1307
|
14 | Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
|
15 | Const Ds1307r = &HD1
|
16 |
|
17 | Config Clock = User ' this will dim the bytes automatic
|
18 | 'dim other needed variables
|
19 | Dim Weekday As Byte
|
20 | Cls
|
21 | Lcd "test"
|
22 |
|
23 | ' assigning the time will call the SetTime routine
|
24 | Time$ = "23:58:59" ' to watch the day changing value
|
25 | Date$ = "11-13-02" ' 13 november 2002
|
26 | Do
|
27 | Cls
|
28 | Lcd Date$ ; " " ; Time$
|
29 | Waitms 500
|
30 | Loop
|
31 |
|
32 | End
|
33 |
|
34 | 'called from ds1307clock.lib
|
35 | Getdatetime:
|
36 | I2cstart ' Generate start code
|
37 | I2cwbyte Ds1307w ' send address
|
38 | I2cwbyte 0 ' start address in 1307
|
39 |
|
40 | I2cstart ' Generate start code
|
41 | I2cwbyte Ds1307r ' send address
|
42 | I2crbyte _sec , Ack
|
43 | I2crbyte _min , Ack ' MINUTES
|
44 | I2crbyte _hour , Ack ' Hours
|
45 | I2crbyte Weekday , Ack ' Day of Week
|
46 | I2crbyte _day , Ack ' Day of Month
|
47 | I2crbyte _month , Ack ' Month of Year
|
48 | I2crbyte _year , Nack ' Year
|
49 | I2cstop
|
50 | _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
|
51 | _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
|
52 | Return
|
53 |
|
54 | Setdate:
|
55 | _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
|
56 | I2cstart ' Generate start code
|
57 | I2cwbyte Ds1307w ' send address
|
58 | I2cwbyte 4 ' starting address in 1307
|
59 | I2cwbyte _day ' Send Data to SECONDS
|
60 | I2cwbyte _month ' MINUTES
|
61 | I2cwbyte _year ' Hours
|
62 | I2cstop
|
63 | Return
|
64 |
|
65 | Settime:
|
66 | _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
|
67 | I2cstart ' Generate start code
|
68 | I2cwbyte Ds1307w ' send address
|
69 | I2cwbyte 0 ' starting address in 1307
|
70 | I2cwbyte _sec ' Send Data to SECONDS
|
71 | I2cwbyte _min ' MINUTES
|
72 | I2cwbyte _hour ' Hours
|
73 | I2cstop
|
74 | Return
|