PIC Programlama 18F458 Input/Output Port Kullanımı

Batuhan Düzgün tarafından yayınlanmıştır 28. December 2012 08:55

Herkese merhaba arkadaşlar bu yazıda sizlerle birlikte PIC programlama konusuna değineceğiz. Öğrencilik yıllarımdan beri çok fazla ilgi duyduğum alanlardan biri aslında Gömülü Sistem Programlamadır. Özellikle 8051,8085 gibi mikrodenetleyici ve mikroişlemcilerle ilgili bir çok proje ve örnek yapmıştım. Bu yazıda ise PIC programlama konusuna yelken açacağım.

PIC 18F458 çipini kullanacağım. Bu çip üzerinde CAN Bus arayüzüde bulunmaktadır. Fakat yaptığım araştırmalar sonucunda Proteus adlı devre çizim programının, CAN arayüzü için gerekli olan elemanları bulundurmadığını öğrendim. Tabi bu benim için pekte sevindirici bir haber olmadı açıkçası.

PIC 18F458 çipi aşağıda belirtilmiş olan I/O portlarına sahiptir.

-          PORTA

-          PORTB

-          PORTC

-          PORTD

-          PORTE

 

Yukarıda belirtilmiş olan PORT’lar giriş veya çıkış portu (Input/Output) olarak kullanabilir. PORT’ların PIC çipi üzerindeki PIN sayısı aşağıda her port için ifade edilmiştir.

PORTA  :  7 PIN içerir.

PORTB :   8 PIN içerir.

PORTC :   8 PIN içerir.

PORTD :   8 PIN içerir.

PORTE :   3 PIN içerir.

 

Proje nasıl olacak ?

Projemizi ilk önce Proteus adlı devre çizim programında çizip hazırlanacaktır. Daha C derleyicisi yardımıyla “18F458.h” C kütüphanesini kullanıp, PIC çipini programlanacaktır. Ardından C kodu Compile edilip HEX dosyası alınacaktır. Alınan HEX dosyası Proteus’taki PIC çipine kaynak olarak yüklenecektir.

Proteus Programında Devre Tasarımı

Aşağıdaki şekilde Proteus üzerinde yeni bir proje açılır.

 
 Ardından “P” ismindeki tuşa tıklayıp devre çizimi için gerekli olan araçlara ulaşılabilir. Aşağıda gösterilmiştir.
 
 
 
Devre üzerine 2 adet kırmızı LED,  2 adet 22 piko farat kondansatör, 4 Mhz kristal,  10 K ohm ve 100 ohm dirençler, 1 adet 18f458 PIC çipi, 1 adet anahtar konulmuştur. Devre aşağıdaki gibi çizilir.
 
 
 

PIC Programlama

C derleyicisi kullanarak PIC çipi programlanacaktır. Bunun için CCS C Compiler isimli program kullanılacaktır. Aşağıdaki linkten deneme sürümünü indirebilirsiniz.

http://www.ccsinfo.com/content.php?page=compilers

Aşağıdaki gibi yeni bir C Kaynak Kod dosyası açılır.
 

 

Kaynak kod dosyası aşağıda açıklamaları verilmiş C kodları ile doldurulur.

// 18f458 C Kütüphanesi projeye eklenir.

#include <18F458.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=20000000)

// RS232 arayüzüyle ilgili ayarlamalar yapılır.

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

void main()

{

// Sonsuz döngü kurmak için işaretsiz bir tamsayı tanımlanır ve 1 olarak setlenir.

unsigned int flag;

flag = 1;

// Sonsuz döngü içine girilir.

while(flag == 1)

{

   // PIN_B0 portundan gelen değer kontrol edilir.

   // Eğer PORTB'nin PIN_B0 nolu pininin input değeri 1 ise,

   // PIN_B4 bitinin çıkışı 1 ile setlenir.

   // Butona basıldığında PIN_B0 input değeri 1 olur.

   // Bunun dışında sürekli sıfırdır.

   if(!input(PIN_B0))

   {

      // PIN_B6 çıkışı 0 ile setlenir Böylece PIN_B6 ya bağlı LED söner.

      output_bit(PIN_B6,0);

      // PIN_B4 çıkışı 1 ile setlenir Böylece PIN_B4 e bağlı LED yanar.

      output_bit(PIN_B4,1);

   }

   else

   {

   // Butondan elimizi çekince tersi durum oluşturulur.

      output_bit(PIN_B4,0);

      output_bit(PIN_B6,1);

   }

}

}

Yukarıdaki kodun algoritması şu şekildedir : PORTB ‘ye ait PIN_B0 pini anahtara (Buton) bağlanmıştır. Butona basıldığında PORTB’ye ait PIN_B4 pinine bağlı LED yanacaktır ve PIN_B6 pinine bağlı sönecektir. Butondan elimizi kaldırdığımızda ise PORTB’ye ait PIN_B6 LED yanacaktır ve PIN_B4 pinine bağlı LED sönecektir.

Derleme İşlemi

Aşağıda gösterildiği üzere “BuildAll” seçeneği ile proje derlenir ve HEX dosyası üretilir. 
 
 
 

HEX Dosyasının PIC Çipine Yüklenmesi

Proteus üzerindeki PIC çipine sağ tıklayıp, “Edit Properties” seçilir ve aşağıdaki gibi HEX dosyası yüklemesi yapılır.
 
 
 
Sonuçlar aşağıdaki gibidir.
 
 
 

Bir yazımın daha sonuna geldim. Umarım zevkle okuyacağınız bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle …

Batuhan Düzgün

Bilgisayar Mühendisi

Endüstri Mühendisi 

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  August 2019  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster