ccs compiler-sorun var!

Başlatan ibr@him, 04 Temmuz 2012, 21:16:45

ibr@him

merhaba;
ben css compiler ile programlama öğrenmek istiyorum ya programda yada benden kaynaklana sorunlar yüzünden yerimde sayıyorum neyse sorun şu internette izledim videolardakileri uygulamak istiyorum ama bu sorunu veriyor en basit programları bile yapamıyorum buda beni sinir ediyor. bana yardımcı olursanız sevinirim

yazici67

Çok saçma bir durum.Kodlarını yollayabilir misin? Görünürde yanlış hiç birşey yok.
Bu durumla karşılaşman için 4. satırda bir parantezi unutmuş olman gerekir - ama yok -.
Derleyicinde bir sıkıntı olabilir.
İşte derleyici:
http://rapidshare.com/files/2221297202/PIC_C_Compiler_CCS_PCWHD_v4.068.rar

ibr@him

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
set_tris_b(0x00);
output_b(0x00);
basla:
output_high(pin_b0);
delay_ms(500);
output_low(pin_b0);
delay_ms(500);
output_b(0x00);
goto basla;
}
kod bu basit bir led yak söndür

yazici67

Birde \"buton.h\" başlık dosyasının içeriğini atabilir misin?

ibr@him

#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES LP                       //Low power osc < 200 khz
#FUSES NOPUT                    //No 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) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

yazici67

Burada da bir sorun yok.Verdiğim CCS C derleyicisini indirip derlemeyi bir daha denersin...

ibr@him

#6
asıl bu hataları ilk veriyor

ibr@him

tesadüfen bu satırı tamamen silince düzeldi şuan ama gerekli bir satır mı bilmiyorum ve ilerde sorun yaratır mı
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

yazici67

Hmm... Bu satır RS232 iletişimini hazırlar - bilgisayar gibi seri portlu cihazlarla iletişim kurmanı sağlar -.Yani senin projen için gereksiz.Ama ben hep şöyle kullanırım projelerimde:
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N)
Neyse. Sorun çözülmüştür o zaman... :)

ibr@him

kullandığım bilgisayar netbook yani seri port yok ondan mı yani?

yazici67

Yoo onunla bir ilgisi yok.Verdiğim derleyiciyle bir dene...

ibr@him

linki verdikten sonra onu indirdim eskiyi kadırdım şuan zaten senin önerdiğini kullanıyorum
gerçi eski derleyicimin aynısı arada kb farkı vardı ama ben ginede senin önerdiğini kurdum

yazici67

Peki aynı şekilde banim verdiğim satırı
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N)
kullanarak dene.Bakalım hata verecek mi?

ibrahim626

#13
altı çizili yerdeki parantez ve noktalı virgülün tekini silerseniz olur.





parantezi ve noktalı virgülü siliyorum zaten.
verdiniz kodu denedim onda da aynı

ibr@him

bir sorum daha olacaktı.
isis te test ettiğimde alttaki kodlar çalışıyor ama resimdeki uyarıyıda veriyor.
ben bu codları daha önce yaptığım havada yazı devresinde denediğimde çalışmadı. nedeni bu hata mı?


ibr@him

#include \"C:\\Users\\acer\\Desktop\\c programama\\16f84\\16f84ledyak.h\"


void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_tris_b(0x00);
output_B(0x00);
basla:
output_high(pin_b0);
delay_ms(500);
output_low(pin_b0);
delay_ms(500);
output_b(0x00);
goto basla;

}
buda yazdığım kodlar


yazici67

#17
Biraz araştırdım.CCS C ile ilgili bir sorunmuş. Şöyle dene:
#include \"C:\\Users\\acer\\Desktop\\c programama\\16f84\\16f84ledyak.h\"

#byte PORTA = 0x06
#byte TRISA = 0x86

void main()
{
   TRISA = 0x00;
   PORTA = 0x00;
   
   while(TRUE)
   {
      bit_set(PORTA, 0);
      delay_ms(500);
      bit_clear(PORTA,0);
      delay_ms(500);
   }
}

Not : buradaki bit_set() ve bit_clear() fonksiyonları belirtilen biti 1 veya 0 yapar.

ibr@him

#18
verdiğiniz kodları denedim isiste uyarı vermedi ama gene uygulamada çalışmadı epey bir kurcaladıktan sonra programlarken osc ayarlarında olduğunu keşfettim. ve bildiğim tarzda yazdığım kodlarda çalıştı şimdiye kadar verdiğiniz emekten ve ilginizden dolayı teşekkür ederim. birşey daha sormak istiyorum siz hangi derleyici yi kullanıyorsunuz? pıc basic pro yu çok duydum ama indiremedim o yüzden bu programı kullanıyorum değiştirmemi önerir misiniz? yeni başladığım için baştan iyi bir programla başlayayım sonradan değiştirmek zorunda kalmamak için vede uzun vadeli(kullanabilirlik açısından kapsamlı projeler için) birde şifreli kilit ,termostat , led efek tabela ,çiçek sulama gibi projelerin programlarını oluştura bilmem için bir yol gösterirseniz cok memnun olurum.Fatih abicim yardımlarınız için tekrar teşekkür ederim  ;)

yazici67

#19
Doğru osilatör ayarları ( genel olarak fuse ayarları ) baş belası olabiliyor :)
İlk başta C dilinden önce Assembly dilini öğrenmen senin için daha iyi olurdu.En azından PIC\'in RAM adreslemesini, özel Register\'ları vs.vs. daha birçok ayrıntıyı öğrenirdin.
C ile devam etmeden önce Assembly dilini öğrenmeni tavsiye ederim.

Elbette programlama için farklı diller var. Assembly, Basic, C vb. PIC Basic Pro bir Basic dili.
Bana sorarsan kullanacağın dil yapacağın programa bağlı.Eğer RTOS işletim sistemleriyle ilgilenmeyeceksen
Basic daha kolaydır.Pratik fonksiyonları vardır.Ama bir kez C yapısına alıştıysan değiştirmen biraz zor olur :)
Basic ve C için yapılmış örnekleri incele.Hangisi hoşuna gidiyorsa çok geç olmadan o dili seç...

Ben sadece PIC için program yazmıyorum.Farklı farklı platformlar ve projelerle uğraşıyorum.
Mesela PIC, Atmel ve ARM programlarıyla uğraşıyorum.
Birde kendi çapımda bir işletim sistemi ( sistemciği ) projem var... değişik değişik projeler...

Tüm dillerle aynı işleri yapabilirsin.Geliştirilebilirlik açısından C daha uygun.Ama Basic kadar pratik değil...
Aynı uygulamaya ait C ve Basic programlarını incelersen daha net bir sonuca varırsın.

Bu arada C konusunda ( ayrıca C#, C++ vb. ) bir sıkıntın olursa yardımcı olabilirim.Ama Basic konusunda iyi değilim...

ibr@him

main(void)
{

unsigned int i;
unsigned char dizi[]={
0xFF,0x02,0x0C,0x02,0xFF,0x00, // M
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0xFF,0x11,0x31,0x51,0x8E,0x00, // R
0xFF,0x10,0x10,0x10,0xFF,0x00, // H
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x89,0x89,0x89,0x76,0x00, // B
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0x00,0x00,0x00,0x00,0x00,0x00  // Bosluk
};

TRISB=0;

for(;;){
   for(i=0;i<48;i++){
   PORTB=dizi[i];
   DelayMs(1);  // 1ms bekle
   }
   DelayMs(48); // 48ms bekle
}
}

ibr@him

ben bu kodlarla havaya merhaba yazıyordum ama sadece merhaba çünkü hazır hex dosyası vardı. ama şimdi farklı kelimeler yazmak istiyorum verdiğim kodlar onun bende tüm alfabenin harfleri var derleyeyim dedim ama bazı tanımları tanımadı zahmet olmazsa bu tanımların ccs c karşılığını öğretir misiniz?

yazici67

Hi-Tech C \' ye mi geçtin ? Yada bana mı öyle geldi :) Derleyiciye göre durum değiştiği için.
Bu kodlar Hi-Tech C kodu.Sendeki derleyici CCS C derleyicisi. Bu kodları değiştirmek gerekir.

yazici67


ibr@him

#24
yok bu kodlar hazır vardı! sırf havaya başka bir kelime yazmak için indirdim ama programdan hiç birşey anlamadım karmaşık geldi yapamadım bende anladığım yoldan derleyim diye yardım istedim yani ccs c yi bırakmadım. devam ediyorum.

yazici67

Dediğim gibi bu kodlar CCS C için değil :) Bu kodlar Hi-Tech C için o yüzden sordum... verdiğim kodlarla deneyebilirsin...

ibr@him

teşekkür ederim güzel çalışıyor farklı kelimede yazdım.
#define HARF_SAYISI        8
#define HARF_BASINA_BYTE   6
buradaki harf sayısını istediğimiz gibi artırabiliyoruz değil mi?
harf sayısını değiştirince byte değiştirmemiz gerekiyor mu?

yazici67

Sadec HARF_SAYISI\'nı değiştirmen yeterli.Diğeri sabit olacak.Tabi harf başına göstereceğin byte sayısını değiştirmezsen...

ibr@him

teşekkür ederim. Bir sıkıntım olursa rahatsız edebilirim? ;D

yazici67

Elbette edebilirsin problem olmaz.İyi çalışmalar... :)

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın