folder Tahribat.com Forumları
linefolder C - C++
linefolder C Dilinde Kütüphane Dosyası Yazma ????



C Dilinde Kütüphane Dosyası Yazma ????

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Firzen
    Firzen's avatar
    Kayıt Tarihi: 23/Şubat/2012
    Erkek

    Merhabalar Değerli Üyeler;

    Ortanın biraz üstü seviyesinde C dili biliyorum ve bu sayede MikroC,IAR WorkBench ve C türecleri diğer donanımsa C programlarını kullanabiliyorum.Problemim ise işlemci için kod yazmaktan ziyade işlemcide kullnalıcak değişken tanımlama ve kütüphane dosyasını ayalrmakta.

    Bir türlü aşağıdaki gibi bir kütüphane dosyası yazamadım. hani diyeceğim gerizekalıyım. Bir sürü forum sitesine kayıtlıyım PIC,MSP430,ARM ile ilgili kimse birşey demiyor nasıl yazılır nasıl yapılır. Yani insan biraz daha açıklayıcı olmalı bu konuda (Üniversitedeki hocama sordum oda anlamıyor)

    Bana bu konuda yardım oalcaklara şimdiden çok teşekkür ediyorum.

    Umarım derdimi sıkıntımı anlatabilmişimdir kütüphane dosyasını sizlerle başbaşa bırakıyorum şimdilik.

     

    #include "io430.h"
    #include "lcd_msp.h"

    void delay_ms(unsigned int ms)
    {
      while(ms--)
        __delay_cycles(1000);
    }

    void delay_us(unsigned int us)
    {
      while(us--)
        __delay_cycles(1);
    }
    void lcd_putch(char c)
    {
      delay_us(200);       
     
      LCD_DATA = (c & 0xF0) + BIT0 + BIT1;
      EN_ACKAPA();
      LCD_DATA = ((c & 0x0F)<<4) + BIT0 + BIT1;
      EN_ACKAPA();
    }

    void lcd_komut(unsigned char c)
    {
      delay_us(200);      
     
      LCD_DATA = (c & 0xF0)+ BIT0 ;
      EN_ACKAPA();
      LCD_DATA = ((c & 0x0F)<<4)+ BIT0 ;
      EN_ACKAPA();
    }

    void lcd_temizle(void)
    {
      lcd_komut(0x1);
      delay_ms(2);
    }

    void lcd_puts(const char* veri)
    {
      delay_us(200);
      while(*veri)
        lcd_putch(*veri++);
    }

    void lcd_putsl(const char* veri, const unsigned int uzunluk)
    {
      unsigned char i;
     
      delay_us(200);
     
      for(i=0;i<uzunluk;i++)
        lcd_putch(veri[i]);
    }

    void lcd_goto(const char x, const char y)
    {
      if(x==1)
        lcd_komut(0x80+((y-1)%16));
      else
        lcd_komut(0xC0+((y-1)%16));
    }

    void lcd_init()
    {
      LCD_RS = 0;
      LCD_EN = 0;
     
      delay_ms(150);
      LCD_EN = 1;
      lcd_komut(0x02);  // İmleç 0x0 konumunda
      delay_ms(200);
     
      lcd_komut(0x28);  // 4 Bit , Çift Satır LCD
      lcd_komut(0x0C);  // İmleç Gizleniyor
      lcd_temizle();      // Ekran Temizleniyor
      lcd_komut(0x06);  // Sağa doğru yazma aktif
      lcd_komut(0x80);  // LCD Birinci Satır Konumunda
    }

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    kütüphane dediğin main fonksiyonu olmayan fonksiyonların paket halinde tutulduğu dosya. Istediğin fonksiyonları yazıp include ile eklemen yeterli.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Firzen
    Firzen's avatar
    Kayıt Tarihi: 23/Şubat/2012
    Erkek

    Problem zaten o bir türlü bir kütüphane yazamadım.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    fonksiyon yazmayı öğren o zaman önce

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    uLtRaLoVeR
    uLtRaLoVeR's avatar
    Kayıt Tarihi: 25/Haziran/2007
    Erkek

    Struct tanımlarını fonksiyonlarını sabitlerini yaz .h olarak kaydet bu kadar. Programını yazarken de include et

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    LynXMaSTeR
    LynXMaSTeR's avatar
    Kayıt Tarihi: 19/Temmuz/2003
    Erkek

    hocam hazir kütüphaneler var onları kurcala. biz okulda msoftcon.h i kullaniyoruz genelde konsolda cizim felan yapmak icin


    goo.gl/qBNZmW
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ADSIZ
    ADSIZ's avatar
    Kayıt Tarihi: 21/Eylül/2005
    Erkek

    Burada arduino için örnek var ama mantık aynı sanırım

    http://arduino.cc/en/Hacking/LibraryTutorial

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    @AsDayGoesBy haklı, tek yapman gereken fonksiyonları yazmak, bir kaç parametreyle dll ya da statik kütüphane haline getirebilirsin.


    @uLtRaLoVeR, .h dosyasına fonksiyon ya da değişken tanımlaması yazılmaz, bir çok sakıncası var, en önemli iki tanesi şöyle;

    Başlık dosyası aynı programın birden çok C dosyasına eklenebilir, hatta aynı C dosyasında bile birden çok kez eklenebilir, bu yüzden başlık dosyalarının başına #ifndef XXX_H #define XXX_H eklenir.

    Eğer iki C dosyasında aynı başlığı eklediyseniz ikisi de derlenir ancak exe oluşurken linker hata verir "aynı fonksiyondan veya global değişkenden birden fazla modülde bulunmasından dolayı".

    Diğer sorunu örnek vererek açıklıyım. Windows.h dosyası hemen her windows programında eklenir ve kendisi de birçok windows başlık dosyasını ekler. Eğer bu başlık dosyalarında fonksiyonlar olsaydı, sadece MessageBox kullanmak için bu başlık dosyasını eklediğinizde alakasız bir sürü fonksiyon derlenirdi ve exe'ye eklenirdi.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek
    Tugberk bunu yazdı

    @AsDayGoesBy haklı, tek yapman gereken fonksiyonları yazmak, bir kaç parametreyle dll ya da statik kütüphane haline getirebilirsin.


    @uLtRaLoVeR, .h dosyasına fonksiyon ya da değişken tanımlaması yazılmaz, bir çok sakıncası var, en önemli iki tanesi şöyle;

    Başlık dosyası aynı programın birden çok C dosyasına eklenebilir, hatta aynı C dosyasında bile birden çok kez eklenebilir, bu yüzden başlık dosyalarının başına #ifndef XXX_H #define XXX_H eklenir.

    Eğer iki C dosyasında aynı başlığı eklediyseniz ikisi de derlenir ancak exe oluşurken linker hata verir "aynı fonksiyondan veya global değişkenden birden fazla modülde bulunmasından dolayı".

    Diğer sorunu örnek vererek açıklıyım. Windows.h dosyası hemen her windows programında eklenir ve kendisi de birçok windows başlık dosyasını ekler. Eğer bu başlık dosyalarında fonksiyonlar olsaydı, sadece MessageBox kullanmak için bu başlık dosyasını eklediğinizde alakasız bir sürü fonksiyon derlenirdi ve exe'ye eklenirdi.

    #pragma once, #ifndef XXX_H #define XXX_H ile benzer işlevi mi yapar?

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek
    Fatih54 bunu yazdı
    Tugberk bunu yazdı

    @AsDayGoesBy haklı, tek yapman gereken fonksiyonları yazmak, bir kaç parametreyle dll ya da statik kütüphane haline getirebilirsin.


    @uLtRaLoVeR, .h dosyasına fonksiyon ya da değişken tanımlaması yazılmaz, bir çok sakıncası var, en önemli iki tanesi şöyle;

    Başlık dosyası aynı programın birden çok C dosyasına eklenebilir, hatta aynı C dosyasında bile birden çok kez eklenebilir, bu yüzden başlık dosyalarının başına #ifndef XXX_H #define XXX_H eklenir.

    Eğer iki C dosyasında aynı başlığı eklediyseniz ikisi de derlenir ancak exe oluşurken linker hata verir "aynı fonksiyondan veya global değişkenden birden fazla modülde bulunmasından dolayı".

    Diğer sorunu örnek vererek açıklıyım. Windows.h dosyası hemen her windows programında eklenir ve kendisi de birçok windows başlık dosyasını ekler. Eğer bu başlık dosyalarında fonksiyonlar olsaydı, sadece MessageBox kullanmak için bu başlık dosyasını eklediğinizde alakasız bir sürü fonksiyon derlenirdi ve exe'ye eklenirdi.

    #pragma once, #ifndef XXX_H #define XXX_H ile benzer işlevi mi yapar?

    Evet ama microsoft'un kendisinin bile kullanmadığı bir yöntem o, portable değil. MSDN örnekleri dışında kullanıldığını pek görmedim.

Toplam Hit: 3539 Toplam Mesaj: 10