unsigned short hh;
unsigned short mm;
unsigned short ss;
unsigned char x[17];
void write_DS1307(unsigned short address, unsigned short data)
{
unsigned short status;
I2C_Start();
I2C_Wr(0xd0);
I2C_Wr(address);
I2C_Wr(data);
I2C_Stop();
}
unsigned short read_DS1307(unsigned short address)
{
unsigned short data;
I2C_Start();
I2C_Wr(0xd0);
I2C_Wr(address);
I2C_Repeated_Start();
I2C_Wr(0xd1);
data=I2C_Rd(0);
while (!I2C_Is_Idle()) asm nop;
I2C_Stop();
return(data);
}
void main(){
PORTB = 0;
TRISB = 0;
PORTD = 0;
TRISD = 0;
hh = 0;
mm = 0;
ss = 0;
Lcd_Init(&PORTD);
Lcd_Out(1,1,"Init...");
I2C_Init(100000); //DS1307 operates at 100Khz only
ss=read_ds1307(0);
write_ds1307(0, ss & 0x7F); // enable oscillator(bit 7 =0)
ss=read_ds1307(2);
write_ds1307(2, ss & 0b10111111); // set 24H mode
while(1)
{
ss=read_ds1307(0); // read second
mm=read_ds1307(1); // read minute
hh=read_ds1307(2); // read hour
/*
day=read_ds1307(3); // read day
date=read_ds1307(4); // read date
month=read_ds1307(5); // read month
year=read_ds1307(6); // read year
*/
Lcd_Chr(1,1, 48+ ((hh & 0b00110000) >> 4));
Lcd_Chr(1,2, 48+ (hh & 0b00001111) );
Lcd_Chr(1,3, ':');
Lcd_Chr(1,4, 48+ ((mm & 0b01110000) >> 4));
Lcd_Chr(1,5, 48+ (mm & 0b00001111) );
Lcd_Chr(1,6, ':');
Lcd_Chr(1,7, 48+ ((ss & 0b01110000) >> 4));
Lcd_Chr(1,8, 48+ (ss & 0b00001111) );
delay_ms(1000);
}
}
tnx be80be,
here..i don't know where the problem is..when i play the isis, it only diplays 00:00:00