Asm ve Hex

Başlatan Umitb, 08 Eylül 2009, 20:17:35

Umitb

Merhabalar,

Başlığımda yalnış olduysa kusura bakmayın elektronik teknisyeni olarak çalışıyorum ama yazılım konusunda neredeyse fazla bilgim yok.Uzun süredir saat termometre devresi yapmak istiyordum ve buldum bir siteden aldım yaptım.Gayet düzgün çalışıyor.Sayın ETE hocama ait olduğunu biliyorum ve bazı değişikliklerden geçmiş bende kısmi olarak bazı hatalar gördüm öncelikli olarak tarih kısmını kaldırmak istiyorum.

Benim sıkıntım kod asm'de yazılmış azda olsa c bilgim var bu kodu c'ye çevirmek ve kendimce değişiklikler yapmak istiyorum.Saat devresini aldığım arkadaştan rica ettim cevap vermedi, saygı duyarım kendiside birşeyler eklemiştir vermek istememiştir.Anladığım kadarıyla zaten kimse kod vermek istemiyor :) Eğer kodu c'ye çevirebilirsem 1-2 arkadaşla kafa kafaya verip istediğim değişiklikleri yapmak güzel olur diye düşünüyorum.Bütün gün boyunca birçok program denedim çevirmek için fakat kodlar arasında sanırım bazı karakter farklılıklarında dolayı hata veriyor.Ne yapmam konusunda bilgi verebilirseniz sevinirim.

Saygılarımla

ilker_32

Merhaba dostum öncelikle foruma hoş geldin.

Ete, hoca basic kullanıyor genelde ama asm yazmaya başladımı bilmiyorum. Asm bilmiyorsan kafa yorma. Sen bence asm'yi bırak c ile yazılmış saat termolarla uğraş. C'de bilmiyorsan basic'den vazgeçme :) yoksa elinde ben sana yollayayım c ile. :lol:

Umitb

Hoşbulduk başındada dediğim gibi fazla bilgim yok bendeki kod bas ve asm uzantılı basic mi bilemiyorum.Ama C ile ilgili saat termo ile ilgili devre,şema,pcb çizimi varsa asla hayır demem üstadım.Mail adresimi özelden gönderiyorum yardımlarınız için çok teşekkür ederim.Bu arada ETE hocanın devresine benziyorsa çok memnun olurum zira elimdeki 7 segmentler anot 57mm.

ilker_32



Proteus dosyasını BURADAN indirebilirsin.

C Kodu:

#include <18F452.h>
#device adc=10
#FUSES NOWDT, WDT128, XT, NOPROTECT, NOOSCSEN, NOBROWNOUT, BORV20, NOPUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=4000000,RESTART_WDT)


#define RTC_RST   PIN_E0
#define RTC_SCLK   PIN_E1
#define RTC_IO   PIN_E2
#include <DS1302.C>

#define data   PIN_C2 // DS ucu 14 nolu uç
#define clock  PIN_C1 // SH_CP 11 nolu uç
#define latch  PIN_C0 // ST_CP 12 nolu uç



#use delay(clock=4000000,RESTART_WDT)




  unsigned char const segment[22] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x63,0x39,
        // display değişkenleri       0     1    2    3    4    5    6    7    8    9    .    C
   0x71,0x37,0x5C,0x78,0x74,0x1C,0x3E,0x5E,0x50,0x00};
//   F    M    o    t    h    u    W    d    r   boş

unsigned char x,y,z,a,b,c,d,e,f,day,mth,year,dow;
unsigned char set,ayar,termo,sayac;
const float lsb=5000.0/1023.0;
unsigned char goster[6];
float ara_deger,value;
float deger;
unsigned int8 animasyonn[6];
int1 up,test;



#int_TIMER1
void TIMER1_isr()
{
sayac++;
   if(sayac==20) sayac=0; 
}

void tarama(unsigned int bekleme) //hc595lere veri gönder
{
unsigned int16 bekle;
unsigned char i,j;
unsigned int8 veri;
    for(i=0; i<6; i++) 
    {
    veri=animasyonn[i];
    
      for (j=0; j<8;j++)
      {   
         if((veri & 0x80)==0x80) { output_high(data); }
           
         else { output_low(data); }
           
         output_high(clock);
         delay_us(1);
         output_low(clock);
         veri<<=1;
      }
   }
   // veri gönderme sonu
   output_high(latch);
   delay_us(1);
   output_low(latch);
   
   bekle=bekleme*10;
   delay_ms(bekle);
   
}

#int_RB
void RB_isr()
{
   if(!input(PIN_B4) && !ayar && !termo)
   {
   set=set+1;
      if(set==3) set=0;
   }

   if(!input(PIN_B5) && !set && !termo) ayar++; 

   if(!input(PIN_B6) &&  ayar>=1) { up=1; test=1; }

   if(!input(PIN_B7) && !set && !ayar)
   {
   termo++;
      if(termo>=3) termo=0;
   }
delay_ms(50); //butona basıldıgında yaklasık 50msn gecikme sağlıyo
}

void saat_oku()
{
   unsigned int8 x_yedek,y_yedek,z_yedek;

   x_yedek = x;
   y_yedek = y;
   z_yedek = z;

   goster[0]=0;
   goster[1]=0;
   goster[2]=0;
   goster[3]=0;
   goster[4]=0;
   goster[5]=0;

   while(z_yedek>=10)   {  goster[1]++;   z_yedek -= 10;   }
   while(z_yedek>=1)    {  goster[0]++;   z_yedek -= 1;    }

   while(y_yedek>=10)   {  goster[3]++;   y_yedek -= 10;   }
   while(y_yedek>=1)    {  goster[2]++;   y_yedek -= 1;    }

   while(x_yedek>=10)   {  goster[5]++;   x_yedek -= 10;   }
   while(x_yedek>=1)    {  goster[4]++;   x_yedek -= 1;    }

   a=goster[0];
   b=goster[1];
   c=goster[2];
   d=goster[3];
   e=goster[4];
   f=goster[5];
}

void tarih_oku()
{
   unsigned int8 mth_yedek,day_yedek;

   mth_yedek = mth;
   day_yedek = day;

   goster[0]=0;
   goster[1]=0;
   goster[2]=0;
   goster[3]=0;

   while(mth_yedek>=10)   {  goster[1]++;   mth_yedek -= 10;   }
   while(mth_yedek>=1)    {  goster[0]++;   mth_yedek -= 1;    }

   while(day_yedek>=10)   {  goster[3]++;   day_yedek -= 10;   }
   while(day_yedek>=1)    {  goster[2]++;   day_yedek -= 1;    }

   c=goster[0];
   d=goster[1];
   e=goster[2];
   f=goster[3];

   switch(dow)
   {
   case 1: //pazar günü
      b=5; //S
      a=17;//u
      break;
   case 2: //pazartesi günü
      b=13;//M
      a=14;//o
      break;
   case 3: //salı günü
      b=15;//t
      a=17;//u
      break;
   case 4: //çarşamba günü
      b=18;//W
      a=19;//d
      break;
   case 5: //perşembe günü
      b=15;//t
      a=16;//h
      break;
   case 6: //cuma günü
      b=12;//F
      a=20;//r
      break;
   case 7: //cumartesi günü
      b=5; //S
      a=15;//t
      break;
   }
}

void yil_oku()
{
   unsigned int8 year_yedek;

   year_yedek = year;

   goster[0]=0;
   goster[1]=0;

   while(year_yedek>=10)   {  goster[1]++;   year_yedek -= 10;   }
   while(year_yedek>=1)    {  goster[0]++;   year_yedek -= 1;    }

   a=(unsigned int8)goster[0];
   b=(unsigned int8)goster[1];
   c=0;
   d=2;
   e=21;
   f=21;

   sayac=0;
}
/*****************Runnig Avagare Filtreleme ile Adc okuma**********************/
adc_oku()
{
   unsigned int16 toplam_adc=0;
   float adc=0.0;
   char i=0;

   for(i=0; i<32; i++)
   toplam_adc+=read_adc();
   
   adc = toplam_adc/32.0;
   return adc;
}
/******************************************************************************/
void sicaklik_oku()
{
value=adc_oku();
ara_deger=(value*lsb); 

if(termo<=1)   { deger=ara_deger; } // Celcius derece için

if(termo==2)   { ara_deger=(1.8*ara_deger)+320.0; deger=ara_deger; } // Fahrenayt derece için

      goster[3]=0;
      goster[2]=0;
      goster[1]=0;
      goster[0]=0;

      while(deger>=1000) {  goster[3]++;   deger -= 1000; }
      while(deger>=100)  {  goster[2]++;   deger -= 100;  }
      while(deger>=10)   {  goster[1]++;   deger -= 10;   }
      while(deger>=1)    {  goster[0]++;   deger -= 1;    }

      f=goster[3];
      e=goster[2];
      d=goster[1];
      c=goster[0];

      b=10;

      if(termo<=1) { a=11; }
      if(termo==2) { a=12; }
}

void setup_cpu() // PIC'in başlangıç ayarları
{
   setup_port_a(RA0_ANALOG);
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   setup_oscillator(False);

   port_b_pullups(TRUE);
   set_adc_channel(0);

   SET_TRIS_A(0XFF);
   SET_TRIS_B(0XF1);
   SET_TRIS_C(0x00);
   SET_TRIS_D(0x00);
}



void set_DS1302() //saat ayar
{
 if(up)
   {
   up=0;
      switch(ayar)
      {
      case 1:
      x++;
      if(x==24) x=0;
      break;
      
      case 2:
      y++;
      if(y==60) y=0;
      break;
      
      case 3:
      day++;
      if(day==31) day=1;
      break;
      
      case 4:
      mth++;
      if(mth==13) mth=1;
      break;
      
      case 5:
      dow++;
      if(dow==8) dow=1;
      break;
      
      case 6:
      year++;
      if(year==40) year=0;
      break;            
      }
   }  
}

void saat_tarih_sicaklik_goster()
{
//********************** SAAT / TARİH / SICAKLIK GÖSTER ************************

   if(set==0 && termo==0 && sayac<=13)  {rtc_get_time(x,y,z); saat_oku(); }

   if(termo>=1 || (set==0 && termo==0 && sayac>13)) sicaklik_oku(); 

   if(set==1 && termo==0) { rtc_get_date(day,mth,year,dow); tarih_oku(); }

   if(set==2) { year = rm_bcd(read_ds1302(0x8d));  yil_oku(); }

      animasyonn[5]=segment[a];

      animasyonn[4]=segment[b];

      if(set==0 && termo==0 && sayac<=13) animasyonn[3]=segment[c]+128; 
      else animasyonn[3]=segment[c]; 

      if(termo>=1 || (set==0 && termo==0 && sayac>13) )   animasyonn[2]=segment[d]+128; 
      else { animasyonn[2]=segment[d]; }

      if(set==0 && termo==0 && sayac<=13)  animasyonn[1]=segment[e]+128; 
      else { animasyonn[1]=segment[e]; }

      if((termo>=1 && f==0) || (set==0 && termo==0 && sayac>13 && f==0)) animasyonn[0]=0;  // segmentin sayısal degeri 0 ise gösterme (sıcaklık gösterirken)
      else {animasyonn[0]=segment[f]; }

      if(termo>=1 || (set==0 && termo==0 && sayac>13))  tarama(50);  //tarama (not: termo okurken gecikme olussun die 70 tarama)
      else  tarama(3);  //tarama
}

void saat_tarih_ayar_goster()
{
//*************************** SAAT/TARİH AYAR GÖSTER****************************
   
   if(ayar<3)  { saat_oku();  }
   if(ayar>=3 && ayar<6) { tarih_oku(); }
   if(ayar==6) { yil_oku(); }

       if(ayar<6 || (get_timer1() <= 32768)) // yılı ayarlarken segmentlerin yanıp sönmesi için
       {
            if( (get_timer1() <= 32768) && ayar == 5 ) { animasyonn[5]=0; }
            else { animasyonn[5]=segment[a]; }
      
            if( (get_timer1() <= 32768) && ayar == 5 ) { animasyonn[4]=0; }
            else { animasyonn[4]=segment[b]; }
      
            if( (get_timer1() <= 32768) && (ayar==2 || ayar==4) ) { animasyonn[3]=0; }
            else { if(ayar<3) { animasyonn[3]=segment[c]+128; }
                   else { animasyonn[3]=segment[c]; }
                 }
      
            if( (get_timer1() <= 32768) && (ayar==2 || ayar==4) ) { animasyonn[2]=0; }
            else { animasyonn[2]=segment[d]; }
      
      
            if( (get_timer1() <= 32768) && (ayar==1 || ayar==3) ) { animasyonn[1]=0; }
            else { if(ayar<3) { animasyonn[1]=segment[e]+128; }
                   else { animasyonn[1]=segment[e]; }
                 }
      
            if( (get_timer1() <= 32768) && (ayar==1 || ayar==3) ) { animasyonn[0]=0; }
            else { animasyonn[0]=segment[f]; }
      
            tarama(3); //tarama
       }
      
       else
       {
       animasyonn[0]=0;
       animasyonn[1]=0;
       animasyonn[2]=0;
       animasyonn[3]=0;
       animasyonn[4]=0;
       animasyonn[5]=0;
       tarama(3); //tarama
       }
}

void degiskenlere_ilk_degerlerini_ver()
{
   set=0;
   ayar=0;
   up=0;
   test=0;
   termo=0;
   set_timer1(0);
   sayac=0;
}

void main()
{  
   setup_cpu();
   
   degiskenlere_ilk_degerlerini_ver();

   rtc_init(); // ds1302 ile haberleş

   set_timer1(0);

   for(;;)
   {
   saat_tarih_sicaklik_goster();
      
      if(ayar==1)
      {
      rtc_get_date(day,mth,year,dow);
   
      rtc_get_time(x,y,z);
   
         while(true)
         {
         saat_tarih_ayar_goster();
      
         set_DS1302(); // saat ayar alt programını çağır
      
            if(ayar==7)
            {
               if(test)
               {
               rtc_set_datetime(day,mth,year,dow,x,y);
               test=0;
               }
            sayac=0;
            ayar=0;
            break;
            }
         }
      }
   }
}

ilker_32



Proteus dosyasını BURADAN indirebilirsin.

C Kodu:

#include <18F452.h>
#device adc=10
#FUSES NOWDT, WDT128, XT, NOPROTECT, NOOSCSEN, NOBROWNOUT, BORV20, NOPUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use delay(clock=4000000,RESTART_WDT)


#define RTC_RST   PIN_E0
#define RTC_SCLK   PIN_E1
#define RTC_IO   PIN_E2
#include <DS1302.C>



#use delay(clock=4000000,RESTART_WDT)

#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#use fast_io (E)


  unsigned char const segment[22] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x63,0x39,
        // display değişkenleri       0     1    2    3    4    5    6    7    8    9    .    C
   0x71,0x37,0x5C,0x78,0x74,0x1C,0x3E,0x5E,0x50,0x00};
//   F    M    o    t    h    u    W    d    r   boş

unsigned int8 x,y,z,a,b,c,d,e,f,day,mth,year,dow;
unsigned int8 set,ayar,up,test,termo,sayac;
const float lsb=5000.0/1023.0;
unsigned char goster[6];
float ara_deger,value;
float deger;
unsigned int8 animasyonn[12];



#int_TIMER1
void TIMER1_isr()
{
sayac++;
   if(sayac==20) { sayac=0; }
}

void tarama(unsigned int tarama_sayisi, unsigned int kaydirmasi_sayisi)
{
const int display_no[6] = {0b11011111,0b11101111,0b11110111,0b11111011,0b11111101,0b11111110};

unsigned char i,j,k;

   for(i=0; i<=kaydirmasi_sayisi; i++)
   {
      for(j=0; j<=tarama_sayisi; j++)
      {
         for(k=0; k<6; k++)
         {
         output_d(display_no[k]);
         output_c(animasyonn[i+k]);
         delay_ms(2);
         }
      }
   }
}

#int_RB
void RB_isr()
{
   if(!input(PIN_B4) && !ayar && !termo)
   {
   set=set+1;
      if(set==3)
      {
      set=0;
      }
   }

   if(!input(PIN_B5) && !set && !termo) { ayar++; }

   if(!input(PIN_B6) &&  ayar>=1) { up=1; test=1; }

   if(!input(PIN_B7) && !set && !ayar)
   {
   termo++;
         if(termo>=3)
         {
         termo=0;
         }
   }
tarama(4,0); //butona basıldıgında yaklasık 50msn gecikme sağlıyo
}

void saat_oku()
{
   unsigned int8 x_yedek,y_yedek,z_yedek;

   rtc_get_time(x,y,z);

   x_yedek = x;
   y_yedek = y;
   z_yedek = z;

   goster[0]=0;
   goster[1]=0;
   goster[2]=0;
   goster[3]=0;
   goster[4]=0;
   goster[5]=0;

   while(z_yedek>=10)   {  goster[1]++;   z_yedek -= 10;   }
   while(z_yedek>=1)    {  goster[0]++;   z_yedek -= 1;    }

   while(y_yedek>=10)   {  goster[3]++;   y_yedek -= 10;   }
   while(y_yedek>=1)    {  goster[2]++;   y_yedek -= 1;    }

   while(x_yedek>=10)   {  goster[5]++;   x_yedek -= 10;   }
   while(x_yedek>=1)    {  goster[4]++;   x_yedek -= 1;    }

   a=goster[0];
   b=goster[1];
   c=goster[2];
   d=goster[3];
   e=goster[4];
   f=goster[5];
}

void tarih_oku()
{
   unsigned int8 mth_yedek,day_yedek;

   rtc_get_date(day,mth,year,dow);

   mth_yedek = mth;
   day_yedek = day;

   goster[0]=0;
   goster[1]=0;
   goster[2]=0;
   goster[3]=0;

   while(mth_yedek>=10)   {  goster[1]++;   mth_yedek -= 10;   }
   while(mth_yedek>=1)    {  goster[0]++;   mth_yedek -= 1;    }

   while(day_yedek>=10)   {  goster[3]++;   day_yedek -= 10;   }
   while(day_yedek>=1)    {  goster[2]++;   day_yedek -= 1;    }

   c=goster[0];
   d=goster[1];
   e=goster[2];
   f=goster[3];

   switch(dow)
   {
   case 1: //pazar günü
      b=5; //S
      a=17;//u
      break;
   case 2: //pazartesi günü
      b=13;//M
      a=14;//o
      break;
   case 3: //salı günü
      b=15;//t
      a=17;//u
      break;
   case 4: //çarşamba günü
      b=18;//W
      a=19;//d
      break;
   case 5: //perşembe günü
      b=15;//t
      a=16;//h
      break;
   case 6: //cuma günü
      b=12;//F
      a=20;//r
      break;
   case 7: //cumartesi günü
      b=5; //S
      a=15;//t
      break;
   }
}

void yil_oku()
{
   unsigned int8 year_yedek;

   year = rm_bcd(read_ds1302(0x8d));

   year_yedek = year;

   goster[0]=0;
   goster[1]=0;

   while(year_yedek>=10)   {  goster[1]++;   year_yedek -= 10;   }
   while(year_yedek>=1)    {  goster[0]++;   year_yedek -= 1;    }

   a=(unsigned int8)goster[0];
   b=(unsigned int8)goster[1];
   c=0;
   d=2;
   e=21;
   f=21;

   sayac=0;
}

adc_oku()
{
   unsigned int16 toplam_adc=0;
   unsigned int8 i;
   float adc=0.0;
      for(i=0; i<=32; i++)
      {
      toplam_adc += read_adc();
      delay_us(5);
      }
   adc = toplam_adc/32.0;
   return adc;
}

void sicaklik_oku()
{
value=adc_oku();
ara_deger=(value*lsb); //termonun gösterdiği hatayı gidermek için değer-21 yapıldı

if(termo<=1)   { deger=ara_deger; } // Celcius derece için

if(termo==2)   { ara_deger=(1.8*ara_deger)+320.0; deger=ara_deger; } // Fahrenayt derece için

      goster[3]=0;
      goster[2]=0;
      goster[1]=0;
      goster[0]=0;

      while(deger>=1000) {  goster[3]++;   deger -= 1000; }
      while(deger>=100)  {  goster[2]++;   deger -= 100;  }
      while(deger>=10)   {  goster[1]++;   deger -= 10;   }
      while(deger>=1)    {  goster[0]++;   deger -= 1;    }

      f=goster[3];
      e=goster[2];
      d=goster[1];
      c=goster[0];

      b=10;

      if(termo<=1) { a=11; }
      if(termo==2) { a=12; }
}

void setup_cpu() // PIC'in başlangıç ayarları
{
   setup_port_a(RA0_ANALOG);
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   setup_oscillator(False);

   port_b_pullups(TRUE);
   set_adc_channel(0);

   SET_TRIS_A(0XFF);
   SET_TRIS_B(0XF0);
   SET_TRIS_C(0x00);
   SET_TRIS_D(0x00);
}



void giris_animasyon()
{
   disable_interrupts(GLOBAL);
   rtc_get_time(x,y,z);
   saat_oku();
   animasyonn[0]=64;
   animasyonn[1]=64;
   animasyonn[2]=64;
   animasyonn[3]=64;
   animasyonn[4]=64;
   animasyonn[5]=64;
   animasyonn[6]=segment[f];
   animasyonn[7]=segment[e]+128;
   animasyonn[8]=segment[d];
   animasyonn[9]=segment[c]+128;
   animasyonn[10]=segment[b];
   animasyonn[11]=segment[a];

   tarama(15,6);

   enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
}

void main()
{
   setup_cpu();

   set=0;
   ayar=0;
   up=0;
   test=0;
   termo=0;
   set_timer1(0);
   sayac=0;

   rtc_init(); // ds1302 ile haberleş

   giris_animasyon();
   set_timer1(0);



for(;;)
{
//********************** SAAT / TARİH / SICAKLIK GÖSTER ************************

   if(set==0 && termo==0 && sayac<=15) {  saat_oku(); }

   if(termo>=1 || (set==0 && termo==0 && sayac>15)) { sicaklik_oku(); }

   if(set==1 && termo==0) {  tarih_oku();  }

   if(set==2) {  yil_oku(); }

      animasyonn[5]=segment[a];

      animasyonn[4]=segment[b];

      if(set==0 && termo==0 && sayac<=15) { animasyonn[3]=segment[c]+128; }
      else { animasyonn[3]=segment[c]; }

      if(termo>=1 || (set==0 && termo==0 && sayac>15) ) { animasyonn[2]=segment[d]+128; }
      else { animasyonn[2]=segment[d]; }

      if(set==0 && termo==0 && sayac<=15) { animasyonn[1]=segment[e]+128; }
      else { animasyonn[1]=segment[e]; }

      if((termo>=1 && f==0) || (set==0 && termo==0 && sayac>15 && f==0)) { animasyonn[0]=0; } // segmentin sayısal degeri 0 ise gösterme (sıcaklık gösterirken)
      else {animasyonn[0]=segment[f]; }

      if(termo>=1 || (set==0 && termo==0 && sayac>15)) { tarama(70,0); } //tarama (not: termo okurken gecikme olussun die 70 tarama)
      else { tarama(3,0); } //tarama

//******************************** SAAT/TARİH AYAR *****************************

if(ayar==1)
{
   rtc_get_date(day,mth,year,dow);

   rtc_get_time(x,y,z);

   while(true)
   {

   if(ayar<3)  { saat_oku();  }
   if(ayar>=3 && ayar<6) { tarih_oku(); }
   if(ayar==6) { yil_oku(); }

 if(ayar<6 || (get_timer1() <= 32768)) // yılı ayarlarken segmentlerin yanıp sönmesi için
 {
      if( (get_timer1() <= 32768) && ayar == 5 ) { animasyonn[5]=0; }
      else { animasyonn[5]=segment[a]; }

      if( (get_timer1() <= 32768) && ayar == 5 ) { animasyonn[4]=0; }
      else { animasyonn[4]=segment[b]; }

      if( (get_timer1() <= 32768) && (ayar==2 || ayar==4) ) { animasyonn[3]=0; }
      else { if(ayar<3) { animasyonn[3]=segment[c]+128; }
             else { animasyonn[3]=segment[c]; }
           }

      if( (get_timer1() <= 32768) && (ayar==2 || ayar==4) ) { animasyonn[2]=0; }
      else { animasyonn[2]=segment[d]; }


      if( (get_timer1() <= 32768) && (ayar==1 || ayar==3) ) { animasyonn[1]=0; }
      else { if(ayar<3) { animasyonn[1]=segment[e]+128; }
             else { animasyonn[1]=segment[e]; }
           }

      if( (get_timer1() <= 32768) && (ayar==1 || ayar==3) ) { animasyonn[0]=0; }
      else { animasyonn[0]=segment[f]; }

      tarama(3,0); //tarama
 }

 else
 {
 animasyonn[0]=0;
 animasyonn[1]=0;
 animasyonn[2]=0;
 animasyonn[3]=0;
 animasyonn[4]=0;
 animasyonn[5]=0;
   tarama(3,0); //tarama
 }

      if(ayar==1 && up==1)
      {
      x++;
         if(x==24)
         {
         x=0;
         }
      up=0;
      }

      if(ayar==2 && up==1)
      {
      y++;
         if(y==60)
         {
         y=0;
         }
      up=0;
      }

      if(ayar==3 && up==1)
      {
      day++;
         if(day==31)
         {
         day=1;
         }
      up=0;
      }

      if(ayar==4 && up==1)
      {
      mth++;
         if(mth==13)
         {
         mth=1;
         }
      up=0;
      }

      if(ayar==5 && up==1)
      {
      dow++;
         if(dow==8)
         {
         dow=1;
         }
      up=0;
      }


       if(ayar==6 && up==1)
      {
      year++;
         if(year==40)
         {
         year=0;
         }
      up=0;
      }

         if(ayar==7)
         {
         ayar=0;
         sayac=0;
            if(test==1)
            {
            rtc_set_datetime(day,mth,year,dow,x,y);
            test=0;
            }
         break;
         }

   }
}
//******************************************************************************

}

}

ilker_32

C ile güçlerinizi birleştirerek daha güzel şeyler yaratabilirsin. Sonra forum kurallarını okumayı unutmuşsun!

Kolay gelsin...

Umitb

Çok teşekkür ederim