CCS C Ön İşlemci Komutları – Bilişim & Programlama
Pic Programlama

CCS C Ön İşlemci Komutları

Ön İşlemci Komutları

Ön işlemci komutları derleyiciye programın nasıl derleneceği hakkında bilgi verir.  Programın işleyişine engel olmaz ve program çıktısına yansımaz.

Hafıza Kontrol Komutları

#asm #endasm

     Bu iki komut arasında assembly komutları yazılabilir.  C ile programlanırken asssembly komutlarının kullanımına olanak sağlar.

#org

     İstenen komutların ROM bellekte istenen adresten başlayarak yerleştirilmesini sağlar.

örnekte bu fonksiyon ROM bellekte 1E02 adresinden 1FFF adresleri arasına yazılır.
Tek adres yazılır ise o adresten başlanarak devam edilir.

#rom

     Rom bellekte istenen adreslere süslü parantez içindeki kısmın yazılmasını sağlar.

parantez içinde verilen değerler 0x3000 adresine sırası ile yazılır.  

#reserve

     İstenen adres veya adres aralığının RAM bellekten ayrılması için kullanılır. Ayrılana adresler derleyici tarafından kullanılmaz. Bu komut #device komutundan sonra kullanılır.

#byte

     Belirtilen isimde bir değişken, 8 bit’lik bir adrese yerleştirilir. 

yukarıdaki örnekte portc ve portb değişkenleri 0x04 ve 0x03 adreslerine yerleştirilmiştir. 

Bu komut ile değişken bellekte istenen adrese yerleştirilmektedir. Fakat derleyici otomatik değişken yerleştirmelerinde başka değişkeni bu komut ile belirlediğimiz aynı adrese yerleştire bilir. Bu olayı önlemek için #locate komutu kullanılır.

#locate

     Bu komut #byte  komutu ile aynı özelliktedir; istenen değişkeni  istenen adrese yerleştir, farklı olarak kullanılan adresin derleyici tarafından başka amaçlar için kullanılmasını önler.

#bit

     Herhangi bir değişken veya sabit, herhangi bir  adresin istenen biti ile ilişkilendirilebilir.

okuma değişkenin 2. bit’ini 1 şeklinde değiştiriliyor.  okuma adlı değişken durum değişkenin 2. bitini ifade etmektedir. #bit ile tanımlanan değişken sadece 1 ve 0 alabilir.

#zero_ram

     Program başlangıcında kaydedicilerin içeriğini sıfırlar.

#word

     Program başında #word tanımlanan veya tanımlanmayan değişken bellekte istenen adrese kaydedilir. #word komutu ile tanımlanan değişken önceden tanımlanmamış ise  derleyici tarafından otomatik 16 bit tamsayı türünde yeni tanımlanmış değişken olarak tanımlanır.

a değişkeni 16 bitlik tamsayı türünde oluşturuldu ve 0x0060 adresine kaydedildi.

#TYPE

  • Kullanılacak veri türlerinin türlerinin bit sayılarının ayarlanmasını sağlar.
  • Kullanılacak değişkenlerin tersi belirtilmedikçe işaretli veya işaretsiz olarak algılanmasını sağlar.
  • Kaydedilen RAM bölgesini belirleme işlemleri yapabilir.

yukarıdaki kod satırında  short kelimesi 8 bitlik ve int 32 bitlik hale getirilmiştir. Normalde int kelimesi 8 bitlik veri türü olduğunu unutmayınız.

#TYPE ile SHORT, İNT ,LONG ve DEFAULT kelimeleri kullanılabilir.

yukarıdaki komut kullanıldığı bir programda işaretli belirtilmeyen değişken tanımlamalarının hepsi işaretli şeklinde tanımlanır.

yukarıdaki örnekte addressmod komutu ile tanımlanan başlangıcı 0x0110, bitişi 0x01FD olan bir RAM bölgesi tanımlanmıştır.
#TYPE default=benim_RAM komutu ile değişkenlerin kaydedileceği sınırları belirlenen adresse benim_RAM bölgesi seçilmiştir. Yani benim_RAM bölgesi 0x0110 ile 0x01FD aralığındadır ve değişkenler bu alan içine tanımlanacaktır.

Önceden Tanımlanmış Sabitler

DATE: Derlenen dosyanın tarihini verir.

TIME: Derlenen dosyanın zamanını verir.

LINE: O anda işlenen komutun satır numarasını verir.

FILE: Derlenen dosyanın ismini verir. Dosyamızın ismi turkmuhendis olsun

PCB,PCM,PCH: Programın derleneceği sırada  hangi derleyici modülünün kullanılacağını belirtir

DEVICE: Programın içinde tanıtılan cihazın kodunu verir

Standart C Komutları

#define

C programlamadan hatırlanacağı üzere programın başında bir global değişken tanımlanır.

#undef

Define ile tanımlanan değişkenin  değerini serbest bırakır.

#if,#else,#elif,#endif

     C programlama dilinde kullanılan şart ifadelerinden olan if deyimi pic programlamada aynı görevi yerine getirir. Kontrol döngüsü #if ile başlar #endif ile sonlanır. Kontrolün içinde şart doğru ise #else komutuna kadar olan görev bloğu gerçekleştirilir, şart yanlış ise #else ile #endif bloğu arası gerçekleştirilir. elif de c programlamada else if ile aynı işlevdedir.

#ifdef, #ifdef

     İfdef komutu programın herhangi bir yerinde #define ile değişken tanımlanıp tanımlanmadığını kontrol etme amaçlı kullanılır, yapılmış ise #else koduna kadar olan kısmı, yapılmamış ise #else ile #endif arasındaki komut satırları işlenir.

     ifndef komutu ise efdef komutu ile yapılanın tam tersini yapar. Tanımlama yapılmış ise #else ile #endif , yapılmamış ise #else kelimesine kadar olan kısım yapılır.

#list, #nolist

     C derleyicisinde yazılan C kodunu assembly kodu karşılığını görülebiliyordu. Bu işlem gerçekleştirdiğinizde derleyici size .lst  uzantılı bir dosya oluştur. Oluşturulan bu dosya içerisinde kodlarınızın hem assembly hemde C karşılığını görebilirsiniz. #nolist ile #list kodu arasında assembly kodunun C karşılığı .lst dosyasında gösterilmez. 

#error

Derleme işlemi gerçekleştirtiği sırada programın hata mesajı yazdırmasını sağlar.

#warning

Derleme işlemi sırasında #error komutu ile benzer olarak hata mesajı yazdırır.

Denetleyici Tanımlama Komutları

#ID

     Denetleyicilere kimlik numarası verilebilir. ID numarası için ayrılan adresler:

0x2000, 0x2001, 0x2002 normal komutlar ile bu alana erişilmez.  ID numrası 16 bitliktir.

Dosyadan ID  okutulmak istenirse 

#fuses

     Konfigürasyon bit’lerinin ayarları yapılır.

Bu programda düşük hızlı oslilatör ve Watchdog Timer’ın kullanılmadığını belirtir.

#HEXCOMMET

     Adından da anlaşılacağı üzere derleyicinin oluşturduğu .hex uzantılı dosyanın başına açıklama yazar. Yazılan açıklama programın kod satırını etkilemez.

Fonksiyon Nitelendirici

#INT_…

Kesme fonksiyonlarının tanımlamalarında kullanılırlar. 

#int_default

Pıc denetleyicide tanımlanmayan bir kesme meydana geldiğinde varsayılan kesme olarak kullanılır. Bu durum denetleyici bir pazarzit ile karşılaştığında gerçekleşe bilir.

#INT_GLOBAL

Pıc denetleyicisinde bir kesme meydan geldiği zaman denetleyici 4 numaralı adrese gider. Pıc denetleyici buradaki dallanma işlemini, gerçekleştirir. Eğer programda bu kesme işleminin gerçekleşmesi sırasında pic derleyicinisin 4 numaralı adrese değildi sizin gitmesini isteğiniz adres olması istenirse  bu komut kullanılır.

#inline

Pic derleyicisinde fonksiyon tanımlarken ön işlemci komutu #inline  kullanılırsa bu kodun kullanıldığı fonksiyonun her komutu çağrıldığı yere kopyalanır. Bu sayaede derleme işleminde hızlanma meydana gelir. 

#separete

Bu komutu fonksiyonların derleyici tarafından otomatik inline özellikte komut atamasın engeller. Rom bellekten tasarruf sağlanmış olur. Yığın bellek alanının daha fazla kullanılmasını sağlar.

Yerleşik Kütüphaneler

#use delay

Program yazarken gecikme komutu kullanılabilmesi için ön işlemci komutu #use delay kullanılması gerekir.

derleyicinin  4Mhz bir osilatör ile çalıştığını belirtmektedir.

#use standart_io()

Pıc mikrodertleyicisine hangi portun giriş veya çıkış olarak kullanılcağı bildirilmesi gerekir, bu bildirim yapılmamış ise standart girş ve çıkış portları kullanılır. Bu ön işlemci komutu kullanıldığı zaman portun hangi bitinin giriş veya çıkış olacağının bildirilmesine gerek yoktur, giriş komutu kullanıldığında derleyici pini giriş olarak yönlendirir.

#use fast_io()

Bu komut ile beraber set_tris_x() komutu hangi pinin hangi portunun giriş veya çıkış olarak kullanılacağının belirlenmesi gerekir.

#use fixed_io()

Program boyunca kullanılacak olan çıkış port veya pinlerinin belirklnemsinde kullanılır. Bu komut ile belirtilmeyen port veya pinler çıkış olarak kullanılmamaktadır.

Derleyici Kontrol Komutları

#priority

Denetleyici de meydana gelen kesmeleri icra eder aynı anda iki kesme meydana geldiğinde önceli,kli kesmeyi icra eder. Öncelikli kesmeyi bildirmesini sağlar.

öncelikli kesme olarak ext ve daha sonra timer0 bildirilmiştir.

#case

Programcının CCS’de küçük büyük harf duyarlılığını açmak için kullanılır.

#IGNORE_WARNINGS

İgnore kelimesi İngilizceden Türkçeye çevrildiğinde ihmal anlamına gelmektedir. Bu komut derleyicinin uyarı vermesini engellemek amacıyla kullanılır.

#opt

     Derleyici tarafından C kodlarının assembly kodlara daha az komut ve daha iyi çalışma gibi iyi koşullarda çevirmesi gerekir. Derleyici bunu en iyi şekilde yapar fakat programcı tarafından değiştirilebilir. Bu işlem derleyici optimizasyonudur.

Yorum yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.