3 adet flaşörden sonra sabit kalma

Başlatan grotesk, 21 Nisan 2015, 11:18:45

grotesk

Merhaba,

Elimde 1 adet giriş butonu var. Ben bu butona bastığım sürece pic'in çıkışına bağlı led 2 defa blink olacak ve daha sonra sürekli yanacak. Bıraktığım zaman sönecek. Blink olurken elimi butondan çektiğim zaman led'de sönecek.

Biraz kolay bir soru sanırım ama yapamadım.

Yardımcı olur musunuz?

Kolay gelsin.

Recep METE

Sen kodda biraz çalışıp, takıldığın yeri sorarsan yardımcı olurlar/olabiliriz.Bu sitede şunu anladım kimseye hazır balık vermiyorlar, balık tutmayı öğretiyorlar.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

ayhani

Normal delay fonksiyonu ile yapamazsın. Timer kesmesi ile sure saydirarak yapmalısın.
En iyi bildiğim şey hiçbir şey bilmediğimdir.

grotesk

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_a(0x01);     // A portu 0 pini giriş diğerleri çıkış olarak ayarlandı
   set_tris_b(0x00);    // B portu komple çıkış olarak yönlendiriliyor

   output_b(0x00);        // B portu çıkışı komple sıfır yapılıyor.   
   
   {
      while (!input(pin_a0))
      
      output_high(pin_b1);
      delay_ms(250);
      output_low(pin_b1);
      delay_ms(250);
      output_high(pin_b1);
      delay_ms(250);
      output_low(pin_b1);
      delay_ms(250);
      output_bit(pin_b1,1); 
           
   }
}


Böyle bir şeyler yaptım ama eksik.

mehmet

Bir değişken tanımlayınız. Her yanmada bir artsın. Kaç
yanmadan sonra sabit olmasını istiyorsanız o sayıya kadar
değişkeni artırınız. İlgili sayıya ulaşınca sabit yakma kısmını
çalıştırırsınız...
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"

z

#5
Dantelli parantezleri unutmuşsun.

         while(1)
            {
               while (input(pin_a0)); // Butona basılmadıysa beklemede kal
               output_high(pin_b1); i=0; while (i<250) { delay_ms(1); i++; if (input(pin_a0)) goto son;}
               output_low(pin_b1);  i=0; while (i<250) { delay_ms(1); i++; if (input(pin_a0)) goto son;}

               output_high(pin_b1); i=0; while (i<250) { delay_ms(1); i++; if (input(pin_a0)) goto son;}
               output_low(pin_b1);  i=0; while (i<250) { delay_ms(1); i++; if (input(pin_a0)) goto son;}

               output_high(pin_b1); 
               while (!input(pin_a0)); // Butona basılıysa beklemede kal
Son:
               output_low(pin_b1); 
           }
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sadogan

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

/********* ANA PROGRAM FONKSİYONU********/
unsigned int16 sayac=0;
void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_a(0x01);     // A portu 0 pini giriş diğerleri çıkış olarak ayarlandı
   set_tris_b(0x00);    // B portu komple çıkış olarak yönlendiriliyor

   output_b(0x00);        // B portu çıkışı komple sıfır yapılıyor.   
   while(true)
   {
      
      if(!input(pin_a0))
      {
         sayac++;
         if(sayac<50)
         {
             output_high(pin_b1);
         }
        else if(sayac<100)
        {
              output_low(pin_b1);
        }
         else if(sayac<150)
        {
              output_high(pin_b1);
        } 
        else if(sayac<200)
        {
              output_low(pin_b1);
        } 
        else
        {
           sayac=200; 
           output_high(pin_b1);
        }
         delay_ms(10);
      }
      else
      {
        sayac=0; 
        output_low(pin_b1);
      }
           
   }
}

grotesk

Cevap veren herkese teşekkür ederim.