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
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