vanilla__
Üye
- Katılım
- 19 Ara 2006
- Mesajlar
- 2
- Puanları
- 1
- Yaş
- 40
unsigned char saniye, dakika, saat, gun, ay, yil, haftaningunu,
controlbyte;
unsigned char asaniye, adakika, asaat, agun, aay;
char *txt, *str=" \0;
char Hex2Dec(char ch)
{
char tmp = 0;
while(ch>=10) {tmp++; ch -= 10;}
tmp = (tmp<<4) + ch;
return tmp;
}
void BintoStr(char data)
{
data = Hex2Dec(data);
str[0]= 48 + ((data & 0xF0) >> 4);
str[1]= 48 + (data & 0x0F);
}
void pcf8583_read()
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(2);
I2C_Repeated_Start();
I2C_Wr(oxA1);
saniye =I2C_Rd(1);
while (I2C_Is_Idle() == 0);
dakika =I2C_RD(1) ;
while (I2C_Is_Idle() == 0);
saat =I2C_Rd(1);
while (I2C_Is_Idle() == 0);
gun =I2C_Rd(1) ;
while (I2C_Is_Idle() == 0);
ay =I2C_Rd(0) ;
while (I2C_Is_Idle() == 0);
I2C_Stop() ;
}
void pcf8583_write()
{
char tmp1, tmp2;
tmp1 = (yil<<6) - gun;
tmp2 = (haftaningunu<<5) - ay;
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0x80);
I2C_Wr(0);
I2C_Wr(saniye);
I2C_Wr(dakika);
I2C_Wr(saat);
I2C_Wr(tmp1);
I2C_Wr(tmp2);
I2C_Stop();
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0);
I2C_Stop();
}
void pcf8583_alarm_write()
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0x00);
I2C_Wr(0x80);
I2C_Stop();
delay_ms(5);
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0x07);
I2C_Wr(0x00);
I2C_Wr(0xA0);
I2C_Wr(0x00);
I2C_Wr(asaniye);
I2C_Wr(adakika);
I2C_Wr(asaat);
I2C_Wr(agun);
I2C_Wr(aay);
I2C_Stop();
delay_ms(5);
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0x04);
I2C_Stop();
delay_ms(5);
}
void Transform_Time()
{
saniye = ((saniye & 0xF0) >> 4) *10 + (saniye & 0x0F);
dakika = ((dakika & 0xF0) >> 4) *10 + (dakika & 0x0F);
saat = ((saat & 0xF0) >> 4) *10 + (saat & 0x0F);
yil = (gun & 0xC0) >> 6;
gun = ((gun & 0x30) >> 4) *10 + (gun & 0x0F);
ay = ((ay & 0x10) >> 4) *10 + (ay & 0x0F);
}
void Display_Time()
{
LCD_Out(1,1,"Tarih=");
BintoStr(gun);
LCD_Out_Cp(str);
LCD_Out_Cp("-");
BintoStr(ay);
LCD_Out_Cp(str);
LCD_Out_Cp("-");
LCD_Out_Cp("20");
BintoStr(yil);
LCD_Out_Cp(str);
LCD_Out(2,1," Saat=");
BintoStr(saat);
LCD_Out_Cp(str);
LCD_Out_Cp(":");
BintoStr(dakika);
LCD_Out_Cp(str);
LCD_Out_Cp(":");
BintoStr(saniye);
LCD_Out_Cp(str);
}
void init()
{
LCD_Config(PORTB,4,5,7,3,2,1,0);
LCD_Cmd(LCD_CURSOR_OFF);
I2C_Init(100000);
saniye = 0x57;
dakika = 0x52;
saat = 0x15;
gun = 0x03;
ay = 0x10;
yil = 0x02;
haftaningunu = 0x03;
asaniye = 0;
adakika = 0x53;
asaat = 0x15;
agun = 0x03;
aay = 0x10;
}
void main()
{
init();
pcf8583_write();
pcf8583_alarm_write();
while(1)
{
pcf8583_read();
Transform_Time();
Display_Time();
Delay_ms(1000);
}
}
bu kodların satır satır ne işe yaradığını bulmam lazım bilenler yardımcı olursa çok sevinirim.şimdiden teşekkürler
controlbyte;
unsigned char asaniye, adakika, asaat, agun, aay;
char *txt, *str=" \0;
char Hex2Dec(char ch)
{
char tmp = 0;
while(ch>=10) {tmp++; ch -= 10;}
tmp = (tmp<<4) + ch;
return tmp;
}
void BintoStr(char data)
{
data = Hex2Dec(data);
str[0]= 48 + ((data & 0xF0) >> 4);
str[1]= 48 + (data & 0x0F);
}
void pcf8583_read()
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(2);
I2C_Repeated_Start();
I2C_Wr(oxA1);
saniye =I2C_Rd(1);
while (I2C_Is_Idle() == 0);
dakika =I2C_RD(1) ;
while (I2C_Is_Idle() == 0);
saat =I2C_Rd(1);
while (I2C_Is_Idle() == 0);
gun =I2C_Rd(1) ;
while (I2C_Is_Idle() == 0);
ay =I2C_Rd(0) ;
while (I2C_Is_Idle() == 0);
I2C_Stop() ;
}
void pcf8583_write()
{
char tmp1, tmp2;
tmp1 = (yil<<6) - gun;
tmp2 = (haftaningunu<<5) - ay;
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0x80);
I2C_Wr(0);
I2C_Wr(saniye);
I2C_Wr(dakika);
I2C_Wr(saat);
I2C_Wr(tmp1);
I2C_Wr(tmp2);
I2C_Stop();
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0);
I2C_Stop();
}
void pcf8583_alarm_write()
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0x00);
I2C_Wr(0x80);
I2C_Stop();
delay_ms(5);
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0x07);
I2C_Wr(0x00);
I2C_Wr(0xA0);
I2C_Wr(0x00);
I2C_Wr(asaniye);
I2C_Wr(adakika);
I2C_Wr(asaat);
I2C_Wr(agun);
I2C_Wr(aay);
I2C_Stop();
delay_ms(5);
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(0);
I2C_Wr(0x04);
I2C_Stop();
delay_ms(5);
}
void Transform_Time()
{
saniye = ((saniye & 0xF0) >> 4) *10 + (saniye & 0x0F);
dakika = ((dakika & 0xF0) >> 4) *10 + (dakika & 0x0F);
saat = ((saat & 0xF0) >> 4) *10 + (saat & 0x0F);
yil = (gun & 0xC0) >> 6;
gun = ((gun & 0x30) >> 4) *10 + (gun & 0x0F);
ay = ((ay & 0x10) >> 4) *10 + (ay & 0x0F);
}
void Display_Time()
{
LCD_Out(1,1,"Tarih=");
BintoStr(gun);
LCD_Out_Cp(str);
LCD_Out_Cp("-");
BintoStr(ay);
LCD_Out_Cp(str);
LCD_Out_Cp("-");
LCD_Out_Cp("20");
BintoStr(yil);
LCD_Out_Cp(str);
LCD_Out(2,1," Saat=");
BintoStr(saat);
LCD_Out_Cp(str);
LCD_Out_Cp(":");
BintoStr(dakika);
LCD_Out_Cp(str);
LCD_Out_Cp(":");
BintoStr(saniye);
LCD_Out_Cp(str);
}
void init()
{
LCD_Config(PORTB,4,5,7,3,2,1,0);
LCD_Cmd(LCD_CURSOR_OFF);
I2C_Init(100000);
saniye = 0x57;
dakika = 0x52;
saat = 0x15;
gun = 0x03;
ay = 0x10;
yil = 0x02;
haftaningunu = 0x03;
asaniye = 0;
adakika = 0x53;
asaat = 0x15;
agun = 0x03;
aay = 0x10;
}
void main()
{
init();
pcf8583_write();
pcf8583_alarm_write();
while(1)
{
pcf8583_read();
Transform_Time();
Display_Time();
Delay_ms(1000);
}
}
bu kodların satır satır ne işe yaradığını bulmam lazım bilenler yardımcı olursa çok sevinirim.şimdiden teşekkürler