www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik c compiler und header file


Autor: MC Bu (drumstick)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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'

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MC Bu (drumstick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

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

Vielen Dank!

Gruess

M. B.

Autor: MC Bu (drumstick)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MC Bu (drumstick)
Datum:

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

Autor: MC Bu (drumstick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was muss ich sonst noch alles umstellen, von asm zu c im MPLab??

Danke und Gruess

Mario

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.