Bom dia , este é meu primeiro post , no forum. Procurei algo sobre o DS1307 mas o que encontrei n me ajudou muito .
Montei um circuito com o DS1307 , com a bateria , e estou utilizando o PIC 16f876A, para lê-lo , e escrever , consigo escrever nos registradores , tudo certo mas quando desligo o circuito , o relogio deveria continuar a contagem atraves da bateria , porém o que acontece é : o relogio para , e quando volto a alimentar o circuito ele continua de onde parou.Substitui o cristal , mas nada mudou , minha duvida é se estou fazendo algo errado no código , segue o codigo basic , se alguém puder ajudar agradeço. Desde já Obrigado
****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 26/10/2012 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEFINE OSC 4
pause 250
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
SDA var PORTC.4 ' RTC data
SCL var PORTC.3 ' RTC clock
DB0 var byte[8]
ENTER var PORTC.0
VOLTA var PORTC.1
ADD var PORTC.2
B0 var byte
B1 var byte
B2 var byte
cmcon=%00000111
TRISB= %11111111
start:
' Read time Secs,Mins,Hours,Day,Date,Month,Year,Control
I2CREAD SDA,SCL,$D1,$00,[STR DB0\8] ' Read 8 bytes from DS1307
if DB0[1] = $00 && Db0[2] = $00 Then menu
lcdout $fe,1,"Relogio Fixxon"
lcdout $fe,$c0,"Hora=", hex2 DB0[2],":",hex2 DB0[1],":",hex2 DB0[0] 'bit 0=sec, bit 1=min, bit 2=hrs
pause 250
if ENTER = 0 Then Menu
goto start
menu:
lcdout $fe,1, "Hora=",hex2 DB0[2],":",hex2 Db0[1],":",hex2 $00
Lcdout $fe,$c0 ,"hr min volt"
pause 200
if ENTER = 0 Then DB0[1] = DB0[1]+1
if Db0[1] = $0A Then Db0[1] =$10
if Db0[1] = $1A then Db0[1] =$20
if Db0[1] = $2A then Db0[1] =$30
if Db0[1] = $3A Then DB0[1] =$40
if DB0[1] = $4A Then Db0[1] =$50
if DB0[1] = $5A Then Db0[1] =$00
if ADD = 0 Then DB0[2] = DB0[2]+1
if Db0[2] = $0A Then Db0[2] =$10
if Db0[2] = $1A then Db0[2] =$20
if Db0[2] = $24 Then Db0[2] =$00
if VOLTA = 0 then
B1= Db0[1]
b2= DB0[2]
Lcdout $fe,1 , " Aguarde "
Lcdout $fe,$c0 ,"Gravando..."
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
pause 100
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
pause 100
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
I2CREAD SDA,SCL,$D1,$00,[STR DB0\8]
pause 800
goto start
endif
goto menu
end