Hallo Ich versuche mich bei Keil mit inline asm. Es klappt aber nicht. Es wird kein *.obj file erzeugt. Ich vermute daß das bei der freien Version mit 2K Quellcode nicht aktiv ist. Oder ich mache einen Fehler. Hat jemand eine Idee? #pragma src . . . main() { . . #pragma asm nop // egal, was ich hier einfüge #pragma endasm } Viele Grüße Peter
Peter W. schrieb: > #pragma src "The SRC directive creates an assembler source (.SRC) file instead of an object (.OBJ) file. The source file may be assembled with the assembler." Quelle: http://www.keil.com/support/man/docs/c51/c51_src.htm Falls Du auch uVision benutzt, klickst Du mit dem rechten Button auf die Datei in Deinem Projekt -> Options for File -> Assemble SRC File
Ja ich nutze uVision. Das src file wird erzeugt, aber wie geht es weiter? Fehlermeldung: BL51 BANKED LINKER/LOCATER V6.22 - SN: Eval Version COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009 ".\Objects\float.obj", ".\Objects\STARTUP.obj" TO ".\Objects\float" PRINT(".\Listings\float.m51") CODE( 0x4000 ) *** FATAL ERROR L210: I/O ERROR ON INPUT FILE: EXCEPTION 0021H: PATH OR FILE NOT FOUND FILE: .\Objects\float.obj Target not created. Build Time Elapsed: 00:00:00 Gibt es noch eine andere Möglichkeit asm Befehle im Programm einzufügen? Gruß Peter
Peter W. schrieb: > Das src file wird erzeugt, aber wie geht es weiter? Es geht genau so weiter, wie es im Manual steht. Ich zitiere erneut: "The source file may be assembled with the assembler." Du lässt also den Assembler über das generierte SRC file laufen, danach hast Du Dein OBJ. Und wie das aus der uVision heraus funktioniert, habe ich Dir auch bereits gesagt. Ich wiederhole das gerne nochmal für Dich: Du klickst mit dem rechten Button auf die Datei in Deinem Projekt -> Options for File -> Assemble SRC File
so einfach schrieb: > Peter W. schrieb: >> #pragma src > > Lösch die Zeile und gut isses. So einfach ist es eben nicht, da ASM eingebettet ist: "The source text can be thought of as in-line assembly. However, it is output to the source file generated only when using the SRC directive." http://www.keil.com/support/man/docs/c51/c51_asm.htm Man kann aber einen Rechtsklick auf das Source-File tätigen und die Einstellungen entsprechend anpassen. Schwierig ist das auch nicht...
Meinst Du die Einstellungen so wie auf dem Bild: Damit komm ich schon ein wenig weiter, aber folgende Meldung: Build target 'Target 1' compiling test .c... test .c(13): warning C245: #pragma respecifies primary control, ignored assembling .\Objects\test .src... linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: .\Objects\STARTUP.obj (?C_STARTUP) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ?C_START MODULE: .\Objects\STARTUP.obj (?C_STARTUP) ADDRESS: 8010H Program Size: data=9.0 xdata=0 code=24 creating hex file from ".\Objects\float"... ".\Objects\float" - 0 Error(s), 3 Warning(s). Build Time Elapsed: 00:00:00 Gruß Peter
Peter W. schrieb: > Meinst Du die Einstellungen so wie auf dem Bild: Jawohl, meine ich. Sieht gut aus. :-) Peter W. schrieb: > Damit komm ich schon ein wenig weiter, aber folgende Meldung: Ja, sorry, habe ich noch vergessen zu erwähnen: http://www.keil.com/support/docs/1980.htm Bevor Du fragst, die Library fügst Du so hinzu: http://www.keil.com/support/docs/3189.htm
Hallo René So es funktioniert schon mal, Danke! Was hat es mit der letzten Warnung auf sich? Build target 'Target 1' compiling test .c... test .c(13): warning C245: #pragma respecifies primary control, ignored assembling .\Objects\test .src... linking... Program Size: data=94.3 xdata=0 code=5615 creating hex file from ".\Objects\float"... ".\Objects\float" - 0 Error(s), 1 Warning(s). Build Time Elapsed: 00:00:00 Die Module in der Library - wann werden diese aktiviert? Kannst Du da ein Beispiel nennen? Wo kann ich mich da informieren. Vielen Danke für Deine Unterstüzung! Viele Grüße Peter
Peter W. schrieb: > BL51 BANKED LINKER/LOCATER V6.22 - SN: Eval Version IMHO geht inline Assembler in der Eval nicht.
Peter W. schrieb: > Was hat es mit der letzten Warnung auf sich? Wie ich sehe in Deinen Screenshots sehe, hast Du die SRC Direktive bereits in den Datei-Einstellungen gesetzt (Checkbox "Generate Assembler SRC File"). Nun setzt Du die Direktive per "#pragma src" ein zweites Mal. Das zweite Setzen wird ignoriert, und das sagt Dir die Warnung. Wenn Du entweder die Checkbox auf das Default zurücksetzt oder das "#pragma src" entfernst, verschwindet die Warnung.
Peter W. schrieb: > Die Module in der Library - wann werden diese aktiviert? Entweder rufst Du eine der dort implementierten Funktionen direkt auf, oder aber der Compiler macht das für Dich, wenn er dort implementierte Hilfs-Funktionen benötigt (z.B. wenn Du 16-Bit Werte dividierst). Peter W. schrieb: > Kannst Du da > ein Beispiel nennen? strlen ist zum Beispiel eine Funktion, deren Implementierung in der Library zu finden ist. Peter W. schrieb: > Wo kann ich mich da informieren. Ein guter Anlaufpunkt findest sich hier: http://www.keil.com/support/man/docs/c51/c51_library.htm
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.