Forum: Mikrocontroller und Digitale Elektronik c compiler und header file


von Ma B. (drumstick)


Lesenswert?

Hallo Zusammen

Ich möchte zum Erstenmal mit dem MPLab c programmieren.
Folgendes passiert. Wenn ich die header-datei des PICs 16f88 anbinden 
will, erscheint er nacher in other files und nicht in header files.

und im Programm kann nacher das include file nicht gefunden werden.

Programmteil:

#include <p16F88.inc>

main (){

}


Vielen Dank für eure Hilfe

Gruess

M. B.

von Vlad T. (vlad_tepesch)


Lesenswert?

M. B. schrieb:
> #include <p16F88.inc>

das ist auch höchstwahrscheinlich kein c-header-file
die enden nämlich für gewöhnlich mit '.h'
Ich vermute du versuchst ein assembler-Header zu includieren.
die nennt man oft '.inc'

von Karl H. (kbuchegg)


Lesenswert?

M. B. schrieb:
> Hallo Zusammen
>
> Ich möchte zum Erstenmal mit dem MPLab c programmieren.
> Folgendes passiert. Wenn ich die header-datei des PICs 16f88 anbinden
> will, erscheint er nacher in other files und nicht in header files.

Das muss erst mal nichts heißen.
Viele IDE machen das so. Der Grund dafür: Das es sich hier um eine Art 
System-Header File handelt, gehört es im eigentlichen Sinne nicht zum 
Projekt. Du brauchst es zwar, wirst es aber zb nicht mitgeben, wenn du 
das Projekt in Source Code Form verkaufst.

>
> und im Programm kann nacher das include file nicht gefunden werden.

* Fehler im Dateinamen? (das ist der häufigste Grund)
* Was auch noch sein könnte: das bei der Installation des Compilers
  etwas schief gelaufen ist, und der Compiler nicht mehr weiß auf
  welchem Verzeichnis die Systemheaderfiles zu finden sind.

>
> Programmteil:
>
> #include <p16F88.inc>

.inc ?

ungewöhnlich. Header Files heißen normalerweise .h
Auch oder gerade die System Header Files.

von Ma B. (drumstick)


Lesenswert?

Hallo!

Man bin ich blöd. Das kommt davon, wenn man Assembler in C umschreiben 
muss!

Vielen Dank!

Gruess

M. B.

von Ma B. (drumstick)


Lesenswert?

Hallo!

Irgendwie habe ich trotzdem noch ein Problem!?


Executing: "C:\Programme\HI-TECH Software\PICC\9.71a\bin\picc.exe" 
--pass1 D:\work\c_aufbau\aufbau1.c -q --chip=16F88 -P --runtime=default 
--opt=default -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" 
"--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

Error   [141] D:\work\c_aufbau\aufbau1.c; 13.21 die include Datei 
"pic16f88.h" kann nicht geöffnet werden: No such file or directory

Danke und Gruess

M. B.

von Karl H. (kbuchegg)


Lesenswert?

M. B. schrieb:

> Error   [141] D:\work\c_aufbau\aufbau1.c; 13.21 die include Datei
> "pic16f88.h" kann nicht geöffnet werden: No such file or directory

Hast du nachgesehen, ob die Datei auch wirklich so heißt?

Irgendwo auf einem Subverzeichnis von
C:\Programme\HI-TECH Software
wirst du eine ganze Reihe Header Files finden. Dort müsste die von dir 
angegebene auch dabei sein.

von Ma B. (drumstick)


Lesenswert?

Ja die files sind identisch, aber es funktioniert so nicht?! Das ist mir 
wirklich ein Rätsel?

von Ma B. (drumstick)


Lesenswert?

Was muss ich sonst noch alles umstellen, von asm zu c im MPLab??

Danke und Gruess

Mario

von Karl H. (kbuchegg)


Lesenswert?

M. B. schrieb:
> Ja die files sind identisch, aber es funktioniert so nicht?!

Ich interpretiere das als:
"Ja die Datei gibt es wirklich"

> Das ist mir
> wirklich ein Rätsel?

Wie sieht denn dort die Verzeichnisstruktur aus?

Findet der Compiler beispielsweise bei einem

#include <stdlib.h>

die stdlib.h?

Wenn ja: Das Verzeichnis mit der pic16f88.h, ist das ein Subverzeichnis 
des Verzeichnisses, auf dem stdlib.h liegt?

Also zb so


 + C:\Programme\HI-TECH Software\PICC\9.71a\
 |
 |
 +----- + inc
            | hier liegt stdlib.h
            |
            |
            +-- pic
                 pic16f88.h

stdlib.h liegt im Subverzeichnis "inc". In diesem Subverzeichnis gibt es 
aber ein weiteres Verzeichnis "pic", in dem alle PIC spezifischen Header 
gesammelt sind.

Wenn der Aufbau so oder so ähnlich aussieht, dann muss dein include 
klrerweise

#include <pic/pic16f88.h>

heissen, weil ja pic16f88.h gefunden werden kann, indem man vom Standard 
System Verzeichnis eine Ebene tiefer in das PIC Verzeichnis reinwechseln 
muss.

(Die Verzeichnisnamen hab ich jetzt erfunden, damit ich was zum arbeiten 
habe)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.