rtc_set_datetime
You can use this code . It display with HyperTerminal.
1 #include <16F84A.h>
2 #fuses XT,NOWDT,NOPROTECT
3 #use delay(clock=4000000)
4 #use rs232(baud=9600, xmit=PIN_A1, rcv=PIN_A0)
5 #define DS1307_SDA PIN_B1
6 #define DS1307_SCL PIN_B0
7 #use i2c(master, sda=DS1307_SDA, scl=DS1307_SCL)
8
9 byte sec,min,hour,day,date,month,year;
10
11 //==========================
12 // initial DS1307
13 //==========================
14 void init_DS1307()
15 {
16 output_float(DS1307_SCL);
17 output_float(DS1307_SDA);
18 }
19 //==========================
20 // write data one byte to
21 // DS1307
22 //==========================
23 void write_DS1307(byte address, BYTE data)
24 {
25 short int status;
26 i2c_start();
27 i2c_write(0xd0);
28 i2c_write(address);
29 i2c_write(data);
30 i2c_stop();
31 i2c_start();
32 status=i2c_write(0xd0);
33 while(status==1)
34 {
35 i2c_start();
36 status=i2c_write(0xd0);
37 }
38 }
39 //==========================
40 // read data one byte from DS1307
41 //==========================
42 BYTE read_DS1307(byte address)
43 {
44 BYTE data;
45 i2c_start();
46 i2c_write(0xd0);
47 i2c_write(address);
48 i2c_start();
49 i2c_write(0xd1);
50 data=i2c_read(0);
51 i2c_stop();
52 return(data);
53 }
54 void show_date(byte day)
55 {
56 switch (day)
57 {
58 case 1
rintf("SUN-");
59 break;
60 case 2
rintf("MON-");
61 break;
62 case 3
rintf("TUE-");
63 break;
64 case 4
rintf("WED-");
65 break;
66 case 5
rintf("THE-");
67 break;
68 case 6
rintf("FRI-");
69 break;
70 case 7
rintf("SAT-");
71 break;
72 }
73 }
74
75 //==== main program ============
76 void main()
77 {
78 init_ds1307();
79 write_ds1307(0,0x50); // set second to 00 and enable clock(bit7=0)
80 write_ds1307(1,0x59); // set minute
81 write_ds1307(2,0x23); // set hour
82 write_ds1307(3,0x04); // set day
83 write_ds1307(4,0x03); // set date
84 write_ds1307(5,0x03); // set month
85 write_ds1307(6,0x04); // year
86 //
87 while(true)
88 {
89 sec=read_ds1307(0);
90 min=read_ds1307(1);
91 hour=read_ds1307(2);
92 day=read_ds1307(3);
93 date=read_ds1307(4);
94 month=read_ds1307(5);
95 year=read_ds1307(6);
96 printf("\f");
97 printf("%2X:%2X:%2X\r\n",hour,min,sec);
98 show_date(day);
99 printf("%2X/%2X/20%2X",date,month,year);
100 delay_ms(250);
101 }
102 }