kompilace zdrojaku v C do hex souboru - problém

Ahoj. Našel by se někdo, kdo by poradil jak nastavit MPlab IDE a MPlab C32?
Bohužel se v tomhle nevyznám - zbylo to na mě. Mám program napsaný v C. A potřebuju z toho dostat hex soubor - je to Pro PIC16F73. V Mplabu mi to vždy vyhodí chybu

(Executing: “C:\Program Files\HI-TECH Software\PICC\9.81\bin\picc.exe” --pass1 “C:\pokus lih\Lihen_blaha.c” -q --chip=16F73 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist “–errformat=Error %n] %f; %l.%c %s” “–msgformat=Advisory%n] %s” “–warnformat=Warning %n] %f; %l.%c %s”
Error [141] C:\pokus lih\Lihen_blaha.c; 13.19 can’t open include file “system.h”: No such file or directory

********** Build failed! **********)

Toolsuite nastaveno na hi-tech ansi c compiler

Popřípadě může prosím někdo zkompilovat? Děkuji
Lihen_blaha.c (32.8 KB)

Hlási ti to, že nenašel soubor system.h, tento soubor vlož do stejného adresáře s Lihen_blaha.c

Nebo by mohlo pomoct dát ho do lomených závorek <system.h> - tím se říká, že ho překladač nemá hledat v lokálním adresáři, ale v systémových include souborech.

Tenhle soubor jsem nasel primo instalacnim adresa mplabu. je nakopírovaný i do adresáře kde mam soubor ke kompilaci. Stále to stejné. Jen mi není jasné co je to vůbec za soubor.

tak C32, nebo HI-TECH ?

zdroják je evidentně v HI-TECHu a výstup z překladače taky

teď k závorkám - u většiny překladaču se takto umístěný soubor hledá v adresáři do kterého je daná cesta v konfiguraci projektu - asi je špatně a proto ji nemůže najít

kromě "select language toolsuite " je ptřeba nastavit i “set language tool locations” v záložce Project

je li soubor zkopírovaný do stejného adresáře s ani ne tak souborem .c ale hlavně s projektovým souborem ( u C32 .mcw - U HI-TECH nevím) tak ho určitě najde , když bude v uvozovkách.

a pokud bude v jiném adresáři, tak mu stačí říct ve kterém :

#include “…\jiny_adresar\system.h”

jinak to je hlavičkový soubor od **system.c **ve kterém jsou definovány nejspíš funkce pro ovládání periferií mcu ( set_bit( portc, 2 ) clear_bit( portc, 2 ) atd.,a jistě i něco jiného.

no a proto by i tento soubor měl být ve stejném adresáři jako system.h

no a kdyby se nedařilo - tak zdroják upravit pro C32 ( C18) a přeložit to v tom

ještě mně napadlo, jestli ho máš taky v okně projektu - klepnout pravým na header files a zvolit “add files”

a pokud bys to chtěl od někoho zkompilovat, tak musíš dát k dispozici i ty soubory system.c a system.h - aspoň já je v mojem HITECHu lite nemám - neumí dokonce ani ten typ pic16F73
prj.JPG

A ještě mi tonedá abych se zeptal - to je nějaký funkční kód - někomu to chodí?

Mně se tam toiž některé věci moc nezdají - třeba:

void Zapis(char b ) { char a; for ( a = 1 ; a <=8 ; a++ ) { if ( b.7 ) //vymaskuj bit z b

by zdánlivě fungovalo, kdyby b bylo definováno jako struktura:

[code]struct
{
unsigned 0:1;
unsigned 1:1;
unsigned 2:1;
unsigned 3:1;
unsigned 4:1;
unsigned 5:1;
unsigned 6:1;
unsigned 7:1;
} b;

[/code]

ovšem proměnná nesmí začínat číslem, takže jedině:


struct
  {
	unsigned b0:1;
	unsigned b1:1;
	unsigned b2:1;
	unsigned b3:1;
	unsigned b4:1;
	unsigned b5:1;
	unsigned b6:1;
	unsigned b7:1;
  } b;

jinak ale se pro testování bitů v byte v C standartně používá:


if(b&(1<<7))

Jj. Tohle je normálně funkční. Jen potřebuji změnit otoc_imp na jinou hodnotu. a buď mám tento soubor nebo hex vytažený z pic procesoru. Bohužel zadny system.c a system.h soubor nemam. Jen soubory s koncovkou cof, ist, map, c, pre. Jak jsem psal. Ja se v tomhle uplne nevyznám a autor tohohle nesmyslu přerušil kontakty.

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

Tak zakomentovat ten #include “system.h”, zkusit překlad, podívat se na jakých jménech to bude hlásit chyby a ta jména pak hledat v systémových souborech (např. Total Commanderem), aby se vědělo co includovat místo toho.

Tak to je problém - ty soubory jsou nespíš taky dílem autora - teoreticky by mohly být součástí IDE, ale to už by ses k nim nějak po všech radách dostal-a jestli jsem to dobře pochopil, tak od autora se jich asi nedočkáš.

Neznám samozřejmě pozadí, ale pokud autor dostal zaplaceno, měl by dodat kompletní dokumentaci a kompletní sw.
Pokud to bylo naopak - tak se mu ani nedivím.

Ale takhle je to zralé na kompletní předělání - v kódu je spousta funkcí, které jsou definované někde jinde a i když by se asi jednoduše daly napsat, protože v komentáři je někdy vysvětleno, co dělají je tam ještě spousta dalších, které nevím co mají dělat - pravděpodobně jsou všechny definované v těch neexistujících souborech, protože jiný než ten **system.h ** tam includovaný není.

A protože to je evidentně komerční projekt - bude to určitě něco stát - bohužel.

Takže je na zvážení - vymámit,případně vytlouct :slight_smile: z autora kompletní sw, anebo do toho investovat další prostředky.

A ještě jednou jsem si ověřil přímo v HI TECHu, že zápis : **if ( b.7 ) ** je prostě nesmysl - vyhodilo mi to chybu - v C se prostě takhle k jednotlivým bitům dostat nedá (je to asi zas nějaký vynález autora) - tečková anotace se prostě používá pro přístup ke členům struktury, nebo unionu.
Vyjímku jsem viděl jenom u Codevisionu AVR, kde se dá takto dostat k jednotlivým bitům speciálních registrů - což je ale dané asi tím, že u AVR má každý bit spec. registu svoji vlastní adresu.