Haberler:

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

Ana Menü

Alarm saat ve kesme sorunu

Başlatan mechanicalengine, 14 Mayıs 2014, 01:06:12

mechanicalengine

Arkadaşlar,

Saatteki alarmı ayarladığımda alarm zamanında b2 ledinin yanması gerekiyor, ve ilk seferde ayarladığım gibi yanıyor. Fakat alarmı tekrar ayarladığımda b2 ledi yerine b1 ledi 1 saniye yanıp ondan sonra b2 led'i yanıyor. Sizce sorun ne olabilir?

Aşağıdaki linkde dosyaları bulabilirsiniz.

https://www.dropbox.com/sh/6h7vwmj2arosnsf/AACouo6PdHQD5pRYg9Wa3-W2a

sorunu gösteren videoyu da aşağıdaki linkte görebilirsiniz.
https://vimeo.com/95206904

#include "alarm.h"
#include "DS1302.c"
#include "lcd.c"

#define use_portb_lcd TRUE

#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

int8 saniye,dakika,saat,gun,ay,hafta,yil,ayar=0,ayar2=0,sa1,da1,sa2,da2,ys1,yd1,ys2,yd2;
int1 bekle=false;
int i=1;

#separate
void lcd()
{
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%02d/%02d/%02d",gun,ay,yil);  
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%02d:%02d:%02d",saat,dakika,saniye);
   lcd_gotoxy(11,1);
   switch(hafta)  
      {                     
         case 1: printf(lcd_putc,"Pzts"); break; 
         case 2: printf(lcd_putc,"SALI"); break; 
         case 3: printf(lcd_putc,"CARS"); break; 
         case 4: printf(lcd_putc,"PERS"); break;
         case 5: printf(lcd_putc,"CUMA"); break; 
         case 6: printf(lcd_putc,"Cmts"); break; 
         case 7: printf(lcd_putc,"Pzar"); break; 
      }
      }

#separate
   void lcdyemleme1()
   {
      lcd_gotoxy(1,1);
      printf(lcd_putc,"alarm1");  
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%02d:%02d",ys1,yd1);
   }
   
#separate
   void lcdyemleme1_2()
   {
      {lcd_gotoxy(1,1);
      printf(lcd_putc,"\falarm1 \nsaati");  
      lcd_gotoxy(11,2);
      printf(lcd_putc,"%02d:%02d",ys1,yd1);
      }delay_ms(1000);
   while(1)
      {
      if (input(pin_d3))
         {
         delay_ms(100);
         ayar2=4;
         printf(lcd_putc,"\f");
         break;
         
         }
      }
  }
#separate
void lcdyemleme2()
   {
   lcd_gotoxy(1,1);
   printf(lcd_putc,"alarm2");  
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%02d:%02d",ys2,yd2);
   }
#separate
void lcdyemleme2_2()
{
   {lcd_gotoxy(1,1);
   printf(lcd_putc,"\falarm2 \nsaati");
   lcd_gotoxy(11,2);
   printf(lcd_putc,"%02d:%02d",ys2,yd2);}
   delay_ms(1000);
   while(1)
   {
      if(input(pin_d3));
      {
   delay_ms(100);
   ayar2=0;
   printf(lcd_putc,"\f");
   break;
      }
   }
}

#int_ext
void kesme(void)
   {
   if (i==4)
         {
         disable_interrupts(INT_EXT);
         disable_interrupts(GLOBAL);
         output_low(pin_b1);
         output_low(pin_b2);
         output_high(pin_b3);
         }
   else  { 
         bekle=true;
         }
         i++;
  }

#int_RB
void B_degisiklik()
         {
         if(input(pin_b4))
         {
         output_low(pin_b1);
         output_low(pin_b2);
         output_low(pin_b3);
         i=0;
         bekle=false;
         }
         }
#separate
void kaydedildiyazdir()
{printf(lcd_putc,"\fAYARLARINIZ\n   KAYDEDILDI...");delay_ms(1000);printf(lcd_putc,"\f");}//kaydedildiyazdir//İLERİDE SAĞDAN SOLDAN KAYAN YAZI YAZDIRILACAK.

#separate
void baslangicekrani()
{printf(lcd_putc,"\f   merhaba\n   hosgeldiniz...");delay_ms(1000);printf(lcd_putc,"\f");}//İLERİDE SAĞDAN SOLDAN KAYAN YAZI YAZDIRILACAK.

#separate
void yemayari(){printf(lcd_putc,"\falarmi \nayarlayabilirsiniz...");delay_ms(1000);printf(lcd_putc,"\f");}//İLERİDE SAĞDAN SOLDAN KAYAN YAZI YAZDIRILACAK.

#separate
void kahvalti(){printf(lcd_putc,"\falarm1 \nayarlaniyor...");delay_ms(1000);printf(lcd_putc,"\f");}

#separate
void aksam(){printf(lcd_putc,"\falarm2 \nayarlaniyor...");delay_ms(1000);printf(lcd_putc,"\f");}

#separate
void ayaryap()        //(0x0d) //lcd belirtilen konumun yanıp sönmesi
{
   if(input(pin_d2)==0){ayar++;delay_ms(20);printf(lcd_putc,"\f ayarlarinizi\n yapabilirsiniz");delay_ms(450);printf(lcd_putc,"\f");}

   while(ayar==1){
   lcd();lcd_gotoxy(1,1);lcd_send_byte(0x01,0x0d);lcd_gotoxy(2,1);lcd_send_byte(0x02,0x0d);   
   if(input(pin_d0)==0){gun++;delay_ms(20);if(gun==32){gun=1;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){gun--;delay_ms(20);if(gun==0){gun=31;}while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
   
   while(ayar==2){
   lcd();lcd_gotoxy(4,1);lcd_send_byte(0x04,0x0d);lcd_gotoxy(5,1);lcd_send_byte(0x05,0x0d);
   if(input(pin_d0)==0){ay++;delay_ms(20);if(ay==13){ay=1;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){ay--;delay_ms(20);if(ay==0){ay=12;}while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
    
   while(ayar==3){
   lcd();lcd_gotoxy(7,1);lcd_send_byte(0x07,0x0d);lcd_gotoxy(8,1);lcd_send_byte(0x08,0x0d);
   if(input(pin_d0)==0){yil++;delay_ms(20);while(input(pin_d0)==0);}
   if(input(pin_d1)==0){yil--;delay_ms(20);if(yil==-1)yil=99;while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
   
   while(ayar==4){
   lcd_gotoxy(11,1);lcd_send_byte(0x11,0x0d);lcd();delay_us(5);
   if(input(pin_d0)==0){hafta++;delay_ms(20);if(hafta==8){hafta=1;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){hafta--;delay_ms(20);if(hafta==0){hafta=7;}while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
   
   while(ayar==5){
   lcd_gotoxy(1,2);lcd_send_byte(0x40,0x0d);lcd_gotoxy(2,2);lcd_send_byte(0x41,0x0d);lcd();
   if(input(pin_d0)==0){saat++;delay_ms(20);if(saat==24){saat=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){saat--;delay_ms(20);if(saat==-1){saat=23;}while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
   
   while(ayar==6){
   lcd_gotoxy(4,2);lcd_send_byte(0x43,0x0d);lcd_gotoxy(5,2);lcd_send_byte(0x44,0x0d);lcd();
   if(input(pin_d0)==0){dakika++;delay_ms(20);if(dakika==60){dakika=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){dakika--;delay_ms(20);if(dakika==-1){dakika=59;}while(input(pin_d1)==0);}
   if(input(pin_d2)==0){ayar++;delay_ms(200);while(input(pin_d2)==0);}}
   
      
   while(ayar==7){rtc_set_datetime(gun,ay,yil,hafta,saat,dakika);    //değişkenleri saat entegresine aktar.
   delay_ms(20);
   kaydedildiyazdir();
   ayar=0;
}
   }
#separate
 void alarmayariyap()        //(0x0d) //lcd belirtilen konumun yanıp sönmesi
{
   if(input(pin_d3)==0){ayar2++;delay_ms(20);yemayari();}
         
   while(ayar2==1){
   lcdyemleme1();
   lcd_gotoxy(1,2);lcd_send_byte(0x01,0x0d);lcd_gotoxy(2,2);lcd_send_byte(0x02,0x0d);
   if(input(pin_d0)==0){ys1++;delay_ms(20);if(ys1==12){ys1=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){ys1--;delay_ms(20);if(ys1==-1){ys1=11;}while(input(pin_d1)==0);}
   if(input(pin_d3)==0){ayar2++;delay_ms(200);while(input(pin_d3)==0);}}
   
   while(ayar2==2){
   lcdyemleme1();
   lcd_gotoxy(4,2);lcd_send_byte(0x04,0x0d);lcd_gotoxy(5,2);lcd_send_byte(0x05,0x0d);
   if(input(pin_d0)==0){yd1++;delay_ms(20);if(yd1==60){yd1=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){yd1--;delay_ms(20);if(yd1==-1){yd1=59;}while(input(pin_d1)==0);}
   if(input(pin_d3)==0){ayar2++;delay_ms(200);while(input(pin_d3)==0);}}
   
   while(ayar2==3){sa1=ys1;da1=yd1;
   kahvalti();
   lcdyemleme1_2();
   }
      
   while(ayar2==4){
   lcdyemleme2();
   lcd_gotoxy(1,2);lcd_send_byte(0x01,0x0d);lcd_gotoxy(2,2);lcd_send_byte(0x02,0x0d);
   if(input(pin_d0)==0){ys2++;delay_ms(20);if(ys2==24){ys2=12;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){ys2--;delay_ms(20);if(ys2==11){ys2=23;}while(input(pin_d1)==0);}
   if(input(pin_d3)==0){ayar2++;delay_ms(200);while(input(pin_d3)==0);}}
   
   
   while(ayar2==5){
   lcdyemleme2();
   lcd_gotoxy(4,2);lcd_send_byte(0x04,0x0d);lcd_gotoxy(5,2);lcd_send_byte(0x05,0x0d);
   if(input(pin_d0)==0){yd2++;delay_ms(20);if(yd2==60){yd1=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){yd2--;delay_ms(20);if(yd2==-1){yd1=59;}while(input(pin_d1)==0);}
   if(input(pin_d3)==0){ayar2++;delay_ms(200);while(input(pin_d3)==0);}}
   
   while(ayar2==6){sa2=ys2;da2=yd2;//lcd_gotoxy(1,1); 
   aksam();
   lcdyemleme2_2();
   }}
#separate
void main()
{  
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   lcd_init();       //lcd yi hazırla
   rtc_init();       //saat entegresini hazırla
   rtc_set_datetime(24,04,14,4,8,00,); // Tarih ve Saat ayarları yapılıyor
   delay_ms(5);
   baslangicekrani();
   delay_ms(200);
   printf(lcd_putc,"\f");
   delay_ms(5);    
   
while(1)
{
      if(ayar==0&&ayar2==0){rtc_get_time(saat,dakika,saniye);rtc_get_date(gun,ay,yil,hafta);}
      lcd();
      ayaryap();
      alarmayariyap();
{           
if(saat==sa1&&dakika==da1&&saniye==00)
               {
               set_tris_b(0b00010001);
               output_b(0x00);
               output_low(pin_b1);
               output_high(pin_b2);
               ext_int_edge(H_TO_L);
               enable_interrupts(INT_EXT);
               enable_interrupts(INT_RB);
               enable_interrupts(GLOBAL);
               }

if (bekle==true)
    {
     output_low(pin_b2);
     output_high(pin_b1);
     delay_ms(1000);
     output_low(pin_b1);
     output_high(pin_b2);
     bekle=false;
    }
    }
}
{           
if(saat==sa2&&dakika==da2&&saniye==00)
               {
               set_tris_b(0b00010001);
               output_b(0x00);
               output_low(pin_b1);
               output_high(pin_b2);
               ext_int_edge(H_TO_L);
               enable_interrupts(INT_EXT);
               enable_interrupts(INT_RB);
               enable_interrupts(GLOBAL);
               }

if (bekle==true)
    {
     output_low(pin_b2);
     output_high(pin_b1);
     delay_ms(1000);
     output_low(pin_b1);
     output_high(pin_b2);
     bekle=false;
    }
    }
}
   


Teşekkürler

mechanicalengine


mehmet

Ozelden yazdığım düzeltmeleri yapmazsanız
kodu okumamız zor...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

mechanicalengine

Mehmet hocam belirttiğiniz gibi yazdım fakat bu şekilde daha anlaşılmaz oldu gibi geldi bana.  ???

#include "alarm.h"
#include "DS1302.c"
#include "lcd.c"
#define use_portb_lcd TRUE
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

int8 saniye,dakika,saat,gun,ay,hafta,yil,ayar=0,ayar2=0,sa1,da1,sa2,da2,ys1,yd1,ys2,yd2;
int1 bekle=false;
int i=1;

#separate

void lcd()
{
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%02d/%02d/%02d",gun,ay,yil);  
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%02d:%02d:%02d",saat,dakika,saniye);
   lcd_gotoxy(11,1);
   switch(hafta)  
   {                     
         case 1: printf(lcd_putc,"Pzts"); break; 
         case 2: printf(lcd_putc,"SALI"); break; 
         case 3: printf(lcd_putc,"CARS"); break; 
         case 4: printf(lcd_putc,"PERS"); break;
         case 5: printf(lcd_putc,"CUMA"); break; 
         case 6: printf(lcd_putc,"Cmts"); break; 
         case 7: printf(lcd_putc,"Pzar"); break; 
   }
}

#separate
   
void lcdyemleme1()
      {
         lcd_gotoxy(1,1);
         printf(lcd_putc,"alarm1");  
         lcd_gotoxy(1,2);
         printf(lcd_putc,"%02d:%02d",ys1,yd1);
      }
   
#separate
   
void lcdyemleme1_2()
      {
            {
      lcd_gotoxy(1,1);
            printf(lcd_putc,"\falarm1 \nsaati");  
            lcd_gotoxy(11,2);
            printf(lcd_putc,"%02d:%02d",ys1,yd1);
            }
   delay_ms(1000);
   
   while(1)
            {
            if (input(pin_d3))
               {
               delay_ms(100);
               ayar2=4;
               printf(lcd_putc,"\f");
               break;
         
               }
            }
     }

#separate
   
void lcdyemleme2()
      {
      lcd_gotoxy(1,1);
      printf(lcd_putc,"alarm2");  
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%02d:%02d",ys2,yd2);
      }

#separate

void lcdyemleme2_2()
   {
         {
      lcd_gotoxy(1,1);
         printf(lcd_putc,"\falarm2 \nsaati");
         lcd_gotoxy(11,2);
         printf(lcd_putc,"%02d:%02d",ys2,yd2);}
         delay_ms(1000);
      while(1)
            {
               if(input(pin_d3));
                  {
               delay_ms(100);
               ayar2=0;
               printf(lcd_putc,"\f");
               break;
                  }
            }
   }

#int_ext

void kesme(void)
      {
      if (i == 4)
            {
            disable_interrupts(INT_EXT);
            disable_interrupts(GLOBAL);
            output_low(pin_b1);
            output_low(pin_b2);
            output_high(pin_b3);
            }
      else  
      { 
            bekle=true;
            }
      i++;
     }


#int_RB

void B_degisiklik()
   {
        if(input(pin_b4))
      {
      output_low(pin_b1);
            output_low(pin_b2);
            output_low(pin_b3);
            i=0;
            bekle=false;
            }
   }

#separate

   void kaydedildiyazdir()   //kaydedildiyazdir
   {
   printf(lcd_putc,"\fAYARLARINIZ\n   KAYDEDILDI...");
   delay_ms(1000);
   printf(lcd_putc,"\f");
   }

#separate

   void baslangicekrani()
   {
   printf(lcd_putc,"\f   merhaba\n   hosgeldiniz...");
   delay_ms(1000);
   printf(lcd_putc,"\f");
   }

#separate

void yemayari()
   {
   printf(lcd_putc,"\falarmi \nayarlayabilirsiniz...");
   delay_ms(1000);
   printf(lcd_putc,"\f");
   }

#separate
   
void kahvalti()
   {
   printf(lcd_putc,"\falarm1 \nayarlaniyor...");
   delay_ms(1000);
   printf(lcd_putc,"\f");
   }

#separate
   
void aksam()
   {
   printf(lcd_putc,"\falarm2 \nayarlaniyor...");
   delay_ms(1000);
   printf(lcd_putc,"\f");
   }

#separate

void ayaryap()        //(0x0d) //lcd belirtilen konumun yanıp sönmesi

{
      if(input(pin_d2) == 0)
         {
         ayar++;
         delay_ms(20);
         printf(lcd_putc,"\f ayarlarinizi\n yapabilirsiniz");
         delay_ms(450);printf(lcd_putc,"\f");
         }

   while(ayar==1)
   {
      lcd();
      lcd_gotoxy(1,1);
      lcd_send_byte(0x01,0x0d);
      lcd_gotoxy(2,1);
      lcd_send_byte(0x02,0x0d);
   
      if(input(pin_d0) == 0)
         {
         gun++;
         delay_ms(20);
         if(gun == 32){gun = 1;
         }

      while(input(pin_d0) == 0);
   }
      
      if(input(pin_d1) == 0)
         {
         gun--;
         delay_ms(20);
         if(gun == 0)
            {
            gun = 31;
            }
         while(input(pin_d1) == 0);
         }

         if(input(pin_d2) == 0)
         {
         ayar++;
         delay_ms(200);
         while(input(pin_d2 )== 0);
         }
}
   
   while(ayar == 2)
{
      lcd();
   lcd_gotoxy(4,1);
   lcd_send_byte(0x04,0x0d);
   lcd_gotoxy(5,1);
   lcd_send_byte(0x05,0x0d);
   
   if(input(pin_d0) == 0)
   {
   ay++;
   delay_ms(20);
   if(ay == 13){ay = 1;
   }
   while(input(pin_d0) == 0);
   }
      if(input(pin_d1) == 0)
   {
   ay--;
   delay_ms(20);
   if(ay == 0){ay = 12;
   }
   while(input(pin_d1) == 0);
   }
      if(input(pin_d2) == 0)
   {
   ayar++;
   delay_ms(200);
   while(input(pin_d2) == 0);
   }
}
    
   while(ayar == 3)
{
   lcd();
   lcd_gotoxy(7,1);
   lcd_send_byte(0x07,0x0d);
   lcd_gotoxy(8,1);
   lcd_send_byte(0x08,0x0d);
   
   if(input(pin_d0)==0)
   {
   yil++;
   delay_ms(20);
   while(input(pin_d0) == 0);
   }
     
   if(input(pin_d1) == 0)
   {
   yil--;
   delay_ms(20);
   if(yil == -1)yil = 99;
   while(input(pin_d1) == 0);
   } 
   
   if(input(pin_d2) == 0)
   {
   ayar++;
   delay_ms(200);
   while(input(pin_d2) == 0);
   }
}
   
   while(ayar == 4)
{
   lcd_gotoxy(11,1);
   lcd_send_byte(0x11,0x0d);
   lcd();
   delay_us(5);
   
   if(input(pin_d0) == 0)
   {
   hafta++;
   delay_ms(20);
   if(hafta == 8)
   {
   hafta=1;
   }
   while(input(pin_d0) == 0);
   }
      if(input(pin_d1) == 0)
   {
   hafta--;
   delay_ms(20);
   if(hafta == 0)
   {
   hafta=7;
   }
   while(input(pin_d1) == 0);   
   }
   if(input(pin_d2) == 0)
   {   
   ayar++;
   delay_ms(200);
   while(input(pin_d2) == 0);
   }
}
   
    while(ayar == 5)
{
      lcd_gotoxy(1,2);
   lcd_send_byte(0x40,0x0d);
   lcd_gotoxy(2,2);
   lcd_send_byte(0x41,0x0d);
   lcd();
   if(input(pin_d0) == 0)
   {
   saat++;
   delay_ms(20);
   if(saat == 24)
   {
   saat = 0;
   }
   while(input(pin_d0) == 0);
   }
   if(input(pin_d1) == 0)
   {
   saat--;
   delay_ms(20);
   if(saat == -1)
   {
   saat=23;
   }
   while(input(pin_d1) == 0);
   }
   if(input(pin_d2) == 0)
   {
   ayar++;
   delay_ms(200);
   while(input(pin_d2) == 0);
   }
   }
   
    while(ayar == 6)
{
      lcd_gotoxy(4,2);
      lcd_send_byte(0x43,0x0d);
      lcd_gotoxy(5,2);
      lcd_send_byte(0x44,0x0d);
      lcd();
      
   if(input(pin_d0) == 0)
      {
      dakika++;
      delay_ms(20);
      if(dakika == 60)
         {
         dakika=0;
         }
   while(input(pin_d0) == 0);
      }
   
   if(input(pin_d1) == 0)
      {
      dakika--;
      delay_ms(20);
      if(dakika == -1)
         {
         dakika=59;
         }
   while(input(pin_d1) == 0);
      }

   if(input(pin_d2) == 0)
      {
      ayar++;   
      delay_ms(200);
      while(input(pin_d2) == 0);
      }
}
   
      
   while(ayar == 7)
   {
   rtc_set_datetime(gun,ay,yil,hafta,saat,dakika);    //değişkenleri saat entegresine aktar.
      delay_ms(20);
      kaydedildiyazdir();
      ayar=0;
   }
}

#separate

void alarmayariyap()        //(0x0d) //lcd belirtilen konumun yanıp sönmesi
   {
      if(input(pin_d3) == 0)
      {
      ayar2++;
      delay_ms(20);
      yemayari();
      }
         
   while(ayar2 == 1)
   {
      lcdyemleme1();
      lcd_gotoxy(1,2);lcd_send_byte(0x01,0x0d);
      lcd_gotoxy(2,2);
      lcd_send_byte(0x02,0x0d);
      
   if(input(pin_d0) == 0)
      {
      ys1++;
      delay_ms(20);
      if(ys1==12)
         {
         ys1=0;
         }
      while(input(pin_d0) == 0);
      }
   
   if(input(pin_d1) == 0)
      {
      ys1--;   
      delay_ms(20);
      if(ys1==-1)
         {
         ys1=11;
         }
      while(input(pin_d1) == 0);
      }
      
   if(input(pin_d3) == 0)
      {
      ayar2++;
      delay_ms(200);
      while(input(pin_d3) == 0);
      }
   }
   
      while(ayar2 == 2)
   {
         lcdyemleme1();
         lcd_gotoxy(4,2);
         lcd_send_byte(0x04,0x0d);
         lcd_gotoxy(5,2);
         lcd_send_byte(0x05,0x0d);
   
   if(input(pin_d0) == 0)
      {
      yd1++;
      delay_ms(20);
      if(yd1 == 60)
         {
         yd1=0;
         }
      while(input(pin_d0) == 0);
      }
   
   if(input(pin_d1) == 0)
      {
      yd1--;
      delay_ms(20);
      if(yd1 == -1)
         {
         yd1=59;
         }
      while(input(pin_d1) == 0);
      }
      
   if(input(pin_d3) == 0)
      {
      ayar2++;
      delay_ms(200);
      while(input(pin_d3) == 0);
      }
   }
   
   while(ayar2 == 3)
   {
   sa1=ys1;
   da1=yd1;
      kahvalti();
      lcdyemleme1_2();
      }
      
   while(ayar2 == 4)
{
      lcdyemleme2();
      lcd_gotoxy(1,2);
      lcd_send_byte(0x01,0x0d);
      lcd_gotoxy(2,2);
      lcd_send_byte(0x02,0x0d);
   
   if(input(pin_d0) == 0)
   {
   ys2++;
   delay_ms(20);
   if(ys2==24)
      {
      ys2=12;
      }
      while(input(pin_d0) == 0);
   }
      
   if(input(pin_d1) == 0)
   {
   ys2--;
   delay_ms(20);
   if(ys2 == 11)
      {
      ys2=23;
      }
      while(input(pin_d1) == 0);
   }
      
   if(input(pin_d3) == 0)
   { 
   ayar2++;
   delay_ms(200);
   while(input(pin_d3) == 0);
   }
}
   
   
   while(ayar2 == 5)
{
      lcdyemleme2();
      lcd_gotoxy(4,2);
      lcd_send_byte(0x04,0x0d);
      lcd_gotoxy(5,2);
      lcd_send_byte(0x05,0x0d);
      
   if(input(pin_d0) == 0)
      {
      yd2++;
      delay_ms(20);
         if(yd2 == 60)
         {
         yd1=0;
         }
       while(input(pin_d0) == 0);
      }
      
   if(input(pin_d1) == 0)
   {
   yd2--;
   delay_ms(20);
   if(yd2 == -1)
      {
      yd1=59;
      }
   while(input(pin_d1) ==0);
   }
      
   if(input(pin_d3) == 0)
   {
   ayar2++;
   delay_ms(200);
   while(input(pin_d3) == 0);
   }
}
   
   while(ayar2 == 6)
   {
      sa2 = ys2;
      da2 = yd2; 
      aksam();
      lcdyemleme2_2();
   }
}

#separate

void main()
{  
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   lcd_init();       //lcd yi hazırla
   rtc_init();       //saat entegresini hazırla
   rtc_set_datetime(24,04,14,4,8,00,); // Tarih ve Saat ayarları yapılıyor
   delay_ms(5);
   baslangicekrani();
   delay_ms(200);
   printf(lcd_putc,"\f");
   delay_ms(5);    
   
while(1)
{
      if(ayar == 0&&ayar2 == 0)
   {
   rtc_get_time(saat,dakika,saniye);
   rtc_get_date(gun,ay,yil,hafta);
   }
      lcd();
      ayaryap();
      alarmayariyap();
   {           
   if(saat==sa1&&dakika==da1&&saniye==00)
               {
               set_tris_b(0b00010001);
               output_b(0x00);
               output_low(pin_b1);
               output_high(pin_b2);
               ext_int_edge(H_TO_L);
               enable_interrupts(INT_EXT);
               enable_interrupts(INT_RB);
               enable_interrupts(GLOBAL);
               }

   if (bekle == true)
          {
           output_low(pin_b2);
           output_high(pin_b1);
           delay_ms(1000);
           output_low(pin_b1);
           output_high(pin_b2);
           bekle=false;
         }
       }
}

{           
if(saat == sa2 && dakika == da2 && saniye == 00)
               {
               set_tris_b(0b00010001);
               output_b(0x00);
               output_low(pin_b1);
               output_high(pin_b2);
               ext_int_edge(H_TO_L);
               enable_interrupts(INT_EXT);
               enable_interrupts(INT_RB);
               enable_interrupts(GLOBAL);
               }

if (bekle == true)
    {
     output_low(pin_b2);
     output_high(pin_b1);
     delay_ms(1000);
     output_low(pin_b1);
     output_high(pin_b2);
     bekle=false;
    }
    }
}
   

mechanicalengine

Yardımcı olana hayır dualarımı esirgemem... :)

emre salman

https://www.picproje.org/index.php/topic,53333.msg404916/topicseen.html#msg404916 bu linkteki benim yaptığım çalar saate bakabilirsin ama ben timer kesmesi kulllanmadım senin kodlarını inceleyemedim kusura bakma çok karışık gözüküyor

mechanicalengine

Paylaşımınız için çok teşekkür ederim. Kesme işlemini sizin programınız içerisinde de deneyip sonuçlarını burada paylaşmaya çalışacağım.

mechanicalengine

Arkadaşlar sonunda çözdüm;  8)

Takip edenler için ya da ileride kullanma ihtimalinize karşın paylaşıyorum. Değişiklik kesmesini aşağıdaki gibi değiştirdiğim zaman çalışıyor.

#int_ext
void kesme(void)
   {
   if (i==4)
         {
         disable_interrupts(INT_EXT);
         disable_interrupts(GLOBAL);
         output_low(pin_b1);
         output_low(pin_b2);
         output_high(pin_b3);
                 
         }
   if(i>=1 && i<=3){bekle=true;}
          i++;
  }


Yardımcı olan herkese teşekkürler...