+ Konu Cevaplama Paneli
1 den 5´e kadar. Toplam 5 Sayfa bulundu

Konu: pıc programlama başlangıç için döküman resim

  1. #1
    sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jan 2006
    Nerden
    Unkown
    Yaş
    37
    Mesajlar
    18.395
    Post Thanks / Like
    Teşekkür
    254
    Thanked 25.680 Times in 4.219 Posts
    Tecrübe Puanı
    24632

    pıc programlama başlangıç için döküman resim

    pic programlama ilei lgili dökoman arıyorum pıc 16f84 ve pıc 16f877 ile ilgili saygılar
    -Paylaşım yapmadan önce Forum Kurallarını Okuyunuz.

  2. #2
    KORGENERAL
    sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR taninmis sohret sahibi uye sexymanTR - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Dec 2005
    Mesajlar
    3.332
    Post Thanks / Like
    Teşekkür
    86
    Thanked 5.532 Times in 1.000 Posts
    Tecrübe Puanı
    4866
    şuan piyasada Altaş yayın evinin çıkarmış olduğu CPU denetleyicileri PIC programlama 16F84 vede ileri PİC aynı yayın evi 16F84 uygulamaları - 1 ile işe başlayabilirsin.hem ucuz kitaplar, hemde kolay anlaşılır...İlerlemeleri daha sonra ileri düzeye çekebilirsin.Tabi yabancı kaynak yararlanılması söz konusu olacaktır.
    bu forumda nick ve mesaj silinmesi diye bir uygulama yoktur

  3. #3
    sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jan 2006
    Nerden
    Unkown
    Yaş
    37
    Mesajlar
    18.395
    Post Thanks / Like
    Teşekkür
    254
    Thanked 25.680 Times in 4.219 Posts
    Tecrübe Puanı
    24632
    sağol ben zaten okulunu okuyorum kitap var ama daha farklı bilgiler için kaynak arıyorum sağolasın
    -Paylaşım yapmadan önce Forum Kurallarını Okuyunuz.

  4. #4
    sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jan 2006
    Nerden
    Unkown
    Yaş
    37
    Mesajlar
    18.395
    Post Thanks / Like
    Teşekkür
    254
    Thanked 25.680 Times in 4.219 Posts
    Tecrübe Puanı
    24632
    kaynak olan yokmu elinde hiç ya
    -Paylaşım yapmadan önce Forum Kurallarını Okuyunuz.

  5. #5
    sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 taninmis sohret sahibi uye sanko86 - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    Jan 2006
    Nerden
    Unkown
    Yaş
    37
    Mesajlar
    18.395
    Post Thanks / Like
    Teşekkür
    254
    Thanked 25.680 Times in 4.219 Posts
    Tecrübe Puanı
    24632

    işte buldum isteyenler okusun

    Ön Söz:
    ----------
    Pic Basic Pro programlama dilinin kullanımı ve komutları konusunda bilgiler vermek komutların
    kullanım şekillerini açıklama ve sonuçta örnekler vererek yeni başlayanlara bu dili öğretmeyi amaçlıyorum.
    Basic bilenler ise dersleri takip ederlerse bazı enteresan programlama teknikleri öğrenebilirler.
    Zira Basic dili her ne kadar üniversal bir dil olsa da bazı komutlar akıllıca kullanılarak programlamada
    karşılaşılan zorluklar kolaylıkla aşılabilir.

    Derslerimizde temel amaç örnekler vererek öğretmektir. Zira en iyi öğrenme yolu görsel olanıdır.
    Sözü fazla uzatmadan derslerimize başlayalım.

    Ders -1 :
    ----------
    Pic Micro işlemciler hakkında kısa bilgi.
    -----------------------------------------
    Pic mikro işlemciler teknik özellikleri ve kılıfları açısından farklılıklar gösterirler. Her şeyden önce birden
    fazla bacağa (pin) sahip olan işlemcilerin bacakları giriş veya çıkış olarak çalıştırılabilirler. Özellikleri açısından
    da bir kere programlanabilenler (C serisi) programları ultraviyole ile silinip yeniden programlanabilenler ve
    birden fazla silinip programlanabilenler olarak sınıflandırılabilirler.

    Biz genelde FLASH olarak tarif edilen birden fazla silinip programlanabilen tipler üzerinde çalışacağız.
    Pic'ler taşıdığı ekstra özellikler açısından da bir kaç kategoriye ayrılırlar. Örnek olarak üzerin de;
    1) Analog-Digital Çeviricisi olanlar,
    2) Komparatör olanlar,
    3) Donanımsal olarak seri haberleşme ünitesi olanlar,
    4) HPWM ünitesi olanlar gibi Pic’ler mevcuttur. İleriki bölümlerde bunların kullanımına ait örnekler vereceğiz.

    Pic işlemcilerin pinlerinin hem giriş hem de çıkış olarak çalıştırılabildiğinden bahsetmiş idik. Açıklamalarımızla
    ilgili uygulamalarımıza "Proje" adını vereceğiz ve her projemizin bir numarası olacaktır. Şimdi Pic lerinin
    organizasyonu işlemlerine kısa bir göz atalım.

    Kullanacağımız Pic 16F84A olacak. Bu işlemcinin toplam 18 bacağı vardır.5 nolu bacak(-),ve 14 nolu bacak(+) besleme ,
    15-16 nolu bacaklar (XTAL) osilatör bacakları ve PortA (0-4 arası 5 adet pin) < 17,18,1,2,3 nolu bacaklar > ve
    PortB (0-7 arası 8 adet pin) <6,7,8,9,10,11,12,13 nolu bacaklar > olmak üzere toplam 13 adet (Giriş-Çıkış) pin'e sahip bir işlemcidir.

    İlk projemize geçmeden, anlatımda lazım olacak olan BASIC de kullanılan sayı gösterim formatları konusunda
    biraz bilgi vermek istiyorum. Bildiğiniz gibi kullanacağımız 3 tür sayı formatı vardır. Formatlar ve gösterim şekilleri
    aşağıda verilmiştir.

    1) Desimal Sayılar (10 tabanına göre düzenlenmiş sayılar):
    direkt kullanılırlar 12 -23 gibi

    2) Hexadesimal Sayılar (16 tabanına göre düzenlenmiş sayılar) :
    başlarına $ işareti koyularak gösterilirler. $1F , $31 gibi

    3) Binary Sayılar (2 tabanına göre düzenlenmiş sayılar) :
    ise başlarına % işareti koyularak gösterilirler. %111000 , %0001 gibi.

    Sıklıkla kullandığımız sayı sistemi desimal olduğundan diğer sayıların kolayca anlaşılabilmesi için zaman zaman
    bu sayıların 10 tabanına çevrilmesi gerekir. Aşağıda bu işlemin nasıl yapıldığını basitçe göreceksiniz. Bu işlemde
    temel formül; aynı on tabanına göre sayılarda olduğu gibidir. Sağdan sola doğru haneler sayı tabanının katları
    şeklinde değer alırlar. Yani değişen tek şey taban çarpım değeridir. Örnekle daha iyi anlayacaksınız.

    Hexadesimal sayılar :0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F: Örnek sayımız <3F> olsun. 16 tabanlı sayı formatı
    olduğundan;16'lar hanesi olan 3 sayısı 16 ile çarpılıp F sayısının desimal karşılığı bu sayıya eklenir.
    Dolayısıyla;3F = 3 x 16 + 15 = 63 olarak bulunur.
    Şayet sayı 23F olsa idi sayımız= 2 x 256 + 16 x 3 + 15= 575 olarak bulunacak idi.

    Binary sayılar; 0-1 , örnek sayımız %11101101 olsun. Hanelerin taban sayısının katları şeklinde gittiğini biliyoruz.
    O halde sağdan itibaren ilk sayımız hane değerleri şöyle olacaktır. sayı sırasına göre verir isek
    128 - 64 - 32 - 16 - 8 - 4 - 2 – 1
    Bu sisteme göre sayımızı desimal değere çevirelim;
    %11101101: 128x1 + 64x1 + 32x1 + 16x0 + 8x1 + 4x1 + 2x0 + 1= 128+64+32+8+4+1=237 olarak bulunacaktır.

    En çok kullanacağımız sayı formatlarından birisi olan Binary sayı formatının kullanım yerine bir örnek vermek
    bu aşamada iyi olacaktır sanırım. Bir Pic'in B portuna bağlı olan Led lerden 0-3-4-6-ve 7 nolu pinlere bağlı olanları
    bir seferde yanar hale getirebilmek için porta verilecek değeri desimal olarak hesaplayalım. Bu durumda
    PortB=%11011001 olacaktır.Desimal değeri = 128+64+16+8+1= 217 olarak bulunur.

    İlk projemiz, 16F84A işlemcinin Tüm bacaklarını çıkış olarak ayarlamak ve bu çıkışlara bağlanacak LED lerin değişik
    aralıklar ile yanmasını gösteren bir program olacaktır. Bu arada amaç, Pic lerin bacaklarının nasıl çıkış olarak
    ayarlandığını öğrenmek olacaktır.

    Pic lerde bacakların giriş veya çıkış olarak ayarlanmasını üstlenen bir REGISTER (Türkçe’si YAZMAÇ) vardır.
    Her bir port için ayrı olan bu registerler A portu için TRISA , B portu için ise TRISB olarak adlandırılır. Tris yazmaçları aslında
    Pic’in hafızasında 8 bitlik birer hafızadırlar. Buraya yerleştirilen sayının Binary formatındaki şekline bağlı olarak Pic bacaklarını giriş
    veya çıkış olarak ayarlar.8 bitlik değer sırası ile port'a ait pinleri temsil etmektedir.

    Şöyle ki;

    A) %00000000, ifadesi 8 bitlik Binary bir sayıdır. Desimal karşılığı 0 (sıfır) dır. Bu değeri herhangi bir TRIS registerine verir isek
    tüm pinlerin OUTPUT yani çıkış olarak ayarlanacağını ifade eder.

    B) Şayet değer %11111111 olur ise tüm bacakların INPUT yani giriş olarak ayarlanacağını ifade eder.

    Binary değerin bazılarının sıfır (0) bazılarının bir(1) olması ise bazı pinlerin çıkış bazılarının ise giriş olarak ayarlandığını gösterir.
    Şimdi açıklamamızı program şeklinde verelim.

    TRISA=%00000 'A portu Çıkış olarak ayarlandı
    TRISB=%00000000 'B portu Çıkış olarak ayarlandı

    Çıkış olarak belirlediğim portun çıkış değerini Low (0) olarak ayarlamak için şu şekilde bir ifade yazabilirim.

    PORTA=0 'A portu tüm çıkışlar Low (0)
    PORTB=0 'B portu tüm çıkışlar Low (0) Eğer High yapmak isteseydim
    (PORTA=1),(PORTB=1) şeklinde yazacaktım.

    Gördünüz mü ne kadar basit. Pinleri çıkış olarak ayarladım ve tüm çıkışları Low yaptım.
    Herhangi bir portun bir pin'inin gösterilme şekli port ismi devamında nokta ve pin numarası verilerek yapılır.
    Örnek A portunun 2 nolu pini için PORTA.2 şeklinde bir gösterim kullanılır.
    Şimdi diyelim ki PORTA.0 yani A portunun sıfır biti yani ilk pin'e bağlı LED'i yakalım ;Komutumuz bir kaç mantıklı şekilde olabilir. Sırası ile;

    PORTA.0=1 'PortA.0 High yani 1 oldu ve LED yandı.veya
    HIGH PORTA.0 'PortA.0 High oldu yani LED yandı,

    Komutu mümkün olduğu sürece şeklinde kullanmayı tercih edin.

    Proje 1a :

    Şimdi de birden fazla pin'e bağlı Led lerin aynı anda yakılmasını gerçekleştirelim.
    PortA=%10101 şeklin de bir komut yazarsam, sağdaki ilk değer olan 1 (Bir) PortA.0'a verilir.
    Sonra sırası ile yani soldan sağa doğru olan Binary değerler PORTA nın 0-4 nolu pinlerine verilirler.
    Değer sıfır ise pin Low, değer bir ise pin High olur. Sonuçta bu komut ;

    TRISA=%00000 'A portu Çıkış olarak ayarlandı
    PortA.0=1
    PortA.1=0
    PortA.2=1
    PortA.3=0
    PortA.4=1 '( Bu pin diğerlerinden farklıdır.Open kollektör olduğu için "pullup" direnci kullanılır.
    Aksi halde istediğimiz çıkışı alamayız.) şeklinde karşılık gelen Binary değerleri port pinlerine verir.

    Demek ki bir port'a bağlı pinlerin birden fazlasına hükmetmek için port'a sekiz bitlik bir Binary veya desimal değer verilir.
    Şimdi port pinlerinin ne amaçlı çıkış olarak kullanıldığı üzerine biraz bilgi verelim.

    Diyelim ki port pin'ine bağlı bir Role yi bir transistor aracılığı ile çalıştırmak istiyorsun. İşte yolu, pin çıkışını bir direnç ile (1K-2k2)
    bir transistor ün (B)eys'ine bağla. NPN tipi bir transistör kullanırsan transistör ün (E)mitterini GND ye bağla.
    Port Pin'inden High (1) çıkartırsan transistör iletime geçecek ve (C) kollektör ünden GND çıkaracaktır.
    Bunu bir role ye bağla ve rölenin diğer ucunu +5V'a bağlar isen pinden röleyi çalıştırıp kapatabilirsin.

    Bunu bir örnekle açıklayalım;
    Diyelim ki PortB.1 pinine bir transistör üzerinden role bağladık ve bu röleyi açıp kapayacağız.İşte basit programımız;

    Proje 1b :

    1 TRISB=%00000000 'B portu çıkış yapıldı
    2 PortB=0 'B portunun çıkışı Low(0) yapıldı.
    3 ROLEAC:
    4 HIGH PORTB.1
    5 PAUSE 1000 '1000 ms lik bir gecikme yaratır.
    6 LOW PORTB.1
    7 PAUSE 500
    8 GOTO ROLEAC

    1. Satırda PortB yi çıkış olarak ayarladık.
    2. Satırda PortB pinlerinin tamamını LOW yaptık.
    3. cü satırda ROLEAC isimli bir etiket yarattık.(Yaptırmak istediğimiz diğer komutlar için ismini
    kendimizin koyduğu başka etiketler yaratıp programın daha fazla işlem yapmasını sağlarız.)
    4. satırda PortB.1 pinini High yaptık.
    5. satırda 1000 ms lik bir gecikme yarattık. Yani role 1000 ms süresince çekili kaldı.
    6. Satırda PortB.1 pinini LOW yaptık. Yani role bıraktı.
    7. satırda tekrar 500 ms lik bir gecikme yarattık.

    Sonra programı tekrar aynı işleri yapması için ROLEAC etiketine yönlendirdik.

    Buraya kadar öğrendiklerimizi toparlar isek;
    - Sayı gösterim formatlarını öğrendik.
    - Port pinlerinin nasıl giriş nasıl çıkış yapılacağını öğrendik.
    - Port ve port pinlerine nasıl ulaşabileceğimizi öğrendik.
    - Milisaniye cinsinden gecikmenin nasıl yaratıldığını öğrendik.
    - Program içinde etiket kullanarak aynı işlemlerin nasıl tekrarlanabileceğini öğrendik.
    Bütün bu öğrendiklerimizi tek program üzerinde göstermeye çalışalım.

    Proje 1c :

    Program PortA.0 pinine bağlı LED i kontrol edecek ve ayrıca PortB.0 pin'ine bağlı röleyi açıp kapayacaktır.
    Role çekildiğinde PortA.0 pinine bağlı LED yanacak. Role bırakınca LED’de sönecektir.
    Role çekili kalma süresi 1 sn. yani 1000 ms. olacaktır.

    TRISA=0 'bu ifade “ TrisA=%00000 ” e eşdeğerdir.
    TRISB=0
    PortA=0
    PortB=0
    ROLEAC:
    HIGH PORTB.0 'role çektirildi
    PAUSE 500 '500 ms bekleme
    HIGH PORTA.0 'Led yandı
    PAUSE 500 '500 ms bekleme
    LOW PORTA.0 'Led söndü
    PAUSE 500 '500 ms bekleme
    LOW PORTB.0 'Role bıraktı
    PAUSE 500 '500 ms bekleme
    GOTO ROLEAC 'Roleac etiketine git
    END 'programın burada bittiğini ifade eder.
    -Paylaşım yapmadan önce Forum Kurallarını Okuyunuz.

+ Konu Cevaplama Paneli

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Yetkileriniz

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
TOPlist TopSat.Org