Hallo! Kann mir bitte nochmal jemand helfen? Hab immer noch so meine Probleme in Assembler und C(für den 8051) 1.Programmschleife, die nach 100 Durchläufen zum Label weiter springt: mov R1,#01H mov R0,#65H schleife: djnz R0,schleife ljmp weiter funktioniert das so? 2.Frage: Warum wird für den µC kein gewöhnliches C Entwicklungssystem verwendet(Visual C++,...)? Ist die Verwendung eines dieser Standardentwicklungssysteme prinzipiell überhaupt möglich? 3. Hab dann noch 3 kurze Programme in C, ich häng sie im nächsten Thread mal dran,vielleicht kann sie kurz jemand durchsehen und verbessern. Schon jetzt vielen Dank für Eure Hilfe!! Gruß Anja
Deine Schleife wird zu oft durchlaufen. Es gibt fuer die MCS51 Softwaresimulatoren mit denen du das selber haettest testen koennen. C++ wird nicht verwendet weil echte Maenner (TM) das nicht gut finden. :-) Im ernst, je abgehobener und abstrakter die Programmiersprache ist um so mehr Leistung/Resourcen gehen im Controller floeten. Auch jetzt gibt es schon Microcontroller die so klein sind das man da kaum C verwenden kann. Wenn man privat in seinem Kaemmerchen programmiert dann ist das egal, nimmt man einfach einen dickeren Controller. Will man aber 1Million videorecorder oder Toaster bauen um man kann einen Controller verwenden der 1Euro billiger ist dann ist der Chef gluecklich. Und der Vorteil von C Programmen ist das du die auch ganz gut auf einem PC testen koenntest wenn du den wolltest. Olaf
Danke Dir. Kann das leider nicht ausprobieren. Mach gerade alte Prüfungen durch. Hab keine Möglichkeiten das "Zeug" auszuprobieren. Leider.
1.) Probies aus. Ich bin jetzt nicht der Assembler kink, aber mines erachtens musst du "djnz R1, schleife" schreiben. Weil der 8051 auf low endian basis arbeitet !? 2.) VC++ ist ein 32 bit Compiler. Der Compiler muss aus deinem code maschienencode erstellen, welchen dein 8051 versteht und auch ausführen kann. Nur ist das hex format schonmal was anderes wie das PS (win32) format. Auch die Mnemonics sind von Prozessor zu prozessor anders. 3.) Ehm....welches Programm ? MfG
Visual C++ ist kein Crosscompiler, d.h. er kann nicht verschiedene Targets compilieren sondern ausschließlich nur 8086 Code erzeugen. Ein Crosscompiler ist z.B. der GCC, das ist quasi der Standard-Compiler für alle möglichen Targets. Peter
Der MCS51 arbeitet nur mit einem Register. Die Zeile mit R1 ist komplett ueberfluessig und vermutlich nur deshalb dort weil Anja etwas abgeschrieben hat was sie nicht versteht. Aber 65h sind 101 und der Befehl heisst decrement and jump if not Zero. Ups, dann wird sie ja doch hundert mal durchlaufen, ich werd wohl alt. :-) Olaf
mov R1,#01H mov R0,#64H ; <--- 64h, nicht 65h schleife: djnz R0,schleife ljmp weiter was verstehst du unter einem "(un)gewöhnlichen c entwickungssystem" ?
peter dannegger: Komt ganz darauf an , ob man com Compiler oder von der IDE redet (Anja meinte ja "Entwicklungssystem"). man kann nämlich in die VC IDE sogar Java Compiler einbinden (z.B. Symbian SDK).
> Hat mir sehr geholfen! naja, ich denke was dir wirklich helfen würde, wäre den befehlssatz des 8051 zu studieren :D
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.