PDA

View Full Version : Connecting DS1307 to PIC16F877A



amindzo
- 7th September 2006, 13:51
Hi,
I have connected DS1307 to PIC16F877A.sometimes it works.
sometimes i can see the correct time and calender on lcd and sometimes
not . when i reset the microcontroller for many times , eventually it works in one of resets.
could you help me with this problem?

i use micro code studio picbasic pro2.41

this is my program:

define OSC 4
include"modedefs.bas"
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
pause 100
TRISC= %11111111
SDA var PORTC.0
SCL var PORTC.1
DB0 var byte[8]
CMCON = %00000111 ' Comparators = off
pause 1000
gosub write_1307
read_1307:
' Read time Secs,Mins,Hours,Day,Date,Month,Year,Control
I2CREAD SDA,SCL,$D1,$00,[STR DB0\8] ' Read 8 bytes from DS1307


lcdout $fe,1,"Time=",hex2 DB0[2],":",hex2 DB0[1]
pause 2000
goto read_1307
end

Write_1307:
' Set time & date to 21:58:00 Tuesday 6th of July 2004
I2CWRITE SDA,SCL,$D0,$00,[$00,$58,$21,$2,$6,$7,$4,$90] ' Write to DS1307
pause 10
RETURN ' Sec Min Hr Day D M Y Control

mister_e
- 7th September 2006, 14:34
how about...


Lcdout $fe,1,"Time=",hex2 DB0(2),":",hex2 DB0(1)


i know i saw that here somewhere... using parenthesis instead of bracket.

amindzo
- 7th September 2006, 16:35
Hi,
i did that but i have a same problem.
what should i do?

Sphere
- 7th September 2006, 17:18
Do you have a backup battery connected to the DS1307. I used the DS1302 and because I did not have a battery connected to the chip, the battery backup terminal on the DS1302 would just float causing eratic startup problems, according to the data sheet the battery backup terminal needs to be grounded if a backup battery is not used.

Hope it helps Sphere..

amindzo
- 8th September 2006, 14:11
Hi,
thanks everybody
by connecting battery my problem is solved