23 Mayıs 2020 Cumartesi

ccs c 5 uçla 8 led kontrol etme

Pic programlama ccs c 5 uçla 8 led kontrol high low ve input fonksiyonları ile kontrol

#include <12f683.h>
#fuses NOWDT,INTRC_IO,NOMCLR,BROWNOUT
#use delay(clock=4000000)
int x=0;
void main ()
{
set_tris_a(0xff);
output_a(0x00);


   while(true)
   {
 
   if(input(pin_a3)==1)
   {
   for(x=0;x<5;x++)
   {
   output_high(pin_a0);
   output_low(pin_a5);
   input(pin_a1);
   input(pin_a2);
   input(pin_a4);
   delay_ms(100);
 
   output_low(pin_a0);
   output_high(pin_a5);
   input(pin_a1);
   input(pin_a2);
   input(pin_a4);
    delay_ms(100);
    //-------------------
   output_high(pin_a0);
   output_low(pin_a4);
   input(pin_a5);
   input(pin_a2);
   input(pin_a1);
    delay_ms(100);
   
    output_low(pin_a0);
   output_high(pin_a4);
   input(pin_a5);
   input(pin_a2);
   input(pin_a1);
   delay_ms(100);
 //---------------
   output_high(pin_a0);
   output_low(pin_a2);
   input(pin_a5);
   input(pin_a4);
   input(pin_a1);
    delay_ms(100);
   
   output_low(pin_a0);
   output_high(pin_a2);
   input(pin_a5);
   input(pin_a4);
   input(pin_a1);
    delay_ms(100);
    //-------------------
   output_high(pin_a0);
   output_low(pin_a1);
   input(pin_a5);
   input(pin_a4);
   input(pin_a2);
   delay_ms(250);

   output_low(pin_a0);
   output_high(pin_a1);
   input(pin_a5);
   input(pin_a4);
   input(pin_a2);
   delay_ms(100);
   //----------- geri dönüş
 
   output_low(pin_a0);
   output_high(pin_a1);
   input(pin_a5);
   input(pin_a4);
   input(pin_a2);
   delay_ms(100);

   output_high(pin_a0);
   output_low(pin_a1);
   input(pin_a5);
   input(pin_a4);
   input(pin_a2);
   delay_ms(100);
   //-------------
   output_high(pin_a2);
   output_low(pin_a0);
   input(pin_a5);
   input(pin_a4);
   input(pin_a1);
    delay_ms(100);
   
   output_low(pin_a2);
   output_high(pin_a0);
   input(pin_a5);
   input(pin_a4);
   input(pin_a1);
    delay_ms(100);
    //-------------------
 
   output_high(pin_a4);
   output_low(pin_a0);
   input(pin_a5);
   input(pin_a2);
   input(pin_a1);
   delay_ms(100);
   
    output_low(pin_a4);
   output_high(pin_a0);
   input(pin_a5);
   input(pin_a2);
   input(pin_a1);
    delay_ms(100);
 //---------------

 output_high(pin_a5);
   output_low(pin_a0);
   input(pin_a1);
   input(pin_a2);
   input(pin_a4);
   delay_ms(100);
 
   output_low(pin_a5);
   output_high(pin_a0);
   input(pin_a1);
   input(pin_a2);
   input(pin_a4);
    delay_ms(100);
   }
   }
   }
}


8 yorum:

  1. Merhaba hocam for döngüsüyle ilgili kod yazdım fakat 33.satırda yani 2.for döngüsünde hata veriyor(i nin altı kırmızı çizgili) buradaki sorun nedir acaba?

    #include <12f683.H>
    #fuses intrc_io,nomclr,nowdt,noprotect
    #use delay(clock=4m)



    void main()
    {
    set_tris_a(0x00);
    output_a(0x00);
    #define LED pin_a0
    #define LED2 pin_a2
    #define LED3 pin_a4

    for(int i=0; i<5; ++i)
    {
    output_high(LED);
    delay_ms(300);
    output_high(LED2);
    delay_ms(300);
    output_high(LED3);
    delay_ms(300);

    output_low(LED);
    delay_ms(300);
    output_low(LED2);
    delay_ms(300);
    output_low(LED3);
    delay_ms(300);

    }

    for(int i=5; i<15; ++i) BURADA HATA VERİYOR
    {
    output_high(LED);
    delay_ms(50);
    output_low(LED);
    delay_ms(50);

    output_high(LED);
    delay_ms(50);
    output_low(LED);
    delay_ms(50);

    output_high(LED);
    delay_ms(50);
    output_low(LED);
    delay_ms(50);

    output_high(LED2);
    delay_ms(50);
    output_low(LED2);
    delay_ms(50);

    output_high(LED2);
    delay_ms(50);
    output_low(LED2);
    delay_ms(50);

    output_high(LED2);
    delay_ms(50);
    output_low(LED2);
    delay_ms(50);
    }
    }
    }

    YanıtlaSil
  2. while döngüsü yok, i değerleri çakışıyor ikinci i yerine başka harf yaz. yada ikinci i değeri 5 ten arklı olsun,denermisin

    YanıtlaSil
  3. Siz harikasınız :) Çok teşekkürler i yerine başka harf atayarak yaptım.Mümkünse bir sorum daha olacaktı if else if koşuluyla sıralı olarak işlemler yaptırdım fakat program bitmeden butona basarsam program değişmiyor yani 2. koşula geçmiyor.Bunu program bitmeden basınca değişmesini hangi komutla sağlayabilirim?Araştırıp onu da öğrenmek istiyorum.

    YanıtlaSil
    Yanıtlar
    1. Kesmeler ile yapabilirsin. Bu devre icin icin soruyorsan pina3 yerine baska uc kullanmalisin. Sitede verdigim kodlar basit örnekler.bunlarin hepsine bakarak ortaya guzel işler çıkartırsın.

      Sil
  4. Çoklamaya bakacaktim da üstteki cevabınızı şimdi gördüm.Normalde 6 led kontrol edecektim ama 683 un çıkışları az diye 1 buton 4 led led yapacağım.Dun plakete lehimini de yaptim a3 pinine 10k ile butonu bağladım ama diyorsunuz ki a3 ü kullanma.Bu mclr yi çıkış olarak kullanamiyoruz ama giriş olarak kullanabilmemiz gerekmez mi?Lehimledim geri sökmek de istemiyorum ama kesinlikle olmaz derseniz sökeceğim mecbur.A3 e buton da ekleyemeceksek bu pinin görevi nedir?

    YanıtlaSil
  5. Mclr ucu giriş olarak kullanabiliriz. Buton ekleyebilirsin

    YanıtlaSil
  6. İnterrupt komutunu inceliyorum if else if ile birlestirirsem istediğim olacak sanırım.Coklamaya gelirsek ledleri anot katot ters şekilde baglamissiniz güzel olmuş fakat kayar sinyal LED için uygun olmaz bence.20 ledi 2 li grup halinde yani 10 kanal ile yakmam gerek.Birine daha sordum bdx53 ve bdx54 kullanman gerek dedi.Bir sitede daha gördüm 7 ile başlayan bir entegre kullaniyordu kodunu unuttum bulamadım sizin tavsiyeniz nedir?

    YanıtlaSil
  7. Sitede 74hc164 ile bir devre olacak

    YanıtlaSil

Her yorum bilgidir. Araştırmaya devam...