avatar_Hattuşa

CCS C yi nasıl öğrenebilirim

Başlatan Hattuşa, 07 Nisan 2013, 23:55:42

pwm3434

teşekkürler dediklerini yaptım  sorun  yok şimdi 

Hattuşa

Alıntı yapılan: xoom - 29 Aralık 2013, 13:49:21
http://www.4shared.com/zip/Qt05-rzT/ccs_c_4140_full__kg.html

usta indirdim ve kurdum ancak kürekleme işinde not defterindeki işlemi anlamadım?
kürek işlemini nasıl yapmam lazım

Hattuşa

#17
slm arkadaşlar;
verilen linkle derleyiciyi yükledim ve sanırım kürekledim. gelelim sorunuma  ;D

serdar çiceğin "CCS C ile pic programlama" kitabını okuyarak basitce bir butona basınca ledi yakan, bırakınca sönen bir kod yazayım dedim ama beceremedim, derleyici hata veriyor, gelde ete hocayı arama, arkadaşlar bunu öğrenmek istiyorum gerçekten, ama bir dosya oluşturmak fuse congf. oluşturmak derleyiciye kod yazmak noktasında tkandım, kitaptanda bişey anlamadım, kitabın bi hatası yok, hata bende bunu biliyorum, herneyse
isis şemayı ekliyorum, sizden ricam bu kodun yazımına vs nasıl başlarım, bi el atarsanız sevinirim.


pwm3434

#18
pro-tr  bende  senin gibi  yeni  yeni  başlıyorum  anladığım kadarıyla  yardımcı  olamaya  çalışıyım  ama  hatalarımı  düzeltecek  ustalar kızmasın.
procect>pıc wizard tıkla ve  masaüstünde  bir  klasore ccs proler diye kaydet. açılacak  pencereden  gerekli  ayarları  seç.yani  pic  sigorta ayarları vs... ve  bu işlemler sonrasında pencerenin  alt tarafındaki  tamam  butonuna  tık  ve  programı yazacağın  pencere gelecek.   

Hattuşa

#19
usta o kısma kadar geliyorum ama void main () kısmına hata verio

#use fast_io(a)
#use fast_io(b)
int1 x


void main()
{
   setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
set_tris_a(0b00000010);
set_tris_b(0b00000010);


   basla:
   x =input(pin_a1);
   output_bit(pin_b1,x);
   goto basla
      //TODO: User Code

pwm3434

#20
pro kardeş goto basla komutunun hemen altına }  yaz yani  void  maine  ait  olan  fonksiyon  bloğu  gövdesinin  parentezi kapatılmak  zorunludur
#use fast_io(a)
#use fast_io(b)
int1 x


void main()
{
   setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
set_tris_a(0b00000010);
set_tris_b(0b00000010);


   basla:
   x =input(pin_a1);
   output_bit(pin_b1,x);
   goto basla
   }
      //TODO: User Code




Hattuşa

#21
ustam o parantez var ama eklerken unutmuşum,
hata satırında;
"error 36 "ledx.c" line 8(1,2):expecting a;or,
error 76 "ledx.c"lin 21(1,2):expect;

diyor ne demekse  >:(

bu arada herkesin 2014 yepyeni yılı kutlu olsun

pwm3434

#22
seninde  yeni  yılın kutlu olsun bol paylaşımlı  yıllar
bu kodları  denermısın.

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use fast_io(a) // Port yönlendirme komutları A portu için geçerli
#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

int1 x; // 1 bitlik x adında tamsayı tipinde bir değişken tanımlanıyor.

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_a(0b00000001);    // RA0 ucu giriş olarak ayarlandı.
   set_tris_b(0x00);    // RB0 portu tümüyle çıkış olarak ayarlandı.

   output_b(0x00);

   basla:
   x=input(pin_a0);      // RA0 girişi okunuyor, tersleniyor ve x değişkenine aktarılıyor.
   output_bit(pin_b0,x);  // x değişkeni değeri RB0 pini çıkışına aktarılıyor.
   goto basla;            // basla etiketinin olduğu yere gidilir.
}

Hattuşa

evet usta bunu hatasız derledi, yalnız ben işlemci olarak 18F2520 seçmiştim  ;D

Hattuşa

ustam ya gözümü tek korkutan başlangıcı yapamamam, yani mantığını çözemedim, pıc wizardı çalıştırıp işlemciyi seçince bir kaç tane dosya oluşuyor, vs vs bu kısmı bir aşabilsem ötesini yapmak kolay gibi gözüküyor şimdilik

pwm3434

sen  ne yapmak  istiyorsun, 18f  ile mi  yoksa 16f ile mi

pwm3434

#26
derledikten  sonra  oluştrulan  kodları mı  kasdediyorsun. işlemciyi  seçip  ve  diğer  sigorta ayrları vs.. yaptığımızda  program  arka planda editörmüze  seçtiklerimizi  koda  dönüşürüp   bize  sunuyor. 

xoom

#27
ÖRNEK BİR PROJE OLUŞTURALIM

Projemizi oluşturmak için CCS-C programını açıyoruz, Project Menüsüne tıklıyoruz.
Açılan Pencerede "PIC Wizard" Butonuna basıyoruz, karşımıza aşağıdaki gibi bir pencere geliyor.



Resimde gördüğünüz gibi projemize flip_flop.pjt ismini verip istediğimiz bir klasöre kaydediyoruz. Kaydet butonuna bastığımızda Proje Sihirbazı karşımıza gelecektir.


Ayarlarımızı resimde görüldüğü şekilde yapıyoruz. (Device = 16F628A, Oscillator Frequency = 4000000 Hz vb. gibi). Başka hiçbir ayar yapmadan "OK" butonuna basıyoruz. Hepsi bukadar :)

Siz de aşağıdaki kodu resimde görüldüğü gibi // TODO: USER CODE!! yazan yerin altına girin.

while(TRUE)
{
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(1000);
output_high(PIN_B1);
output_low(PIN_B0);
delay_ms(1000);
}

Daha sonra kodumuzu derlemek, yani PIC'e yüklenecek hex kodunu oluşturmak için ya Compile menüsüne geçip oradan Compile butonuna basıyoruz ya da direkt klavyeden F9 tuşuna basıyoruz. Derleme başarılı birşekilde gerçekleştirildiğinde ekranda aşağıdaki gibi bir görüntü olmalıdır.


Tebrikler, CCS-C ile projenizi gerçekleştirdiniz.

Şimdi de yazdığımız programın çalışmasını test etmek için Proteusta simulasyon yapalım.

Proteusta yeni bir dizayn oluşturuyoruz ve bir adet PIC16F628A, 2 adet direnç ve iki adet led kullanarak devremizi oluşturuyoruz. 16F628A2nın ayarlarına girerek CCS-C de oluşturduğumuz .hex dosyasını yüklüyoruz, işlemci clock frekansını 4MHZ olacak şekjilde ayarlıyoruz ve simulasyonu başlatıyoruz. Herhangi bir problem yok ise ledlerin sırayla yanıp söndüğünü görebilirsiniz. dilerseniz ledlere osilaskop bağlayarak voltaj dalga şekillerine de bakabilirsiniz. Aşağıdaki resim simulasyon anında Proteustan alınmıştır.



#include "flip_flop.h"
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //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) orB5(PIC18)used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=4000000,RESTART_WDT)
#use rs232(baud=9600,parity=N,xmit=PIN_B0,rcv=PIN_B0,bits=8)
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr
// Oscillator Config tab
// TODO: USER CODE!!
while(TRUE) {
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(1000);
output_high(PIN_B1);
output_low(PIN_B0);
delay_ms(1000);
}
}



Hattuşa

evet dediğiniz gibi yaptım usta ve hiç sorun çıkarmadı, şimdi fuse ayarlarında değişiklik yapmak istersek yapabilirmiyiz?

xoom


Powered by EzPortal