c kod yardım

vanilla__

Üye
Katılım
19 Ara 2006
Mesajlar
2
Puanları
1
Yaş
39
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
 
yokmu yaw kısaca neyin ne olduğunu anlatabilicek biri vakit daralıyo
 
Amca demişki,

Saat bilgisini al LCD ekranda yaz bu kadar
 
arkadaşım bu program mikroişlemci veya mikrokontrolör için yazılmış farındasın herhalde ı2c protokolunu kullanarak saatin alarmını kurabiliyosun ve lcd ekranda herşeyi görebiliyosun adreslerden bakacak olursan anlarsın
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…