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
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?
Gelöst! Ich habe nicht verstanden, wo er die Ports (etc.) genau adressiert. habe mir die neuen include-Dateien von UC51 angeschaut und da waren die Ports über eine .DEF-Datei adressiert. Diese musste ich jetzt nur durch weitere Ports erweitern.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.