mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler Schleife und Frage


Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Dir.
Kann das leider nicht ausprobieren. Mach gerade alte Prüfungen durch.
Hab keine Möglichkeiten das "Zeug" auszuprobieren.
Leider.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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" ?

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!!
Hat mir sehr geholfen!
Gruß Anja

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Thomas X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat mir sehr geholfen!

naja, ich denke was dir wirklich helfen würde, wäre den befehlssatz des
8051 zu studieren :D

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.