Jak spojit Header file, Source file a udělat z nich knihovnu

Ahoj našel sem na mcu.cz/news.php?extend.395.15 knihovnu,kterou potřebuju.Na těch stránkách je rozdělena do dvou částí “Header file” a “Source file”.Nevim jak z těch dvou částí udělat knihovnu, kterou jen připíšu do include a budu moc bez problemu užívat její fce.

:arrow_right: administrator: přejmenováno z "Header file pro C"

Ahoj.
Pokud pouzivas AVR Studio, tak musis vytvorit 2 soubory.
NokiaLCD.h do neho zkopirujes tu prvni cast, NokiaLCD.c do toho zkopirujes druhou cast.
Oba dva soubory si zkopirujes do projektu, ktery delas a potom spustit AVR Studio.
Kliknes v leve casti v tom robalovacim seznamu pravym tlacitkem na Header a das tam ADD Existing header a pridas tam soubor NokiaLCD.h
To same udelas s tou polozkou nad tim a das Add Existing source a pridas tam soubor NokiaLCD.c.
Potom uz to ve tvem main muzes naincludovat jako #include "NokiaLCD.h"
Doufam, ze jsem to nepopletl, nemam moznost to vyzkouset.

Ok,vyzkoušim a dám vědet.Jen nechápu proč je to na těch stránkách v tak blbym formátu,musím pracně umazávat čísla řádku který se mi zkopčej taky…

Co to máš za prohlížeč??? :slight_smile: Mě se čísla řádků tedy nekopírují.
Postup Dragona je správně.

Mozillu, potvoru !!! Explorer to nedělá…

Hmm, mam Mozillu Firefox a taky mi to nedela…

Nevim tim se teď zabejvat nebudu,aspoň že mi to explorer přelouskal správně…

Nejde mi to nějak rozchodit.Dal sem ADD source i header jak si řikal.Při překladu mi to ale hodí hlášku “No File such or directory”.

Zde je screenshot: edisk.cz/stahni/87347/No_such_file_or_directory.JPG_160.39KB.html

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

:arrow_right: administrator: přiloženy externí soubory

Ahoj.
Myslim, ze ma spatne ten prvni radek, zkus misto #include <NokiaLCD.h> dat #include "NokiaLCD.h"
A dale prosim pouzivej misto void main(void) int main(void) . Sice nevim proc, ale je to tak.
Zatim

Soubory v adresáři projektu se dávají do uvozovek, include soubory překladače do lomených závorek.

Hmm. Zas pozdě :slight_smile:
S tím mainem je to úplně jedno, jelikož nejsi na OS, tvůj program není volán externě a tedy ani nepotřebuje návratovou hodnotu. Maximálně ti to hodí varování, že návratovej tym mainu není int, ale to můžeš s naprosto klidným svědomím ignorovat.

nejde to stejne…
edisk.cz/stahni/20001/undecl … 7.6KB.html

:arrow_right: administrator: přiloženy externí soubory

Tak source file potřeboval změny v části inclůdů.Něco sem změnil,a něco uplně vynechal a už to nehází errory.Doufám že to ale takhle bude fungovat…

edisk.cz/stahni/65314/0_erro … .56KB.html

:arrow_right: administrator: přiloženy externí soubory

Děláš zmeny na špatných místech.
Include s avr/io.h má bejt v main zdrojáku (když ho pojmenuješ jako projekt, tak aby se v tom prase vyznalo) první řádek kódu, a iom16.h je zbytečný, protože se o jeho načtení postará io.h. Všechny následující části kódu a includované soubory už ho uvidí.

Kontrolní otázka: proč ty přílohy nepřiložíš k postu?
edit: Zas kecám, io.h je potřeba v každym zdrojáku, když je tam využíván, ve tvém případě tam tedy patří. Kdyby byly sestavené definice trochu rozumě, tak by tam nebyl potřeba.

Je tam zajímavá funkce “delay”… S tou bych tedy moc neriskoval a nahradil ji. Překladač ji může vyhodit jako zbytečnou (není mu řečeno, že nesmí).
Takhle nějak by měl ten projekt vypadat:
C_lcd.zip (35.1 KB)

Nepochpil sem naco tam vůbec byla macros.h
Sem chtěl místo toho delay co tam je požít to z knihovny util/delay.h,to by šlo ne?

Jakože bych si ména portů a pinů nadefinoval sám?

Ten screenshot mel na tohle forum velký rozlíšení…

Jj, přesně tímhle delay bych ho nahradil :slight_smile:

Většinou se program píše tak, aby byla co nejmenší část hw závislá. Tedy třeba tady bys místo PORTB psal něco jako LCD_PORT a měl samostatný soubor (zde pravděpodobně dříve onen macros.h), ve kterém svůj obecný název LCD_PORT pověsíš na konkrétní port procesoru: #define LCD_PORT PORTB. Když ti pak rupne v kouli a rozhodneš se, že se ti portb nehodí nebo vyměníš mcu, provedeš změnu na 1 místě a máš hotovo.