Problem mit Header-Datei für C Programmierung Microcontroller

OP #2193993
Lesenswert?

hallo,

ich muss für eine prüfung ein codeschloss in c programmieren und zwar 
auf einem microcontroller der familie 8051 (infineon sab80c535-n).
das problem dabei ist, dass ich nicht weiß, wie die ports zu adressieren 
sind. zwar habe ich gegooglet und auch eine header datei gefunden, 
jedoch hat mein compiler (uc51) damit ein problem.

die header datei: http://pastebin.com/1kDcthZC

fehler bei umshell (compiler) "syntax error; found `P1' expecting `;'"
dieser fehler tritt für jede zeile auf.

die reg51.h datei von umshell: http://pastebin.com/dY1H138W
diese datei sowie die reg535.h http://pastebin.com/A7V8S54x
sind bereits bestandteil der installation von uc51 gewesen, sowie die 
dateien
reg51.def: http://pastebin.com/J7nrTf8p
und reg535.def: http://pastebin.com/Tpnftwr1


ich habe keine ahnung, wie ich dieses problem angehen könnte, da meine 
c-fähigkeiten sehr bescheiden sind.
benötigt werden port1, 3, 4, 5 und sie sollten alle bitadressierbar 
sein.
desweiteren habe ich bereits ein codeschloss für den gleichen 
microcontroller in assembler geschrieben, wofür ich eine vom lehrer 
vorgegeben .def datei benutzt habe (http://pastebin.com/fqk2yFEv). also 
wären alle adressen von den ports vorhanden, lediglich wie ich diese in 
c zuweisen muss usw. ist mir ein rätsel...

wäre sehr dankbar, wenn mir jemand bei diesem problem helfen könnte.

gruß irgendeiner
Persönliche Seite #2194022
Lesenswert?

Du brauchst eine zu Deinem Compiler passende Headerdatei. Die, die Du 
da als erstes angegeben hast, kommt von einem C-Compiler der Firma KEIL, 
den aber scheinst Du nicht zu verwenden.

Die Headerdatei, die Dein Compiler verwendet (die, die Du als zweiten 
Link angegeben hast), funktioniert nicht für sich alleine, sondern setzt 
korrespondierenen Code in einer zu Deinem Compiler gehörenden Library 
voraus.

Auch deswegen unterscheidet sich die Keil-Headerdatei syntaktisch ganz 
erheblich von der Deines Compilers, und ohne den Code in der Library 
nachzubilden, wird es nicht möglich sein, die Keil-Headerdatei in eine 
für Deinen Compiler "verdaubare" umzubauen.

Allerdings sehe ich auch gar keinen Grund dafür, derartiges zu tun - 
Deinem Compiler liegt eine zum von Dir verwandten Controller passende 
Headerdatei bei.

Warum nimmst Du nicht die?

Oder liegt Dein Problem darin, daß Du nicht verstehst, wie Du mit Deinem 
Compiler einen Wert an ein I/O-Register des µC übertragen kannst, nichts 
passendes in der Dokumentation oder den mitgelieferten Beispielen Deines 
Compilers gefunden hast und jetzt auf gut Glück versuchst, ein irgendwo 
in den Weiten des Internets gefundenes Beispiel für einen anderen 
Compiler zum Laufen zu bekommen?
OP #2194230
Lesenswert?

wens noch interessiert:

habe das problem gelöst.

habe eine weiter .DEF datei und neue reg51.h und reg535.h gefunden (in 
einer neueren version von uc51), dort wurden die ports adressiert, wens 
interessiert:

reg535.h: http://pastebin.com/4FKfW5s6
reg51.h: http://pastebin.com/yejaX0tF
reg535.def: http://pastebin.com/78W8m9hs
reg51.def: http://pastebin.com/mCJxzLf6

was mir hier aufgefallen ist, dass die .def dateien direkt eingebunden 
wurden, was bei der reg51.h vom ersten post iwie nicht der fall zu sein 
scheint.

hoffe ich kann anderen damit weiterhelfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren