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
 

Forum istatistikleri

Konular
128,269
Mesajlar
916,352
Kullanıcılar
450,093
Son üye
plmkenan

Yeni konular

Geri
Üst