Assembler Schleife und Frage

Gast #143366
Lesenswert?

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
Gast #143367
Lesenswert?

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
Gast #143369
Lesenswert?

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
Gast #143370
Lesenswert?

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
Gast #143371
Lesenswert?

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
Gast #143374
Lesenswert?

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).

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