Değerli ve Sevgili ARKADAŞLAR. CCS c compiler hakkında biraz yardıma ihticacım var.!.......(acil)
İlk önce bu derleyiciyi nasıl temin edebilirim(crack leri ile birlikte tabi). Formu okudum CCS ile ilgili olan yerleri.Fakat oradaki liklerde birşey bulamadım.MAlesef. Download kısmına bakdiyorsunuz ama oradada bişe yok tabiki!.... Anlamadım...
Neyse zorda olsa internette aramalarımın sonucunda CCS'nin PCW compiler indirdim. Versiyonu ise Şöyle yazıyor.
IDE versiyon 3.36
PCM versiyon 3.170d
PCH versiyon 3.170d
Buarada sitesinden download edmedim.Yani baktım bulamadım download edecek yeri ve link'i. Sitedeki yeni versiyonu ise 3.173 yazıyor.
Gene neyse.Buraya kadar işler iyi gidiyor.Ama indirdigim demo 30 günlük süresi var.
Bunu crak'ini ve ya formda reg dosyası diyorsunuz nasıl temin edebilirim. Bilen arkadaşların cevap yazmalarına cani ğönülden istiyorum.
Bugüne kadar hi-tech picc v8.01pl3 versiyonunu kullanıyordum.Yanlız bu derleyici sanki biraz fazla kod üretiyor. artık yazdığım programları pic16f877 almıyor. Bunun icin daha az kod üreten bir derleyici veya işlemciyi değiştirir meyi düşünüyorum.İlkin derleyiciyi değiştireceğim olmaz ise pic'i ne önerirsiniz........?
hi-tech c ile kullandığın h dosyalarının içlerini bi kontrol et kullanmadığın fonksiyonları sil. Mesela seri haberleşme için printf yerine putch komutunu (bunu internetten bulabilirsin içinden çıkmıyor) kullan derlemede en az 1.5 Kbyte yer kazanırsın.
pic16f877 yerine pic18f452 kullanabilirsin bacak yapıları aynı vede 32 Kbyte, kullanırmısın bilmem ama bu işlemci 40 Mhz ve fiyatı 1-1.5 USD daha pahalı.
CCS bircok durumda Hi-Tech'ten daha fazla kod uretecektir.
Hi-Tech 'e alistiktan sonra CCS cok sacma gelebilir. Cunku register lara isimleri
ile ulasmiyorsun. CCS amcamlar fonksiyon yapmislar onunla hallediyorsun isini.
EROL şu C yi nasıl öğrenicem.aslında problem nereden başlıyacağımı bilemiyorum.
yardım edermisin.
Al benden de o kadar Btiger dostum!!!
Nedir ne işe yarar anlamaya çalışıyorum henüz.
Sevgili Erol ve diğer
arkadaşların bu konuya bir el atması çok iyi olur.
Arkadaşar bu C programlamayı bu kadar gözünüzde büyütmeyin.!
Bundan kurtuluşunuz yok.Yanlış
anlaşılmasın ,eğer siz bu meslekle uğraşacaksanız(hobi dahi olsa) C programlamayı zaten öğrenmek ZORUNDASINIZ.!!!
Şimdi BASIC ve ASM kullanan dostlarım sitem edebilir.Ben de burda
aralarında bir kıyalama yapmak istemiyorum.Ama CHIP programlamanın son noktası C programlama diliir.
Bunu PROFESYONEL kullanıcılar da kabul edecektir sanırım.
İyi
Çalışmalar.
Kardesler;
Bunun example dosyalari var. Manual'i var. Ogrenmek icin bunlar yeterli...
okudum ama anlayamadığım bir kaç nokta var.mesela
1. void ne demektir. detayları ile açıklarmısın.
manuel dosyasında void ile başlayan fonksiyonlar ana programa değer gönderemez deniliyor ama daha ana programın başında void main(void) yazıyor bu ne anlama geliyor.
2. ana
programa değer göndermek ne demek.mesela basicte loop gotoloop arasına gosub yazdığın zaman ilgili alt programı çağırıp işletir. tıpkı asm deki call gibi.
main { } satırlarından sonra yazılan
kullnıcının tanımladığı fonksiyonlarda aynı işi yapmıyormu. eğer yapıyorsa başına void koymanın ne anlamı var.o zaman ana program aynı döngüde aynı komutları işler. şarta bağlı olarak başında
void yazan fonksiyonu ana program da işletirsek bu bağlı olan komutlar işlem görür.ama ana programdaki değişkenleri etkilemez.( değer göndermezdi ya) ozaman bu fonksiyonu ne diye yazdık gibi.
buyrun c ustaları yardımlarınızı bekliyorum
sevgili dostlar C gerçekten çok güzel bende öğrenmeye çalışıyorum(15 yıldır öğrenemedim :lol: ) öncelikle C nin nasıl bir
altyapıya sahip olduğunu anlamak için ANSI C yi az çok bilmek gerektiğini düşünüyorum çünkü yapı olarak aynı bunu için pc ler için yazılmış C kitabı aldım ve faydası oldu.buradaki uygulamaları
borland ın turbo C derleyicisinde deneyerek alıştırma yapıyorum.Şimdilik öğrenme aşamasındayım ama en azından C ile yazılmış bir programı anlayabiliyorum darısı yazmaya.
void boş demektir
void main(void)
{
}
foksiyona değer girmez ve çıkmaz anlamına gelir
misal bir
fonk. çağırırsın return komutu kullanacaksan fonksiyonda sadece işlem yapıldığını belirtmezsin yani başına fonk. void koymazsın değer gireceksen
misal
int girisoku(char
kanal)
{
return(adc1);
}
gibi
hem girisvar hem çıkış return kullanmazsan ana fonksiyona değer gondermez
asm'deki retlw gibi
main fonksiyonuna değer gönderen ve main fonksiyonunun değer gönderdiği yer işletim sistemidir... .
-------------
internetteki tr c kitabından alıntı -----------tümü yahooegrup /cdili veya cdernek dosyalar kısmında-------------
Fonksiyonların Geri Dönüş Değerlerinin Oluşturulması
C dilinde
fonksiyonların geri dönüş değerleri return anahtar sözcüğü ile oluşturulur. return anahtar sözcüğünün bir başka işlevi de içinde bulunduğu fonksiyonu sonlandırmasıdır.
#include
<stdio.h>
int sample(void)
{
int x = 10; int y = 20;
return x * y;
}
int main()
{
int c;
c = sample();
printf("c
= %d\n", c);
return 0;
}
Yukarıdaki örnekteki sample fonksiyonunda return anahtar sözcüğünün yanında yer alan x * y ifadesi sample fonksiyonunu sonlandırmakta
ve sample fonksiyonunun geri dönüş değerini oluşturmaktadır. Fonksiyonun geri dönüş değeri, main fonksiyonu içinde c değişkenine atanmış ve daha sonra standart C fonksiyonu olan printf ile c
fonksiyonunun değeri ekrana yazdırılmıştır. fonksiyonun geri dönüş değerini başka bir değişkene atamadan aşağıdaki ifade ile de doğrudan ekrana yazdırabilirdik :
printf("%d\n",
sample());
Aynı örnekte main fonksiyonu içinde de bir return ifadesinin yer aldığı görülmektedir. main de bir fonksiyondur ve main fonksiyonunun da bir geri dönüş değeri olabilir. main
fonksiyonun geri dönüş değeri programın icrası bittikten sonra işletim sistemine bildirilmektedir. main fonksiyonunun başına bir geri dönüş değer türü yazılmazsa derleyiciler main fonksiyonunun
geri dönüş değerinin int türden olduğunu varsayarlar. Özellikle yeni derleyiciler, tanımlamalarında bir geri dönüş değeri üretecekleri belirtilen fonksiyonlarının, return anahtar sözcüğüyle geri
dönüş değeri üretmemelerini bir uyarı (warning) mesajı ile bildirirler. Borland derleyicilerinde bu uyarı mesajı genellikle "warning : function should return a value..." şeklindedir. Bu uyarı
mesajını kesmek için iki yol vardır:
1. main fonksiyonu da yukarıdaki örnekte olduğu gibi int türden bir geri dönüş değeri üretir. Geleneksel olarak bu değer 0 ise programın problemsiz
bir şekilde sonlandırıldığı anlamına gelir.
2. main fonksiyonunun başına void anahtar sözcüğü yazılarak bu fonksiyonun bir geri dönüş değeri üretmeyeceği derleyiciye bildirilir. Bu
durumda derleyici geri dönüş değeri beklemediği için bir uyarı mesajı göndermez.
return anahtar sözcüğünün kullanılması zorunlu değildir. Bir fonksiyon içinde return anahtar sözcüğü
kullanılmamışsa fonksiyonun icrası, fonksiyonun ana bloğunun sonuna gelindiğinde otomatik olarak biter. Tabi bu tür bir fonksiyon anlamlı bir şekilde bir geri dönüş değeri üretemeyecektir. Bir geri
dönüş değerine sahip olacak şekilde tanımlanmış fakat return ile geri dönüş değeri oluşturulmamış fonksiyonlar rastgele bir değer döndürürler.
return anahtar sözcüğünden sonra parantez
kullanılabilir ama parantez kullanımı zorunlu değildir. Okunabilirlik açısından özellikle uzun return ifadelerinde parantez kullanımı tavsiye edilmektedir.
return (a * b - c *
d);
return 5; /* return ifadesinin değişken içermesi bir zorunluluk değildir. Bir fonksiyon sabit bir değerle de geri dönebilir. */
return sample();
Bu
örnekte return anahtar sözcüğünden sonra bir fonksiyon çağırma ifadesi yer almaktadır. Bu durumda önce çağırılan fonksiyon icra edilir, ve geri dönüş değeri elde edilir, daha sonra elde edilen geri
dönüş değeri tanımlanması yapılan fonksiyonun da geri dönüş değeri yapılmaktadır.
Geri dönüş değeri olmayan fonksiyonlarda return anahtar sözcüğü yanında bir ifade olmaksızın tek
başına da kullanılabilir :
return;
Bu durumda return içinde yer aldığı fonksiyonu geri dönüş değerini oluşturmadan sonlandırır.
PARDON üstad ya sana sacma gelebilir geri dönüş değeri olmayan ve ana programa hic bir değer göndermeyen fonksiyonu
neden yazarız.bu fonksiyonun yapacağı işlemleri
main fonksiyonunun içinde yaptıramazmıyız.o zaman ayrı bir fonksiyon yazmamıza gerek kalmaz mı.tabi bu benim teorim dediğim gibi sacma
gelebilir.
işletim sistemi dos , windows .. sizin yazdığınız programa parametre göndererek ihtiyacı olan bilgiyi geri dönüş değeri olarak
alabilir... herşey yazdığımız programdan ibaret değildir. her işide kendi yazdığımız prg ile halledemeyiz... bizim programımız hazır fonksiyonlar ile bize işletim sisteminden bilgi alabildiği gibi (tarih
saat vs...)işletim sistemi de bizim prg ihtiyaç duyabilir...
bu olay dos ta komut satırından yapılıyor ancak windowsta nasıl bilmiyorum...
daha önceden yürüttüğüm bir projede kullandığım 16f877 nin program belleği yaklaşık %90 ı dolmaya başlayınca
kullandığım compiler (ccs c 3.094 sanırım ) segment yetersizliği gibi bir hata vermeye başlamıştı bende compiler da kullandığım döngüleri küçültmek için alt döngüler kullanıp compiler ın segment
paylaşımını kolaylaştırmıştım. alt döngüleri void ile tanımlamıştım. bu sayede pic in tüm program belleğini kullanabiliyordum (gerçi sonra segment sorunu olmayan 18f452 ye geçtim)
Alıntı yapılan: "BTIGER"PARDON üstad ya sana sacma gelebilir geri dönüş değeri olmayan ve ana programa hic
bir değer göndermeyen fonksiyonu neden yazarız.bu fonksiyonun yapacağı işlemleri
main fonksiyonunun içinde yaptıramazmıyız.o zaman ayrı bir fonksiyon yazmamıza gerek kalmaz mı.tabi bu
benim teorim dediğim gibi sacma gelebilir.
Selam,
Değer geri döndürmeyen fonksiyonlara prosedür denir.Örneğin pic için
delay_ms(int sec); prosedürü
sec sn. kadar programı bekletir.Asm'de alt program yazıp gecikme istendiğinde nasıl oraya dallanmasını sağlıyorsak ( Call Delay), C++'de de gecikmeyi bir prosedür haline getirip istediğimizde
çağırırız ;)
void prosedürlerin başına yazılır ve void olarak tanımlanan fonksiyonlar return ile değer döndüremezler.Main da fonksiyon olarak tanımlanabilir exit(char c) ile işletim sistemine değer
döndürebilirler.Örneğin eski dos programları dos'a hata kodlarını bu şekilde döndürürlerdi.Ayrıca void main(int argc,char *argv ...) ile (prototipi yanlış hatırlıyor olabilirim) komut satırından
girilen parametreler direkt main fonksiyonuna değer olarak alınabilir.
Analyzer.
arkadaşlar ccs öğrenmeye çalışıyorum..
#use fast_io(port)
#use standart_io(port)
#use fixed_io(port_outputs=pin,pin?)
bu direktivler ne işe yarıyor.?
ayrıca bu forumda ccs soru cevapları ile ilgili bir başlık olsa fena olmaz gibi..
nedersiniz..
merhaba.
Standard I/O seçili iken compiler sizin verdiğiniz komuta göre kullandığınız pini giriş veya çıkış yapar (default ayar budur) yani programda hiçbir pini tris ile ayarlamanıza gerek yok mesela if(input(PIN_A0)) gibi bir komut a0 pinini önce bu pinin trisini giriş olarak ayarlar ve sonra pinin 0 mı 1 mi olduğunu kontrol eder. tabi bu durumda her I/O komutu hem zaman gecikmesine hemde program büyüdükçe çok fazla yer kaplamasına sebep olur. fakat küçük programlarda ve çok hız gerektirmeyen uygulamalarda işleri kolaylaştırdığı oluyor.
fast I/O seçiliyken ise belirttiğiniz port için daha önce trisleri nasıl ayarladıysanız onları kullanır.
fixed I/O ise nedir bilmiyorum.
zaten ccs hi-tech'ten çok kod üretiyor falan dedikleride hep bu tür şeyler yüzünden. adamlar bir çok şeyi kolaylaştırmışlar fakat bu kolaylık genelde kodların büyümesine sebep oluyor. Ama eğer bu kolaylıklardan vazgeçip olabildiğince küçük kod yazmağa çalışırsanız hiçte fazla kod üretmiyor garibim CCS :)
Çok hakkını yiyorlar çook. :D
Selam,
AlundrA'ya katılıyorum, CCS Hi-Tech'den 2 gömlek daha üstün.Ben demiyorum, microchipc.com
diyor.Karşılaştırmalı testler var.Kullanım kolaylığı, minimum kod üretme açısından CCS daha avantajlı.Hi-tech kimi durumda daha az kod üretiyor ancak her zaman daha az değil.Kullandığınız
fonksiyonlara bağlı.Bazı fonksiyonlarda hi-tech bazı fonksiyonlarda CCS fazla kod üretiyor.
Şahsi kanaatimce Windows gui'sini kullanan bir derleyici varken nie karakter tabanlı arayüz
kullanan bir derleyici kullanayım ki.Hem de bir avantajı olmamasına rağmen?
Ayrıca başınız sıkıştı mı www.pic-c.com adresinde iyi niyetli bir çok kullanıcı var.
Eugene
Merhaba,
Yazdığım kodları hızlı ve öz olması için Assembly kullanır(d)ım. Bu konuda çok hassas olduğumu sözlerle ifade edemem! Ancak artık üçüncü kuşak programlama diline geçme zamanı geldi. Öyle ya bugüne kadar bir türlü mikrodenetleyici kaynaklarını zorlayamadım. Niye daha kısa sürede kod yazmak varken uzun yolu tercih edeyim. Öğrenmek için dolaylı harcadığım vakti bile kullanmadım. Üstelik C bilmediğim halde bir hafta içerisinde çalışır kodlar yazmaya başladım.
Seçimim CCS PIC C lehine oldu. Kullanım kolaylığı ve az kod üretmesi seçim sebeplerim arasında yer alıyordu. Fiyatı da çok makul. Fiyat demişken IAR'ın derleyicileri hep hoşuma gitmiş ve taktir etmişimdir. Ama PIC mikrodenetleyicilerde kullanılamaması ve pahalı olması nedeniyle şimdilik rafa kaldırdım.
Alıntı yapılan: "Erol"CCS bircok durumda Hi-Tech'ten daha fazla kod uretecektir.
Hi-Tech 'e alistiktan sonra CCS cok sacma gelebilir. Cunku register lara isimleri
ile ulasmiyorsun. CCS amcamlar fonksiyon yapmislar onunla hallediyorsun isini.
Erol, hala yukarıdaki tespitinin arkasında mısın? Aradan geçen bir sene zarfında fikirlerin değişmiş olabilir mi? Değişmiş gibi geliyor çünkü geçenlerde CCS yükleme ile ilgili bir başlıkta karşılaşmıştık. Bu arada senin görüşüne karşı Ahmet şu aşağıdaki önerisi dikkatimi çekti:
Alıntı yapılan: "ahmetu"hi-tech c ile kullandığın h dosyalarının içlerini bi kontrol et kullanmadığın fonksiyonları sil.
HI-Tech C kullanmadığım için emin olamıyorum. Ama yapılan yorumlardan anladığım kadarıyla kütüphane içerisinde kullanmadığın komutları bile derleyip mikrodenetleyici kaynaklarını boşa tüketiyormuş. HI-Tech kullanıcıları bu durumu netleştirirse sevinirim.
CCS PIC C tarafında ise olaylar çok güzel. Mesela matematik işlemleri yaptığınız bir programı yazarken ara sıra satırları iptal ettiğim oldu. Mesela yuvarlama ile ilgili bir işlemin olduğu satırı iptal ettiğimde kod boyutlarında hissedilir küçülme gördüm. Doğrusu da bu zaten. Yoksa kullanmadığın kodları derlemenin manası nedir ki!
Neyse fazla söze gerek yok. Aşağıdaki tabloda her şey açık. Belki tarafsız bir sitede yer almıyor olabilir ama bilgiler yanlış olsa herhalde rakip üreticiler dava açarlardı. Üstelik kullanıcı yorumları da aksini belirtirdi. "In line Assembly" sütunundan itibaren karşılaştırın bakalım. Hangisi daha iyimiş...:)
Başarılar...
Sevgili Dumrulbey;
Derleyicilerin urettikleri kodlar fonksiyonlara ve islemlere gore degismekte. Hatta aynı firmanın 5 gun arayla cikan surumlerinde bile yaklasık 10 word luk fark olusabiliyor. Sadece CCS in kendi sitesindeki veriyi degerlendirmeyin. Matematiksel islemler iceren, kesmeli ayni zamanda karsilastirmalar ve i-o islemleri yapan bir program yazin. Derleyiciler arasindaki Syntax farkını da dikkate alarak farklı derleyicilerle derleyin. Sonucu kendiniz görün. Bizi de haberdar edin.
Ama su var ki derleyici seçiminde sadece en az kod üretimi üzerinde durulmamalı. Kullanim kolayliklari, kod ornekleri, manual'i, hatalı kod üretimi, Firmanın deneyimi gibi etkileri de katıp değerlendirmek lazım.
Bu arada bir derleyicinin hangi komutlar için fazla kod ürettiği tespit edilirse duruma özel çözümlerde bulunabilir.
Bu kadar laftan sonra bende CCS kullanıyorum. Belli hataları var. CCS guzel fakat fazlada guvenmeyin derim.
Allahtan adamlar guzel .LST dosyasi veriyorda uretilen kodu inceleme sansimiz oluyor.
Onemli olan gozunuze kestirdiginiz bir tanesinde sebat edip kendiniz icin kullanılabilir hale getirmeniz. Kullanamadıktan sonra en iyisi diye bir şey yok.
arkadaşlar ccs c makalemiz yeni sayısıyla ana sayfamızda sizlerle göz attınızmı ? :P
Başladı demek..:)
Buna sevinmek gerek!
Bir de kitabını edinebilsek?
Belki daha çok makbule geçecek...
Böyle kısa bir mani ile giriş yaptım. Yine şairliğimmi tuttu ne...:) Sahi orijinal kitap nerede? Ben bir ara Yahoo Groups'da byka dizin altından indirmiştim ama şimdi yok! Bendeki de derleme yaptığım sırada kaybolmuş bulamıyorum. Acaba biri istifademize sunabilir mi?
Ayrıca elle tutulur olsun veya elektronik sürüm (e-zine) olsun hangi kitabı tavsiye edersiniz? Zira yukarıda bahsettiğim kitap sanki CCS'nin geçen sene hazırladığı el kitabına (manual) çok benziyor. Biraz gelişmişi ama bizzat takip etmiş. Gönlümden daha iyi bir şey geçiyor. Araştırdıklarım ise şunlar:
Embedded C Programming and the Microchip PIC[/u]
by Richard H. Barnett, Sarah Cox, Larry O'Cull, P.E., Ph.D., Sarah Cox, Larry O'Cull Richard H. Barnett
(http://images.amazon.com/images/P/1401837484.01._PE5_PI_SCMZZZZZZZ_.jpg)
:arrow: Amazon'dan Sipariş (http://www.amazon.com/exec/obidos/tg/detail/-/1401837484/ref=pd_luc_23_lc_a21x0//104-1912602-4571149) ($68.35)
Embedded Design with the PIC18F452[/u]
by John B. Peatman
(http://images.amazon.com/images/P/0130462136.01._PE_PI_SCMZZZZZZZ_.jpg)
:arrow: Amazon'dan Sipariş (http://www.amazon.com/exec/obidos/tg/detail/-/0130462136/ref=pd_bxgy_img_2/104-1912602-4571149) ($72.00)
İkisi birlikte alınabiliyor ama indirim yok! Aslında Micro Design Inc. sitesinden alsanız daha ucuz ($67) olduğunu gördüm. Ayrıca bakınız:
:arrow: PIC Book: http://www.picbook.com/book_info.html (Kitabın resmi sitesi, daha önce tanıtmıştık gerçi)
:arrow: QwikFlash Development Kits: http://www.microdesignsinc.com/qwikflash (Kitabın geliştirici devresi)
Programming & Customizing PICmicro Microcontrollers[/u]
by Myke Predko
(http://images.amazon.com/images/P/0071361723.01._PE32_PIdp-schmooS,TopRight,7,-26_SCMZZZZZZZ_.jpg)
:arrow: Amazon'dan Sipariş (http://www.amazon.com/exec/obidos/ASIN/0071361723/ref%3Dpd_sxp_elt_l1/104-1912602-4571149) ($33.97)
PICmicro Microcontroller Pocket Reference[/u]
by Myke Predko
(http://images.amazon.com/images/P/0071361758.01._PE32_PIdp-schmooS,TopRight,7,-26_SCMZZZZZZZ_.jpg)
:arrow: Amazon'dan Sipariş (http://www.amazon.com/exec/obidos/tg/detail/-/0071361758/ref=pd_bxgy_img_2/104-1912602-4571149) ($20.37 )
:arrow: Predko Kardeşler: http://www.myke.com/mybooks.htm (Kitabın resmi sitesi, başka kitaplar da var!)
Başarılar...