C dilini hangi derleyicide yazılıp derleniyor?

Başlatan emrah, 24 Ağustos 2011, 20:12:43

LukeSkywalker


Erol YILMAZ

Oyuncak yapıyorsanız Mikro C,
Yeni öğreniyorsanız CCS C,
İş yapıyorsanız Hi-tech PICC,
Dünyayı kurtaracaksanız ASM kullanırsınız.

ASM den C ye geçiyorsanız Hi-tech PICC,
C korkunuzu üzerinizden attıysanız o zaman Hi-tech PICC,
ARM'a geçtiğimde Keil'de IAR'da yazabilirmiyim diye düşünmek istemiyorsanız Hi-tech PICC!

LukeSkywalker

@allegro
MikroC ile CCS C arasında ne fark var sizce? Yani mikroc'yi neden bu kadar kötülediğinizi merak ediyorum..

Erol YILMAZ

#18
kötü diyemem,
Ama en azından CCS, 11-12 yıldır yayında.

Ayrıca bu işle uğraşmak isteyen,
yeni başlayan arkadaşlarıma,
daha uzun vadede yardımcı olabilecek araçlar kullanmayı görev biliyorum.

JKramer

https://www.picproje.org/index.php/topic,34076.msg238850.html#msg238850
Alıntı yapılan: JKramerKullandığınız mikrodenetleyicinin kataloğunu açıp C portunun adresini öğrenirsiniz. Daha sonra da kodunuza şu satırı ilave edersiniz:
#byte  PORTC=(C portunun adresi) //parantezler yok


Katalogları açmışken derleyicinin kullanma kılavuzunu da açıp #USE FAST_IO ve #USE STANDARD_IO 'un ne olduğuna da bakın.

Alıntı yapılan: fahri- - 19 Haziran 2011, 22:45:30
bütün c compilerlarda istediğin registerlere ulaşılabilir. c yi bilmeden c hakkında neden yorum yapılıyorki...

Kesinlikle katılıyorum. Öyle bir hava oluşturuluyor ki, sanki bu derleyici insanların kafasına silah dayayıp zorla "output_b ya da input_c 'yi kullanacaksın, başka yolu yok" diyor. İster derleyicinin bu tip gömülü fonksiyonlarını kullanırsınız ister doğrudan register'ların isimlerini kullanırsınız. Ben output_b yazdığımda derleyici arka planda ne yapıyor bilmiyorum ki diyenler de bir zahmet .lst dosyasına bakıversin.

Şimdi de "ben bütün register'ları tek tek tanımlamak zorunda mıyım?" diyenler olacaktır, onları da kırmayalım: CCS ide'sini açın. Tools-->Device editor e tıklayıp register dosyası oluşturmak istediğiniz mikrodenetleyiciyi seçin. Sağ tarafta "make include file" seçeneğini tıklayın. Burada istediğiniz tercihleri (structure ya da her bir bit'i ayrı ayrı tanımlama gibi) yaptıktan sonra oluşturulacak dosya yolunu belirleyip "Generate" e tıklayın. (sadece komut satırlı olanı kullanıyorsanız evinizde ide'yi kurup bir kereliğine register dosyalarını alabilirsiniz.)

Derleyici bir araçtır, aracı nasıl kullandığınız sizi ilgilendirir. Eğer sizin; kullandığınız mikrodenetleyicideki birimlerin nasıl çalıştığını, ayarlarının nasıl yapıldığını öğrenmeye niyetiniz yoksa ha derleyiciyle gelen kütüphaneleri kullanmışsınız ha nette başkaları tarafından yazılmış kütüphaneleri kopyalamışsınız, bir fark yok.

LukeSkywalker

Ben de tam bu yüzden mikroC'yi tercih ediyorum.  Sırf  "INTCON.GIE" gibi yazabilmek için hiç bir ayar yapmadan. Diğer türlü çok zaman kaybediliyor register adreslerine datasheetten bakmak için...

tyildizak

#21
Datasheetten bakmaya gerek yok, "getenv()"  fonksiyonu kullanılabilir.

Ayrıca, intcon.gie ne işe yarar, bunu öğrenmek için de datasheete bakılmalı zaten.

MikroC konusuna gelince; gereksiz kalabalık kod üretiyor, adetli üretim yapıyorsanız bu, daha fazla rom yani ek gider anlamına gelir.

emrah

arkadaslar ben C ye yeni gececegim için bu kutuphane olayını anlamadım.  pic basıc te komutları yazıp derleyip kullanılıyor . peki C için neyin kutuphanesi olusturuluyor? basit bir örnek verebilirmisiniz ? kalıplasacak komutlar ne olabilirki? C de sonucta şart koşul komutları yokmu ?

anlayabilecegim en basit bir örnekle açıklayacak arkadas varmı?

LukeSkywalker

Hocam getenv ile program içerisinden alırsınız o adresleri.
Ben programın başlangıcında yapmayacak mıyım tanımlamaları veya header'da...
INTCON'un ne işe yaradığını öğrenmek için her seferinde bakmıyorum datasheete....
Bu konuyu daha fazla uzatmanın da bir manası yok kanımca. Çünkü konu benim derleyicim seninkini döver'e dönüştü. Herşey açıklandı zaten. Herkes tercihini yapar bir şekilde.

JKramer

#24
Alıntı yapılan: maytere - 25 Ağustos 2011, 15:00:17
Ben de tam bu yüzden mikroC'yi tercih ediyorum.  Sırf  "INTCON.GIE" gibi yazabilmek için hiç bir ayar yapmadan. Diğer türlü çok zaman kaybediliyor register adreslerine datasheetten bakmak için...
Ayar dediğiniz mesajda yazdığım gibi, bir dosya include etmek :). Sonra INTCON.GIE yazabilirsiniz. Ya da dosyayı oluştururken structure yerine bit şeklinde oluşturup doğrudan GIE şeklinde de yazabilirsiniz:
Alıntı Yap...
CCS ide'sini açın. Tools-->Device editor e tıklayıp register dosyası oluşturmak istediğiniz mikrodenetleyiciyi seçin. Sağ tarafta "make include file" seçeneğini tıklayın. Burada istediğiniz tercihleri (structure ya da her bir bit'i ayrı ayrı tanımlama gibi) yaptıktan sonra oluşturulacak dosya yolunu belirleyip "Generate" e tıklayın. (sadece komut satırlı olanı kullanıyorsanız evinizde ide'yi kurup bir kereliğine register dosyalarını alabilirsiniz.)

LukeSkywalker

Alıntı yapılan: JKramer - 25 Ağustos 2011, 15:11:48
Alıntı yapılan: maytere - 25 Ağustos 2011, 15:00:17
Ben de tam bu yüzden mikroC'yi tercih ediyorum.  Sırf  "INTCON.GIE" gibi yazabilmek için hiç bir ayar yapmadan. Diğer türlü çok zaman kaybediliyor register adreslerine datasheetten bakmak için...
Ayar dediğiniz mesajda yazdığım gibi, bir dosya include etmek :). Sonra INTCON.GIE yazabilirsiniz. Ya da dosyayı oluştururken structure yerine bit şeklinde oluşturup doğrudan GIE şeklinde de yazabilirsiniz:
Alıntı Yap...
CCS ide'sini açın. Tools-->Device editor e tıklayıp register dosyası oluşturmak istediğiniz mikrodenetleyiciyi seçin. Sağ tarafta "make include file" seçeneğini tıklayın. Burada istediğiniz tercihleri (structure ya da her bir bit'i ayrı ayrı tanımlama gibi) yaptıktan sonra oluşturulacak dosya yolunu belirleyip "Generate" e tıklayın. (sadece komut satırlı olanı kullanıyorsanız evinizde ide'yi kurup bir kereliğine register dosyalarını alabilirsiniz.)
Birtakım şeyler yapmak gerekiyor işte...

tyildizak

Şurada tarif etmiştim:

Alıntı yapılan: tyildizak - 04 Ağustos 2011, 16:58:27
Alıntı yapılan: enigmagazi - 04 Ağustos 2011, 16:15:58
bilmediğim ifadeler


INTF=0;         bunu bilmiyorum

INTE=1;        bunu bilmiyorum

GIE=1;        bunu bilmiyorum

CMCON=0x07;   bunu bilmiyorum


INTEDG=1;  bunu bilmiyorum


bunları bana ccs c dilinde çevirebilecek arkadaş varmı???



datasheet'i okuyup önce bu  bitlerin  ne işe yaradıklarını ve hangi  sfr'lerde olduğunu öğrenin.

gie, intcon yazmacının 7. biti -gibi...


sonra bu yazmaçları  byte olarak tanımlayın:

adreslerini biliyorsanız(datasheette bulunur) :

#byte intcon = 0xff2


adresini bilmiyorsanız:

#byte intcon = getenv("sfr:intcon")


sonra gie bitini tanımlayın:
#bit gie = intcon.7


artık programda hem gie biti, hem de intcon yazmacının tamamı üzerinde okuma,-yazma işlemleri yapabilirsiniz.

GreeN

#27
Alıntı yapılan: maytere - 25 Ağustos 2011, 15:11:22
Hocam getenv ile program içerisinden alırsınız o adresleri.
Ben programın başlangıcında yapmayacak mıyım tanımlamaları veya header'da...
INTCON'un ne işe yaradığını öğrenmek için her seferinde bakmıyorum datasheete....
Bu konuyu daha fazla uzatmanın da bir manası yok kanımca. Çünkü konu benim derleyicim seninkini döver'e dönüştü. Herşey açıklandı zaten. Herkes tercihini yapar bir şekilde.

Merak ettim, ccs c 'de yapılması gereken ve datasheet'e bakmam gereken hangi tanımlamalardan bahsediyorsun?
Yukarıda da yukarıdaki sayfada en bariz farkı anlatılmış.... demişsin. nedir merak ettim cidden?

Edit: http://www.ruzname.net/c-dili-ile-pic-programlama-dersleri-son bu linkteki yazıda mikroc dilinin CCS C ye çevirmesinden bahsediliyor ve CCS C de kullandığınız özel registerleri tanımlanız gerekir. bunun için datasheet i inceleyeceksiniz. deniliyor. İncelemenin microc kodlarının ccs c'ye cevrilmesinde gerektiği yazıyor.
Terörü Lanetliyoruz.

LukeSkywalker

Arasındaki farkı göremediniz mi kodların? Registerlara direk erişim vermiyor.  İsimlerini bizim tanımalamamız  gerekiyor CCS C'de.

GreeN

Alıntı yapılan: maytere - 25 Ağustos 2011, 15:35:53
Arasındaki farkı göremediniz mi kodların? Registerlara direk erişim vermiyor.  İsimlerini bizim tanımalamamız  gerekiyor CCS C'de.

Mesajımı editlemiştim ama burada da bahsedeyim , o sayfanın konusu microc kodunun ccs c 'ye çevrilmesi hakkındadır. Bence tekrar inceleyin ve ccs c ile çalıştığınızı zannetmiyorum. Bunun böyle olmadığını bilmeniz gerekirdi.
Terörü Lanetliyoruz.