C Dilinde Kütüphane Dosyası Yazma ????
-
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
} -
kütüphane dediğin main fonksiyonu olmayan fonksiyonların paket halinde tutulduğu dosya. Istediğin fonksiyonları yazıp include ile eklemen yeterli.
-
Problem zaten o bir türlü bir kütüphane yazamadım.
-
fonksiyon yazmayı öğren o zaman önce
-
Struct tanımlarını fonksiyonlarını sabitlerini yaz .h olarak kaydet bu kadar. Programını yazarken de include et
-
hocam hazir kütüphaneler var onları kurcala. biz okulda msoftcon.h i kullaniyoruz genelde konsolda cizim felan yapmak icin
-
Burada arduino için örnek var ama mantık aynı sanırım
-
@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.
-
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?
-
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.