Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

rtc_get_time(hr,min,sec)

Başlatan mcan, 01 Temmuz 2005, 14:25:30

mcan

#include <16f84a.h>
#fuses Hs,NOWDT,NOPROTECT
#use delay(clock=4000000)
#byte  PORTA = 5
#byte  PORTB = 6
#include <DS1302a.c>

   main(void)
{
SET_TRIS_B(0);
PORTB =0;

rtc_init();
rtc_set_datetime(01,07,05,5,12,57);
for(;;);
{

}
}


bu kodu yazdığımda bir hata yok yanlız  rtc_get_time(hr,min,sec) yazıp tarihi okumak istediğimde hata veriyor hr,min,sec bunları tanımlayamıyor ds1302 koduna baktığımda

void rtc_get_time(BYTE& hr, BYTE& min, BYTE& sec) {
   hr = read_ds1302(0x85);
   min = read_ds1302(0x83);
   sec = read_ds1302(0x81);
}

yazıyor, & işareti ne anlama geliyor birde burada tanımlanmamışmı zaten byte olarak hr,min, vede sec ben neden bi taha tanımlayacağım tanımlamam gerekiyorsa ne diye tanımlayacağım #byte hr;  diye tanımlayayaım dedim doğal olarak nümerik değerini istedi halbukü nümerik değer kendisi olacak nasıl düzeltiriz

ahmetu

  void rtc_get_time(BYTE* hr, BYTE* min, BYTE* sec)
   {
      *sec = bcd2bin(read_ds1302(0x81));
      *min = bcd2bin(read_ds1302(0x83));
      *hr = bcd2bin(read_ds1302(0x85));
   }


bu tip fonksiyonlar şu şekilde kullanılır;

void deger_oku(void)
{
   char rtc_hour, rtc_min, rtc_sec;

   rtc_get_time(&rtc_hour, &rtc_min, &rtc_sec);
   printf(%02u:%02u:%02u, rtc_hour, rtc_min, rtc_sec);
}

mcan


& Address operator
& Bitwise and operator



ccs de böyle diyor şimdi biz neden
char rtc_hour, rtc_min, rtc_sec;

yazıp sonradan
rtc_get_time(&rtc_hour, &rtc_min, &rtc_sec);

dedik? fazladan & nereden geliyor amacı nedir?
birde
printf(%02u:%02u:%02u, rtc_hour, rtc_min, rtc_sec);

satırı ne işe yarıyor neden içinde  %02u:%02u:%02u yazılı bunlar nedir ne işe yarar?
cevap için teşekkürler elimden geldiğince araştırma yapıyorum ama zamanda önemli birde istediğime ulaşamadığım oluyor ,ondan bunları soruyorum
sağolun

a_to_z

Bu konuyla ilgili benimde bi sorunum var....
biraz zamanı geçmiş bi konu ama umarım ilgilenen birileri bulunur.....

/**********************/
void rtc_get_date(BYTE& day, BYTE& mth, BYTE& year, BYTE& dow) {
  day = rm_bcd(read_ds1302(0x87));
  mth = rm_bcd(read_ds1302(0x89));
  year = rm_bcd(read_ds1302(0x8d));
  dow = rm_bcd(read_ds1302(0x8b));
}
/**********************/

bu kod CCS ds1302 driverin içindeki bi fonksiyon tanımı...
şöyleki ben daha önce C 'de böyle bir tür görmedim olduğunuda pek sanmıyorum ama emin değilim yinede sormak istedim...hiç yoktan bu fonksiyon nasıl kullanılır,,,argümanlarına ne verecem ve ne iş yapar bana yardımcı olur munuz...