Ders 2 – PIC ve Led Organizasyonu

Facebookta Paylas



Bu dersimizde micro işlemcimizi programlamaya başlayacağız bunun için ilk gerekli olan basıc ‘te  programlayabilmek için pic basıc pro yazı editöründe ise benim kullandığım ve size tavsiye edeceğim editör  Micro Code Studio

Bu programın kurulması başka bir anlatım konusu olduğu için burada bahsetmeyeceğim. Bu veya benzeri bir programlama editöründen sonra yazdığımız programı micro işlemcimize yazacak bir donanıma ihtiyacımız var bir pic programlayıcı devre, bu tip devreler internette sıklıkla bulunmakta. Pic programlayıcıyı da temin ettikten sonra artık program yazmaya geçebiliriz.

              16f84 ve 16f628 micro işlemcilerimizde iki adet port bulunmaktadır. PORTA ve PORTB bu iki adet port giriş veya çıkış olarak ayarlanarak micro işlemcinin ne yapacağına karar veririz.bu atama işini ise TRISA ve TRISB registerleri (yazmaç) ile yaparız

PORTA nın 5,PORTB nin 8 adet giriş çıkış (I/O) pini vardır.bu pinlere 1 atadığımızda giriş 0 atadığımızda çıkış olur bu atama işlemi binary veya decimal olarak yapılabilir.

Binary olarak:

                     TRISA=%00000                (A portu Çıkış olarak yapıldı)
                     TRISB=%00000000           (B portu Çıkış olarak yapıldı)

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

                      PORTA=0                 A portunun tüm pinlri çıkış (LOW) olarak ayarlandı
                      PORTB=0                B portunun tüm pinlri çıkış (LOW) olarak ayarlandı

Başka bir şekilde şöyle ifade edebiliriz.

                    TRISB=%00100101    decimal karşılığı TRISB=37

Yani Portb nin  0,2 ve 5. bitleri giriş diğer 5 bit çıkış olarak ayarlanmış demektir.
Bu bitleri giriş yada çıkış yapmanın bir diğer yolu da şöye

                    PORTA.0=0                      a portunun sıfır nolu biti çıkış oldu
                    PORTB.5=1                        b portunun beş nolu biti giriş oldu

Veya

                    LOW         PORTA.0       a portunun sıfır nolu biti çıkış oldu
                    HIGH       PORTB.5        b portunun beş nolu biti giriş oldu

     İlk olarak led yakalım ve bunun üzerine çalışalım Led devremizi proteusta aşağıdaki gibi hazırlayalım ?Anlatımlarımızda size devre şeması çizimlerinde pratik olması ve devre çalışmasını hemen görebilmemiz açısından Proteus çizimlerini kullanacağız. Proteus pic enerji girişlerini, osilatör uçlarını ve MCLR girişini bağlanmış gibi kabul eder ve çalışmanıza izin verir fakat bu devreyi uygulayacağınız zaman muhakkak bağlamanız gerekir?

Bu devremizde portb.0 a bağlı olan ledimizi yakıp söndüreceğiz

                    HIGH              portb.0                                   ’6. pinden 5 V verdik
                    PAUSE            500                                          ’500 ms yanık bıraktık
                    LOW                 portb.0                                   ’6. pini 0 Volt?a çektik

İşte bu kadar basit. Şimdi bu yazdığımız programı biraz daha düzenleyelim


TRISA=0                    'TRISA yazmacı çıkış olarak ayarlandı
TRISB=%00000000            'TRISB yazmacı çıkış olarak ayarlandı
                           'iki şekilde de olabilir
PORTA=%00000               'porta çıkış olarak ayarlandı
PORTB=%00000000            'portb çıkış olarak ayarlandı
basla:                     'etiket türkçe karakter olmadan
                           'istediğimiz bir isim seçebiliriz
     HIGH      portb.0     '6. pine  5V verildi
     PAUSE     500         '500 ms yanık kaldı
     LOW       portb.0     '6. pine  0V verildi
     PAUSE     500         '500 ms  sönük kaldı
     GOTO   basla          'tekrar basla etiketine git
END                        'program sonu

Öncelikle tris ve port komutları ile A ve B Portlarımızın ikisinide çıkış olarak ayarladık, burada TRISB yi binary sayı olarak ifade ederken eğer TRISB=%00010110 bir ile belirlenen bit?e gelen pinler çıkış, 0?a denk gelen pinler çıkış olarak ayarlanır.

basla: bir etikettir ve dilenildiği gibi seçilebilir

                     HIGH                                komutu istenilen bir pine 5V çıkış vermemizi sağlar
                     LOW                                  komutu ise pindeki çıkışı 0 Volt?a çeker
                     PAUSE                             komutu isminden de anlaşılacağı üzere bekleme komutudur ve bekleme işlemini milisaniye cinsinden yapar

Başka bir bekleme komutuda PAUSEUS dur ve bekleme cinsini de mikrosaniye olarak yapar
GOTO komutu dilediğimiz bir etikete gitmemizi sağlar
END komutu ise program sonunu ifade eder

Bu işlem TOOGLE komutu ile de yapılabilir.   TOOGLE komutu pin çıkışını tersler 0 çıkışını 1, 1 çıkışını 0 yapar


OOGLE     portb.0      'portb.0 'ı 1 yap
PAUSE     500          '500 ms bekle
TOOGLE    portb.0      'portb.0?   0 yap
PAUSE     500          '500 ms bekle

                      Programımızı yazdıktan sonra yapmamız gereken bu programı microişlemcimizin anlayabileceği makine diline çevirmek bunu ise kullandığımız programlama editörümüz otomatik olarak yaparak  programımızı HEX formatına dönüştürüyor bizde bu formatı bir pic programlayıcı devre ile pic microişlemcimize aktarıyoruz

            Örneğin : ledyak.HEX gibi

Yeni bir programla devam edelim buradada bir flip flop devresi yapalım devresi aşağıdaki gibi

Pic basıc dilinde yazılmış programımız


TRISA=%000000        'TRISA yazmacı çıkış olarak ayarlandı
TRISB=%00000000      'TRISB yazmacı çıkış olarak ayarlandı iki şekilde de olabilir
PORTA=%00000         'porta çıkış olarak ayarlandı
PORTB=%00000000      'portb çıkış olarak ayarlandı

Basla:
     Portb.0=1            'portb.0  (6. pin)  5V
     PAUSE 500            '500 ms bekle
     Portb.0=0            'portb.0 (6. pin)  0 V
     Portb.1=1            'portb.1 (7.pin) 5V
     PAUSE 500            '500 ms bekle
     Portb.1=0            'portb.1 (7.pin) 0 V
     GOTO basla           'basla etiketine geri dön
END                       'program sonu

Bu programımızda ise bir tuş ile bie led dizisini kontrol edelim.

 

Program kodları

TRISA=%00001               'TRISA yazmacı çıkış olarak ayarlandı birinci biti giriş
TRISB=%00000000            'TRISB yazmacı çıkış olarak ayarlandı birinci biti giriş
PORTA=%00001                     'porta çıkış olarak ayarlandı
PORTB=%00000000                  'portb çıkış olarak ayarlandı

Basla:
    PAUSE 300                    '300 ms bekle
    PORTB=0                      'portb çıkış
    IF porta.0=0 THEN YAK        'eğer porta.0= ise yak etiketine gir
    GOTO basla                   'basla etiketine git
yak:
    portb=%00000001              'portb nin 0. bitinden 5V ver
    PAUSE 200                    ' 200 ms bekle
    IF porta.0=0 THEN basla      'eğer porta.0=0 ise basla etiketine git
    portb=%00000010              'portb nin 1. bitinden 5V ver
    PAUSE 200                    ' 200 ms bekle
    IF porta.0=0 THEN basla      'eğer porta.0=0 ise basla etiketine git
    portb=%00000100              'portb nin 2. bitinden 5V ver
    PAUSE 200                    ' 200 ms bekle
    IF porta.0=0 THEN basla      '
    portb=%00001000              '
    PAUSE 200                    '
    IF porta.0=0 THEN basla      '
    portb=%00010000              '
    PAUSE 200                    '
    IF porta.0=0 THEN basla       '
    portb=%00100000              '
    PAUSE 200                    '
    IF porta.0=0 THEN basla       '
    portb=%01000000              '
    PAUSE 200                    '
    IF porta.0=0 THEN basla      '
    portb=%10000000              '
    PAUSE 200                    '
    IF porta.0=0 THEN basla      '
    GOTO yak                     'yak etiketine git
END

Program açıklaması :

İlk olarak porta nın 0. biti  1 yapılarak bradan 5 volt vrileceği pic?e anlatıldı. Daha sonra portb nin tamamı çıkı olarak ayarlandı. Sonra başla etiketi ile beraber bir 300 ms lik bir bekleme verildi. Bu bekleme süresi tuş ile yak etiketinden geri döndüğümüzde tuştan elimizi kaldırana kadar tekrar yak etiketine dönmemizi engelliyor

İf komutu bir şart komutudur eğer şu şart gerçekleşti ise şunu yap demektir.

Veya başka bir yazım çeşidi şöyledir

IF portb.0=0 THEN
      İstenen durum
ENDIF

 

              Bu bu programı yazmanın uzun yolu, kısa yolu ise mantık operatörleri kullanmak. Çarpma bölme gibi pic bir çok işlemi kendi bünyesinde barındırır. Bunlar aşağıdaki gibidir.

ARİTMETİK OPERATÖRLER

AÇIKLAMALAR

+

Toplama

-

Çıkarma

*

Çarpma

**

Çarpmanın üst 16 bitini elde etme

*/

Çarpanın ortadaki 16 bitini elde etme

/

Bölme

//

Kalanı bulma (mod)

<<

Sola kaydırma

>>

Sağa kaydırma

ABS

Bir sayını işaretsiz değerini veriri

COS

Kasinüs

DCD

2n kod çözme

DIG

Dijit

MAX

Maksimum

MIN

Minimum

NCD

Kodlama

REV

Bit tersleme

SIN

Sinüs

SQR

Karekök

&

Bit AND?leme

|

Bit OR?lama

^

Bit exclusive OR?lama

~

Bit NOT?lama

&/

Bit NOT AND?lama

/|

Bit NOT OR?lama

^/

Bit exclusive OR

TRISA=%00001             'TRISA yazmacı çıkış olarak ayarlandı birinci biti giriş
TRISB=%00000000          'TRISB yazmacı çıkış olarak ayarlandı birinci biti giriş
PORTA=%00001             'porta çıkış olarak ayarlandı
PORTB=%00000000          'portb çıkış olarak ayarlandı

X VAR WORD                'burada bir tanımlama yaptık
                          'bir değişken tanımladık bu
                          'tanımlamayı yandaki gibi yapabiliriz bu değişkeni bit
                          'byte veya  'word olarak yapabiliriz
X=1                       'x değişkenine 0 atadık

Basla:
     PAUSE 300                  '300 ms bekle
     PORTB=0                    'portb çıkış
     IF porta.0=0 THEN YAK      'eğer porta.0= ise yak etiketine gir
     GOTO basla                 'basla etiketine git
yak:
     portb=x
     PAUSE     500
     X=x*2
     IF X=256 THEN  X=1            'veya IF X>256 THEN X=1
     IF porta.0=0 THEN  basla
     GOTO yak
END

Burada da görüldüğü gibi x değikeni decimal olarak  1,2,4,8,16,?..,256 değerlerini alıyor ve değişkenimizi portb ye atadığımız için portb ye bağlı olan ledler sırası ile yanıyor.

 



Facebookta Paylas






Benzer Yazılar

Benzer Yazı Bulunamadı


12525 Görüntüleme.

Yazar : srdbhdr

“Ders 2 – PIC ve Led Organizasyonu” for 7 comments

  1. FATİH diyor ki:

    bunu derlediğim zaman hata veriyor neden

    TRISA=%00001 ‘TRISA yazmacı çıkış olarak ayarlandı birinci biti giriş
    TRISB=%00000000 ‘TRISB yazmacı çıkış olarak ayarlandı birinci biti giriş
    PORTA=%00001 ‘porta çıkış olarak ayarlandı
    PORTB=%00000000 ‘portb çıkış olarak ayarlandı

    Basla:
    PAUSE 300 ?300 ms bekle
    PORTB=0 ?portb çıkış
    IF porta.0=0 THEN YAK ?eğer porta.0= ise yak etiketine gir
    GOTO basla ?basla etiketine git
    yak:
    portb=%00000001 ?portb nin 0. bitinden 5V ver
    PAUSE 200 ? 200 ms bekle
    IF porta.0=0 THEN basla ?eğer porta.0=0 ise basla etiketine git
    portb=%00000010 ?portb nin 1. bitinden 5V ver
    PAUSE 200 ? 200 ms bekle
    IF porta.0=0 THEN basla ?eğer porta.0=0 ise basla etiketine git
    portb=%00000100 ?portb nin 2. bitinden 5V ver
    PAUSE 200 ? 200 ms bekle
    IF porta.0=0 THEN basla ??
    portb=%00001000 ??
    PAUSE 200 ??
    IF porta.0=0 THEN basla ??
    portb=%00010000 ??
    PAUSE 200 ??
    IFporta.0=0 THEN basla ??
    portb=%00100000 ??
    PAUSE 200 ??
    IF portb=%01000000 ??
    PAUSE 200 ??
    IF porta.0=0 THEN basla ??
    portb=%10000000 ??
    PAUSE 200 ??
    IF porta.0=0 THEN basla ??
    GOTO yak ‘yak etiketine git
    END

  2. FATİH diyor ki:

    hex dosyasını çıkarmıyor sürekli sorun yapıyor

  3. hakki0548 diyor ki:

    bir satırda hata varmış. hata giderilip aynı yere yenisi yazıldı

  4. FATİH diyor ki:

    ilgilendiğin için teşşekkürler arkadasım sağol

  5. LEVENT USLU diyor ki:

    arkadaslar cok guzel aciklayici bir anlatim tarzi.
    elinize agziniza saglik

  6. Mehmet Emin ŞAHİN diyor ki:

    hocam ben herşeyi yapıyorum şu code işini yapamadım programı yazıyorum aynen hex e dönüştürüyorum,yüklüyorum fakat program çalışmıyor. led e giden voltaj yok . ? bilen arkdaşlar varsa onlarda söyleyebilir mi .

  7. Mehmet Emin ŞAHİN diyor ki:

    yaptmı arkadaşlar. pbp nun yerini c:/PBP olarak açmıştım içindeyi dosyalar fakat ne olduysa silinmiş bazı dosyaları ondan dolayı tekrar dan indirdiğim pbp yu içine attım oldu.

Ders 2 – PIC ve Led Organizasyonu Yazısı için Yorum Yapabilirsiniz