uygulama yardım

Başlatan taytis, 26 Mart 2007, 15:50:03

taytis

Arkadaşlar selam,yapmak istediğim bir uygulama var ama çok basit bir yerde takıldım,yardımcı olursanız çok sevinirim,DS1302 kullanarak pic'e bağlı butona basıldığında o an zamanı pic'in epromuna yazdırmak istiyorum ,diğer butona basıldığı zamanda yazdırdığım verileri pc'den almak istiyorum,diyelimki 20 kere 1. butona basıldı yani eeproma bilgi yazıldı,2.butona basıldığı zaman 20 satırlık eeproma girilmiş olan zaman dilimini almak istiyorum.











#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif
#include <ds1302.c>
set_tris_a(00000000);
/////////////////
int saat,dakika,yil,ay,gun ;

int day=01 ;/////
int mth=01 ;/////
int year=07 ;////      ZAMAN DEĞİŞKENLERİ
int dow ;////////
int hour=01;/////
int min=01;//////
int sec=01;
/////////////////
////////////////////
int asaat=0;////////
int adakika=501;/////
int asaniye=1001;////    EPROM DEĞİŞKENLERİ
int ayil=1501;///////
int aay=2001;////////
int agun=2501;///////
////////////////////
int write_counter=0;
int s_o=0;


write_eeprom_yaz()
{
printf("\r\n\n***EPROMA YAZIYOR***\r\n");
write_counter++;
Write_eeprom(asaat,hour);
Write_eeprom(adakika,min);
Write_eeprom(ayil,year);
Write_eeprom(aay,mth);
Write_eeprom(agun,day);
asaat=asaat+1;
adakika=adakika+1;
asaniye=asaniye+1;
ayil=ayil+1;
aay=aay+1;
agun=agun+1;
}


write_eprom_oku()
{
printf("\r\n\n***EPROMDAN OKUNUYOR***\r\n");
asaat=0;
adakika=501;
asaniye=1001;
ayil=1501;
aay=2001;
agun=2501;

for(;;)
{
delay_ms( 200 );
saat=read_EEPROM (asaat);
delay_ms( 200 );
dakika=read_EEPROM (adakika);
delay_ms( 200 );
yil=read_EEPROM (ayil);
delay_ms( 200 );
ay=read_EEPROM (aay);
delay_ms( 200 );
gun=read_EEPROM (agun);
delay_ms( 200 );
printf("%2d",saat);
printf("%2d",dakika);
printf("%2d",yil);
printf("%2d",ay);
printf("%2d\r\n",gun);
asaat=asaat+1;
adakika=adakika+1;
ayil=ayil+1;
aay=aay+1;
agun=agun+1;
}



}
void main()

{
rtc_init();
rtc_set_datetime(day,mth,year,dow,hour,min);
for(;;)
{



if( ! input(PIN_A0) ){
rtc_get_date(day,mth,year,dow);
rtc_get_time(hour,min,sec)   ;
write_eeprom_yaz () ;}while (! input(PIN_A0));

if( ! input(PIN_A5) ){
write_eprom_oku () ;}
while (! input(PIN_A5));}}

Ziya

Write_eeprom(agun,day);

Bunlar yanlış.

Write_eeprom(0,hour);
Write_eeprom(1,min);
Write_eeprom(2,year);
Write_eeprom(3,mth);

gibi olacak. Sizin agun değişkeniniz 2bin küsür. EEPROM'da o kadar bayt yok ki gidip 2bin küsürüncü bayta yazsın.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

taytis

Merhaba Ziya, eeprom kayıt yapıp tekrar okuyabiliyorum, ama diyelimki 10 adet değer eproma yazıcam ve tekrar onları okuyacam bana o kunada yardımcıolursan sevinirim. Örnek: 1.butona basılış 29/03/2007  21:52:00.........5.butona basıls 30/03/2007 19:05:00..............10.butona baslış 01/04/2007 21:21:05, okumak için 2. butona bastığımda hepsini yani 10 adet zamanı epromdan almak istiyorum.