Karaşimşek devresi

Electus

Üye
Katılım
10 Ocak 2021
Mesajlar
1
Puanları
1
Yaş
27
Arkadaşlarım ile birlikte buton ile çalışan karaşimşek devresi yaptık ama butonlar tek seferde çalışmıyor (4-5 kere tıklayınca ya da basılı tutunca) çalışıyor. Bunu nasıl düzelte biliriz?
Ekran görüntüsü 2021-01-10 125407.png


Kullandığımız kodlar bular:
Kod:
#include <16F84.h>

#fuses  xt,nowdt

#use delay(clock=4m)



int i;

int j;



void main()

{

set_tris_a(0xff);

set_tris_b(0x00);

output_b(0x00);



   while(true)

   {

    if(input(pin_a2))



    while(input(pin_a2))

    for(int i=0;i<3;i++)

   {

   output_b(0xff);

    delay_ms(350);

    output_b(0x00);

    delay_ms(350);



   }



      if(input(pin_a1)==1)

      while(input(pin_a1))



        j=128;

        for(i=1;i<8;i++)

        {

        output_b(j);

         j=j>>1;

        delay_ms(350);

        }

if(input(pin_a0)==1)

while(input(pin_a0))

   {

      j=1;

      for(i=0;i<8;i++)

      {

      output_b(j);

        j=j<<1;

         delay_ms(350);









      }

   }



   }

}
Yazmayı unutmuşum kullandığım program ccs c kullandığım devre pıc 16F84
 
Moderatör tarafında düzenlendi:
Burada HI-TECH C derleyicisi ve PIC 16F877A kullanan bir örnek var.

Kendi kullandığınız derleyici ve µ denetleyiciye uyarlayabilirsiniz.

Düğmenin basılı ve bırakılı olduğu durumları göz önünde bulundurmalısınız.

Bir tane sayaç olabilir. Bu sayaç düğmeye basıldığı ya da bırakıldığı zaman artar.

Düğmeye basıldığı zaman uzun bir gecikme eklemeyin. Sadece sayacın durumu değişsin. Gecikme olarak sadece düğmenin mekanik gürültüsünü engelleyecek kadar çok kısa bir zaman beklenebilir.

Örneğin düğmeye basıldı. Bırakıldı. Sayaç iki oldu. Tekrar basıldı bırakıldı. Sayaç 4 oldu.

Biz sayacın tek ya da çift olduğunu kontrol ederek istediğimiz işlemi yaptırabiliriz.

Burada sayaç % 2 == 0 gibi bir ifade ile sayacın ikiye bölümden kalanın 0 olduğunu denetleyebiliriz.

% bölümden kalan işlecidir.

Eğer sayaç çift ise istediğimiz işlemi yapar, tek ise bir işlem yapmaz.

Eğer düğmeye ikinci kez bastığımızda bir işlem yapmasını istiyorsak bu sefer sayacın dörde bölümünden kalanı hesaplatmamız gerekir.
 
Son düzenleme:
Arkadaşlarım ile birlikte buton ile çalışan karaşimşek devresi yaptık ama butonlar tek seferde çalışmıyor (4-5 kere tıklayınca ya da basılı tutunca) çalışıyor. Bunu nasıl düzelte biliriz?Ekli dosyayı görüntüle 70809

Kullandığımız kodlar bular:
Kod:
#include <16F84.h>

#fuses  xt,nowdt

#use delay(clock=4m)



int i;

int j;



void main()

{

set_tris_a(0xff);

set_tris_b(0x00);

output_b(0x00);



   while(true)

   {

    if(input(pin_a2))



    while(input(pin_a2))

    for(int i=0;i<3;i++)

   {

   output_b(0xff);

    delay_ms(350);

    output_b(0x00);

    delay_ms(350);



   }



      if(input(pin_a1)==1)

      while(input(pin_a1))



        j=128;

        for(i=1;i<8;i++)

        {

        output_b(j);

         j=j>>1;

        delay_ms(350);

        }

if(input(pin_a0)==1)

while(input(pin_a0))

   {

      j=1;

      for(i=0;i<8;i++)

      {

      output_b(j);

        j=j<<1;

         delay_ms(350);









      }

   }



   }

}
Yazmayı unutmuşum kullandığım program ccs c kullandığım devre pıc 16F84
while(input(pin_a1)) ifadesini kullanırsanız butona basılı tutmanız gerekir elbette yoksa sonraki komuta geçer. Ayrıca çok yazım yanlışı var if lerden ve while lardan sonra { koymazsanız derleyici ondan sonraki komutların bu ifadelere bağlı olduğunu anlayamaz. Yazımları düzeltip while ifadelerini kaldırın.
 

Forum istatistikleri

Konular
127,956
Mesajlar
913,906
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst