slm, C programları hangi derleyicilerle derleniyor? en çok kullanılan hangisidir?
c dili global bir dil siz ne yapmak istiyorsunuz.pıc c hitec c ccs c18 microchip amr keil ıar, atmelin de c derleyicisi mevcuttur.
Ben MikroC kullanıyorum... CCS C ile başladım, MikroC'ye geçtim...
pic 16-18F serilerini C dilinde programlamak istiyorum.
Eğer bu işten ekmek yiyeceğim diyor isen ve zoru seversen Hi-Tech ve c18 öneririm. Zor dememin sebebi hazır kütüphanelerinin çok az olması... Ama yok hazır kütüphanesi de bol olsun diyorsan MikroC öneririm..MikroC ile de gayet profesyonel projeler çıkartılabilir....
microC yi kurdum yanında usb driver şeklinde iki prog daha kurdu. en kısa zamanda C dilinide ögrenip pic programlayacagım. pic basicte istegim gibi programlayabiliyorum. C diline geçmeye karar verdim.
hi-tech editoru siyah sayfa olan degilmi. bi ara onunla ugrasmıstım çözememiştim. hazır kütüphanesi yoksa neden o tercih edilirki? kutuphaneyidemi biz yapıyoruz onda? evet ise neden ?
Hi-Tech C'de kütüphanelerini kendin hazırlarsın. Bu şekilde aslında işin mantığını tam kavrarsın ve hakimiyetin daha yüksek olur. Ama MikroC'de örneğin bir Grafik LCD kütüphanesi kullanacağınız zaman ekrana direkt olarak yazı bastırabilirsiniz tek satır kod ile. Fakat arka planda neler olup bittiğini bilmezsiniz. İşiniz görüldüyse bilmenizde gerekmez. Fakat MikroC'de de kendi kütüphanelerinizi yapabilirsiniz tabi ki. Ben 3 yıldır MikroC kullanıyorum gayette memnunum.
Alıntı yapılan: maytere - 24 Ağustos 2011, 23:13:38
Hi-Tech C'de kütüphanelerini kendin hazırlarsın. Bu şekilde aslında işin mantığını tam kavrarsın ve hakimiyetin daha yüksek olur. Ama MikroC'de örneğin bir Grafik LCD kütüphanesi kullanacağınız zaman ekrana direkt olarak yazı bastırabilirsiniz tek satır kod ile. Fakat arka planda neler olup bittiğini bilmezsiniz. İşiniz görüldüyse bilmenizde gerekmez. Fakat MikroC'de de kendi kütüphanelerinizi yapabilirsiniz tabi ki. Ben 3 yıldır MikroC kullanıyorum gayette memnunum.
CCS'te ise kütüphane dosyaları hem çok zengin, hem de çalışma mantığını anlayabileceğiniz ve isterseniz yeniden düzenleyebileceğiniz şekilde açıktır.
Hi-tec'le birlikte çok fazla kütüphane gelmese de, nette gerekli olabilecek bir hayli örnek bulabilirsiniz.
olusturulan kütüphanedemi C ile yazılıyor?
bir dilin kütüphaneside o dilde yazılır. amaç sadece hazır kod bulundurmaktır.
İlla ne olup bittiğini anlayım diyorsanız kütüphaneyi kendiniz yazarsınız, hazır kütüphanenin kimseye zararı olmaz. Hi-tech in tek çekici tarafı anci c nin yazım kurallarına uygun olması. Zaten bir kaç çıkış fonksiyonu dışındaki komutlar aynı
ccs c de output_b(0xFF); yazıyoruz
hi-tech te RB=0xFF; buna benzer birşey yazıyoruz(tam hatırlamıyorum böyle birşeydi)
Bunlar basit şeyler projenin taşınılır olmasını fazla etkilemez. Başka bir dile geçecek olursanız ctrl+f yapıp "output" diye ararsınız bulduğunuz şeyleri değiştirirsiniz.
Ayrıca arka planda ne oluyor ne bitiyor çokta önemli değil. Arka planda gerçekleşen her işi anlamaya çalışırsak projelere gerekli vakti ayıramayız.
Bu yazıları "ccs c de hazır kütüphane var kullanmayın, cısss" diyenler için yazdım.
Alıntı yapılan: tyildizak - 24 Ağustos 2011, 23:25:47
Alıntı yapılan: maytere - 24 Ağustos 2011, 23:13:38
Hi-Tech C'de kütüphanelerini kendin hazırlarsın. Bu şekilde aslında işin mantığını tam kavrarsın ve hakimiyetin daha yüksek olur. Ama MikroC'de örneğin bir Grafik LCD kütüphanesi kullanacağınız zaman ekrana direkt olarak yazı bastırabilirsiniz tek satır kod ile. Fakat arka planda neler olup bittiğini bilmezsiniz. İşiniz görüldüyse bilmenizde gerekmez. Fakat MikroC'de de kendi kütüphanelerinizi yapabilirsiniz tabi ki. Ben 3 yıldır MikroC kullanıyorum gayette memnunum.
CCS'te ise kütüphane dosyaları hem çok zengin, hem de çalışma mantığını anlayabileceğiniz ve isterseniz yeniden düzenleyebileceğiniz şekilde açıktır.
Hi-tec'le birlikte çok fazla kütüphane gelmese de, nette gerekli olabilecek bir hayli örnek bulabilirsiniz.
S.A.
Ben proton kullanıyorum bunun yanında c çalışmaları için css c kullanıyorum. Tavsiyem ccs c kullanman sebebi desteği Türkiyede fazla en azından sıkışınca açıp bakabileceğin 600 sayfalık Serdar ÇİÇEĞİN kitabı var tüm sitelerde ccs ile uygulama yada örnekler var. Micro c ye de baktım ama kullanılabilirlik olarak ccs c derim. Kolay gelsin.
Ben hem CCS C hem MikroC kullanan birisi olarak şunu söyleyebilirim ki MikroC, CCS C'ye göre daha esnek. CCS C'nin kitabı var doğrudur fakat MikroC'nin yardım dosyası zaten örnekleri ile başlı başına bir kitap. Herkes rahat ettiği derleyicide program yazar burası da ayrı bir gerçek. İşime gelirse CCS C'de yazarım işime gelirse MikroC'de, işime gelirse basicde, yada HITECH-C'de...
Css C + ASM halledilmeyecek iş yoktur. Css c Hızlı + ASM Güçlü
Birden fazla derleyiciye katılmıyorum. Sonuçta kendi kütüphaneni oluşturman da gerekecek , yazdığın her kütüphaneyi diğerlerinde kullanamayacaksın. Zaman kaybı karışıklılık vs...
Sonuçta en kısa sürede hangisi ile bir iş bitiriliyor ise onunla yapmak bana göre daha mantıklı. C dilini bildikten sonra her C derleyicisini kullanabilirsiniz zaten. CCS C'nin bu kadar tercih edilmesinin sebebi Türkçe kaynak olduğundandır. Nasıl ki bir zamanlar 16F84, 16F628'e göre çok daha fazla satış yapıyor ise, bu da aynı mantık. Yoksa MikroC'nin CCS C'ye göre avantajları vardır, CCS C'nin MikroC'ye göre avantajları vardır. Ayrıca Mikroelektronika'nın çıkarmış olduğu VisualGLCD, VisualTFT gibi programlar da MikroC'ye destek vermekte olduğundan işin arkaplanı ile ilgilenmeyenler için MikroC'yi cazip kılmaktadır. MikroC aynı zamanda asm desteği de veriyor aynen CCS C de olduğu gibi.
http://www.ruzname.net/c-dili-ile-pic-programlama-dersleri-son
yukarıdaki sayfada en bariz farkı anlatılmış....
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!
@allegro
MikroC ile CCS C arasında ne fark var sizce? Yani mikroc'yi neden bu kadar kötülediğinizi merak ediyorum..
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.
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.
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...
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.
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ı?
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.
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.)
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...
Ş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.
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.
Arasındaki farkı göremediniz mi kodların? Registerlara direk erişim vermiyor. İsimlerini bizim tanımalamamız gerekiyor CCS C'de.
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.
Şimdi de yalancılıkla mı suçlanacağım? Neyi bilmiyorum? Anlat öğreneyim?
"bunun böyle olmadığını bilmeniz gerekirdi" nedemektir?
void main()
{
trisb=0;
portb=0xff;
}
yazabiliyor muyuz direk olatak CCS C'de?
microc
void main()
{
trisb=0;
portb=0xff;
}
ccs c
void main()
{
set_tris_b(0x00);
output_b(0xff);
}
@maytere
Normalde register adreslerinin tanımlı olduğu bir dosya eklenir, MikroC'de bunlar doğrudan derleyici içerisinde tanımlıymış (sitenizden bir örnek indirdim); yani herhangi bir dosya include etmiyorsunuz dediğiniz gibi. Sonuç olarak herhangi bir sorun yok :).
void main(){
set_tris_b(0x00);
output_b(0xff);}
...şeklinde yazabilirsiniz. Sizin asıl sorun olarak gördüğünüz, sfr'ların direkt isimlendirilmemiş olmasıydı.
#byte PORTC = 0x07
#byte PORTB = 0x06
#byte TRISC =0x87
#byte TRISB=0x86
Sanırım bunların yapılıp programda kullanılmasının zorunlu olduğunu söylüyor arkadaş.
Ama output_b, output_low , output_high , set_tris_b gibi birçok hazır fonksiyon mevcut ccs c de.
Alıntı yapılan: GreeN - 25 Ağustos 2011, 15:58:24
#byte PORTC = 0x07
#byte PORTB = 0x06
#byte TRISC =0x87
#byte TRISB=0x86
Sanırım bunların yapılıp programda kullanılmasının zorunlu olduğunu söylüyor arkadaş.
Ama output_b, output_low , output_high , set_tris_b gibi birçok hazır fonksiyon mevcut ccs c de.
Arkadaşım onların olduğunu biliyorum. Ben sadece örnek açısından onları verdim. Diğer registerlar için ne yapacaksın peki? Onlar için ise yukarıdaki arkadaşların söylediği gibi tanımlaman gerekiyor diyorum. Konunun hepsini okusaydın ne demek istediğimi anlardın.
Ben de CCS C kötüdür MikroC daha iyidir demiyorum. Benim tercihim MikroC'den yana diyorum... Türkçe kaynak sıkıntısı var MikroC hakkında. Eğer Altas'dan veya başka adam akıllı bir yayın evinden bir kitap çıkar ise MikroC kullanıcıları da artacaktır.
Alıntı yapılan: JKramer - 25 Ağustos 2011, 15:54:18
@maytere
Normalde register adreslerinin tanımlı olduğu bir dosya eklenir, MikroC'de bunlar doğrudan derleyici içerisinde tanımlıymış (sitenizden bir örnek indirdim); yani herhangi bir dosya include etmiyorsunuz dediğiniz gibi. Sonuç olarak herhangi bir sorun yok :).
Aynen dediğiniz gibi...