CCS-C ile PIC Programlama, CCS-C Compiler Resimli Anlatım

CCS-C , “Custom Computer Services” Firmasının PIC Mikro Denetleyicileri için geliştirdiği özel bir C derleyicisidir. Standart C operatörleri yanı sıra PIC’lere özel dahili kütüphaneler ve önişlemci direktifleri de içeren program birçok donanım için hazır kodlar da sunmaktadır.

MPLAB programı içerisine gömülebilen derleyici sahip olduğu IDE (Integrated Development Environment) arayüzü sayesinde program yazma ,derleme, ve hata ayıklama fonksiyonlarını tek bir ekranda gerçekleştirme imkanı sunmaktadır. IDE’ ye sahip olmayan derleyicilerle çalışırken kodları başka bir metin editöründe yazmanız ve derlemeyi de komutla yada toplu iş dosyalarıyla yapmanız gerekir.

CCS-C de PIC’ler için kod yazmak oldukça kolaydır. Derslerimiz ilerledikçe siz de bana hak vereceksiniz. Basit C programları yazabilen birisi birazda PIC bilgisiyle program yazmaya hemen başlayabilir.

CCS-C PROGRAMININ ÖZELLİKLERİ

CCS-C derleyicisi PIC10, PIC12, PIC14, PIC16, PIC18, PIC24 ve dsPIC serilerini desteklemektedir. Derleyici tarafından desteklenen tüm PIC’leri görmek için buraya tıklayın. PIC işlemci serileri değişik OPCODE uzunluklarına sahiptirler, örneğin PIC12F675 14-Bit Opcode uzunluğuna, PIC16C57 12-Bit Opcode uzunluğuna sahiptir. Bu nedenle CCS-C compiler değişik Opcode uzunluğundaki işlemciler için değişik derleyiciler içermektedir. Bunlar PCB, PCM, PCH, ve PCD derleyicileridir.

PCB = 12-Bit Opcode, Baseline
PCM = 14-Bit Opcode, Midrange
PCH = 16-Bit Opcode, PIC18
PCD = 16-Bit işlemci, PIC24/dsPIC (PIC24 ve dsPIC serisi 16-Bit, diğer Seriler 8-Bit denetleyicidir)

CCS-C derleyicisinde 1Bit, 8 Bit, 16 Bit, ve 32 bit tamsayı değişkenler ve 32 bit virgüllü sayı değişkenleri kullanılabilmektedir. #byte ve #bit önişlemci direktifleri sayesinde 1 Byte veya 1 Bitlik değişkenler PIC içerisindeki saklayıcılara bağlanabilir. İlerde bunun örneklerini göstereceğiz . Diğer güzel bir özellik ise Bit dizilerinin tanımlanabilmesidir. Derleyicinin sahip olduğu ileri seviye özelliklere yeterli alt yapı oluştuğunda değineceğiz.

CCS-C IDE ARABİRİM TANITIMI

CCS-C Programının ana görüntüsü aşağıdaki resimdeki gibidir. Resmi tam boy görmek için lütfen üzerine tıklayınız. Açıklamalar resim üzerinde gösterilmiştir.

ANA EKRAN

Ana ekranla ilgili açıklamalar resim üzerinde yapılmıştır, resmi büyütmek için lütfen üzerine tıklayınız.

DOSYA MENÜSÜ

New->;Source File: Yeni bir kaynak (*.c,*.h) kod dosyası oluştur
New->;Project Wizard: Otomatik proje oluşturma sihirbazı
New->;Project Manual: Manuel proje oluşturma
New->;RTF File: Yeni RTF Dosyası oluştur (Zengin Mtin Dosyası), RTF Editörü açılır
New->;Flow Chart: Akış diagramı oluştur, Akış diagramı editörü açılır
Open->;Any File: Herhangi bir dosya aç
Open->;Source File: Kaynak dosyası aç
Open->;Project: Proje Aç
Open->;Output File: Proje Çıkış dosyası aç
Open->;As Hex File: Hex dosayı açar

PROJE MENÜSÜ (PROJECT)

Proje menüsünü kullanarak, yapabilecekleriniz şunlar. Varolan projeleri açmak, Yeni bir proje sihirbazı başlatmak, manuel proje oluşturmak, projeyi kapatmak, projedeki tüm dökümanları açmak ve proje dosyalarının tümünde yazı aramak. Normal ders anlatımlarına geçtiğimizde, Proje sihirbazıyla proje oluşturmak ve manuel proje oluşturma hakkında bolca örnek vereceğiz.

DÜZENLEME MENÜSÜ (EDIT)

Bu menüde Kes, Kospyala, Yapıştır, Tümünü Seç gibi tüm programlardan alışık olduğumuz menü var :)

ARAMA, DEĞİŞTİRME MENÜSÜ (SEARCH)

Bu menüyü kullanarak kodlar içerisinde arama ve değiştirme yapabilir, satır numarası girerek kod içerisinde istediğiniz satıra gidebilirsiniz. Bu menüden ve normal klavye kısa yollarıyla kullanabileceğiniz bir diğer özellik ise yer imi oluşturma ve yer imine gitme. Yani istediğiniz satırlara işaretler koyup sonra bu işaretler arasında dolaşabilirsiniz. 10 adet yer imi kullanabilirsiniz, yer imi koymak için Shift+Ctrl+0…9 , yer imine gitmek için Ctrl+0…9. 0…9 rakamları için harflerin üstindeki sayılar sırasını kullanın.

AYARLAR MENÜSÜ (OPTIONS)

Ayarlar menüsünü kullanarak Proje ile ilgili ayarlamalar yapabilir, Programın genel görünümünü ve Kod editöründe kullanılan yazı tip ve renk paletlerini değiştirebilirsiniz. Yine burdan kullaıcı araç çubuğundaki komutları düzenleyebilir ve istediğiniz komuta klavye kısayolu ekleyebilirsiniz.

DERLEME MENÜSÜ (COMPILE)

Yazdığınız kodu derlemek, projeyle ilgili tüm çıkış dosyalarını üretmek, Çipe programı yüklemek, donanımsal hata ayıklayıcıyı başlatmak, ve proje için oluşturulan çıktı dosyalarına bakmak için bu menüyü kullanabilirsiniz. Örneğin yazdığınız C koduna karşılık üretilen ASM kodlarını merak ediyorsanız “C/ASM List” Butonuna tıklamanız yeterli olacaktır.

KESMELER,FUSELAR VS. (VIEW)

Bu menude ise kullanacağımız PIC ile ilgili faydalı bilgilere ulaşabiliyoruz. Örneğin “Valid Interrupts” butonuna bastığımızda açılan pencerede kullanmak istediğimiz PIC’i seçerek hangi Interrupt (Kesme) ların bu PIC ile kullanılabileceğini görebiliriz. Aynı şey FUSE ayarları için de geçerli. Ana ekranda solda görünen üç adet butonun ekranda görünme ayarıda yinme bu menüden yapılabilecekler arasında. Butonları kaybettiğinizde eğer ihtiyaç duyarsanız buradan görünmesini sağlayabilirsiniz. Bu menüdeki bir diğer faydalı özellik ise “Special Registers” butonuna bastığınızda açılan ekran. Bu ekranda istediğiniz PIC’e ait register’lara ve bu register’ların adreslerine ulaşabilirsiniz.

ARAÇLAR MENÜSÜ (TOOLS)

Araçlar menüsünde ihtiyaç duyabileceğiniz bir yardımcı yazılımlar bulacaksınız. Açıklamaları resim üzerinde mevcuttur lütefen resme tıklayınız. Burada bulunan Serial Port Monitor yardımcı yazılımını RS-232 uygulamalarımızda kullanacağız.

HATA AYIKLAMA MENÜSÜ (DEBUG)

Eğer ICD programlayıcınız var ise , bu menu yardımıyla Donanımsal Hata Ayıklama işlevini gerçekleştirebilirsiniz. Normal yazılımsal simulasyonlarda program simulator tarafından işletilerek hata aranmaya çalışılır. Donanımsal hata ayıklamada ise Program PIC te çalıştırılır, böylece daha doğru, sonuçlar daha pratik bir şekilde elde edilir.

DOKÜMENTASYON MENÜSÜ (DOCUMENT)

Proje ile ilgili dokümantasyon oluşturabileceğiniz, metin editörü ve akış diagramı editörüne de kısayollar içeren pek kullanmayacağınız menu :)

KULLANICI ARAÇ ÇUBUĞU (USER TOOLBAR)

Keyfinize göre düzenleyebileceğiniz bir menü, burada yer alacak butonları Ayarlar menüsünde “Toolbar/Keyboard Setup” kısmına girerek düzenleyebilirsiniz.

ÖRNEK BİR PROJE OLUŞTURALIM

Projemizi oluşturmak için CCS-C programını açıyoruz, Project Menüsüne tıklıyoruz.
Açılan Pencerede “PIC Wizard” Butonuna basıyoruz, karşımıza aşağıdaki gibi bir pencere geliyor.

Resimde gördüğünüz gibi projemize flip_flop.pjt ismini verip istediğimiz bir klasöre kaydediyoruz. Kaydet butonuna bastığımızda Proje Sihirbazı karşımıza gelecektir.

Ayarlarımızı resimde görüldüğü şekilde yapıyoruz. (Device = 16F628A, Oscillator Frequency = 4000000 Hz vb. gibi). Başka hiçbir ayar yapmadan “OK” butonuna basıyoruz. Hepsi bukadar :)

Aşağıdaki resim oluşturulan projeyi ve bizim ekleyeceğimiz flip flop kodunu göstermektedir.

Siz de aşağıdaki kodu resimde görüldüğü gibi // TODO: USER CODE!! yazan yerin altına girin.

while(TRUE)
{
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(1000);
output_high(PIN_B1);
output_low(PIN_B0);
delay_ms(1000);
}

Daha sonra kodumuzu derlemek, yani PIC’e yüklenecek hex kodunu oluşturmak için ya Compile menüsüne geçip oradan Compile butonuna basıyoruz ya da direkt klavyeden F9 tuşuna basıyoruz. Derleme başarılı birşekilde gerçekleştirildiğinde ekranda aşağıdaki gibi bir görüntü olmalıdır.

Tebrikler, CCS-C ile projenizi gerçekleştirdiniz.

Şimdi de yazdığımız programın çalışmasını test etmek için Proteusta simulasyon yapalım. Proteus kullanmayı bilmiyorsanız buraya tıklayarak proteus hakkında faydalı bilgilere ulaşabilirsiniz.

Proteusta yeni bir dizayn oluşturuyoruz ve bir adet PIC16F628A, 2 adet direnç ve iki adet led kullanarak devremizi oluşturuyoruz. 16F628A2nın ayarlarına girerek CCS-C de oluşturduğumuz .hex dosyasını yüklüyoruz, işlemci clock frekansını 4MHZ olacak şekjilde ayarlıyoruz ve simulasyonu başlatıyoruz. Herhangi bir problem yok ise ledlerin sırayla yanıp söndüğünü görebilirsiniz. dilerseniz ledlere osilaskop bağlayarak voltaj dalga şekillerine de bakabilirsiniz. Aşağıdaki resim simulasyon anında Proteustan alınmıştır.

Free Image Hosting at www.ImageShack.us

CCS-C Kodları

#include "flip_flop.h"
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr
// Oscillator Config tab
// TODO: USER CODE!!
while(TRUE) {
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(1000);
output_high(PIN_B1);
output_low(PIN_B0);
delay_ms(1000);
}
}
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming,B3(PIC16) orB5(PIC18)used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=4000000,RESTART_WDT)
#use rs232(baud=9600,parity=N,xmit=PIN_B0,rcv=PIN_B0,bits=8)

flipflop projesinin ccs-c ve proteus dosyalarını toplu olarak indirmek için tıklayın fliplop.rar

CCS-C Prorgamının kullanıcı arayüzüyle ilgili tanıtıcı bilgiler verdik ve basit bir program yazdık. Programın kullanımıyla ilgili daha ayrıntılı bilgilere derslerimiz içerisinde yer vereceğim. Bu makalele birlikte derslerimizin giriş kısmını tamamlamış oluyoruz. Artık genel C bilgisinden başlayarak CCS-C ile PIC programlama konu anlatımlarına başlıyoruz.

Lütfen yazılarla ilgili düşüncelerinizi paylaşınız. Yapıcı eleştirlere her zaman açığım :) Saygılar, Sevgiler…

CCS-C ile PIC Programlama, CCS-C Compiler Resimli Anlatım yazısı için 71 yorum yapıldı

  1. dadaş says:

    slm kardeş.öncelikle sorunu kodlardan değilde programdan daha doğrusu programı eksik kurmaktan kaynaklandığını anladım ve çösdüm.16f877 ile yapmış olduğunus yürüyen ışık devresini yapmaya baslamıştım ve devreyi buradaki kodlara bakıp yapayım dedim elim alışsın die ama fuses ayarları bana engel oldu
    #use delay(clock=4000000)
    03.#fuses XT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
    bnm yaptığım ise
    #use delay(clock=4000000)
    03.#fuses,NOWDT XT, NOPUT(PUT)NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG şeklinde ne yaptıysam mümkün olmadı yardımcı olursanıs çok sevinirim umarım açıklayıcı olmuştur karşılaştırma ilginise tekrar çok tsk sanırım çok basınısı ağrıtıcam bu konularda kafaya koydum ya öğrenecem ya öğrenecem

  2. dadaş says:

    bir sorum daha olacak sise emrah hocam.bi önceki attığım mesaj daki 16f877 kodların yasımında ben ayarları yaptıktan sonra //Setup_Oscillator parameter not selected fromve // TODO: USER CODE!! şeklinde açıklama yasıları çıkıo sisinkinde yok bunun bi ayarımı varda ilk asamada iptal edionus yoksa tamamen açıklama yasısı olduğu için kalabalık yapmasın die sis mi silionus bi fonksiyonu olmadığı için vereceğinis cvp lara şimdiden çok tsk allaha emanet olun

  3. dadaş says:

    :((( sanırım çok yoğunsunus

  4. Emrah AYDIN says:

    @dadas
    Sen pic wizard kullanmışsın, o yüzden o satırlar çıkıyor, ben burada örnekleri anlatırken tam çalışabilir kodlar vermiyorum, konunun anlaşılmasını sağlayacak kadar yazıyorum. 

  5. dadaş says:

    hımm anladım gerçi aştım o sıkıntımıda biraz araştırdıktan sonra.bi sorunum var ccs-c programının demo oluşu ücretsis prolarda var ama bunada alıştım diğer pro larla kafamı karıştırmak istemiorum bakalım bunu nasıl aşıcam.

  6. burak says:

    çok güzel bir anlatım yapıtınız teşekür ederim size programı çözmeme yardımcı oldunuz teşekkür ediyorum size bu kotların hepsini nerden bula bilirim msn gönderirmisin e postayla

  7. Davut BİLDİK says:

    öncelikle çalışmalarınızdan ve paylaşımlarınızdan dolayı çok teşekkür ederim , İnanılmaz derecede işime yaradı.

    Geleim sorunuma çalışmlarınızı ilk okuduğum gün verdiğiniz 16f628a ile yaptığınız örnek çalışmayı yaptım hatta b portlarının tamamını kullanarak led animasyon devresi hazırladı. daha sonra 877 ile çalışmalar yaptım sorunsuz bir çok kod yazdım . şimdiki sorunum programda 877 ile istediğim gibi projeler hazırlaya biliyorum ama 628 ile ne yazarsam yazayım hex’e çevirirken hata veriyo. bir türlü çözemedim yardı ederseniz çok memnun olurum.
    hata mesajını ekleyemedim size e-mail attım bakarsanız sevinirim.

  8. ZELİHA AYDIN says:

    slmlar hocam sizlerin o enğin bilğilerinizden uzun zamandır yararlanamıyoruz sitenizi uzun zamandır takip ediyorum.yeni derslere başlasak çok sevineceğim sabırsızlıkla yeni derslerinizi bekliyorum…bu arada özel ders için sizinle görüşmek istiyorum.

  9. Emrah AYDIN says:

    Merhaba
    CCS-C yazılarına kaldığım yerden devam etmek istiyorum bir türlü nasip olmadı. Devam edecek diyelim… Özel ders konusunda merak ettiğin konuları aydin_emrah@yahoo.com adresine mail atabilirsin.

  10. zaferk1028 says:

    ilk olarak yazınız için çok teşekkür ederim yeni başlayanlar için çok güzel bir kaynak benim sorunum yuakrda bir arkadaşda sormuş aynı error 100 ve error 51 bu sorunun kaynağı olarak main.h da altta görülen satırda hata veriyor. Burada zaten hata görünüyor kendisi c6 ve c7 pinleri tanımlamış ki bizim pic de böyle bacaklar yok. ben bu pic isimlerini değiştirerek sorunu giderdim ama acaba burada sorun niye oluyor yardımcı olursanız sevinirim.
    #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

  11. Yunus says:

    Ellerinize sağlık…Konu çok verimli olmuş.

  12. Yunus Özmen says:

    Bizde sizin yaptığınız ayarların aynısını yapıyoruz fakat yazdığımız kodları PIC16F628A entegresini seçerek hex dosyasına çeviremiyoruz 16 adet hata uyarısı alıyoruz….

  13. HARUN says:

    Arkadaşlar ben pcw derleyici editöründe asm kodla yazmam gereken yerler oluyor fakat derleme gerçekleşse bile en basitinden port 1-0 olayı bile ısıs simulesinde hiç bir değişme olmuyor bir örnek kod gönderirseniz çok seviniri. şimdiden teşekkür ederim.. —proton01@mynet.com—-

  14. fatih says:

    Ellerinize sağlık,
    harika olmuş.

  15. mehmet 42 says:

    bu sorun bendede var error100 bu sorunu nasıl hallettin yardımcı olursan sevinirim teşekkürler.

  16. Caner Çelebi says:

    merhaba,
    şimdiye kadar hep basic ile yazdım, C’ye geçmek istiyordum, yazılarınız bana harika bir ışık oldu, artık yolumu görebiliyorum. ellerinize sağlık teşekkür ederim.

  17. ismailalp says:

    merhabalar hocam ccs c ile pic programlama yazınızı yeni yeni takip etmeye başladım sizi öncelikle tebrik ediyorum gerçekten süper bir anlatımınız var yalnız bazı yüklediğiniz resimlerin kullanım süresi geçmiş sanırım resimleri tekrar yükleyebilirseniz çok makbule geçecek şimdiden teşekkürler…

  18. Betül says:

    Ya ben yapıyorum ama 23 tane hata veriyo. Her satır için undefined identifier yazıyor:(:( Lütfen yardım edin bana:S

  19. huseyin says:

    ayni hatalar bende de var 23 tane hata veriyor bu sorunun sebebi ne yardimci olabilirmisiniz

  20. hocam ccs c de string tanımlaması var mı yoksa hangi yöntem kullanılıyor=?

  21. muhammed says:

    hocamızın dediği gibi kodları çalışabilir durumda yazmamış konu anlaşılsın diye direk yazmış o yüzden undefined yazıyo

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>