CCS PIC C Compiler Hakkında

Başlatan dogan, 19 Ağustos 2003, 19:16:37

dogan

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........?

ahmetu

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ı.

Erol YILMAZ

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.

asm_Coder

EROL şu C yi nasıl öğrenicem.aslında problem nereden başlıyacağımı bilemiyorum.
yardım edermisin.
y=f(x);

Veli B.

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.

EES

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.

Erol YILMAZ

Kardesler;
Bunun example dosyalari var. Manual'i var. Ogrenmek icin bunlar yeterli...

asm_Coder

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
y=f(x);

mmengi

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.

ise

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

kesmez

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.
"İnned dine indallahil İslam" (2-19)

asm_Coder

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.
y=f(x);

kesmez

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...
"İnned dine indallahil İslam" (2-19)

fyper

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)

Analyzer

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.
Üşeniyorum, öyleyse yarın!