mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8051 Code mit AVR ausführen


Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe so überlegt und sehe da grundsätzlich zwei Möglichkeiten:

1. Einen 8051-Emulator zu schreiben der zur Laufzeit den 8051-Hex-Code 
interpretiert.(oder aus dem www runterladen, bestimmt hat das schon mal 
jemand gemacht?)

2. Eine Macrobibliothek zu schreiben, die die einzelnen 
8051-Assembler-Befehle in AVR-Assembler nachbildet.

Was haltet ihr davon? Ist das dämlich?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es dürfte teilweise schwer werden, vor allem vom Timing her. Bei den 
meisten Befehlen ist der AVR schneller, aber spätestens beim div a,b, 
ist der AVR eine Weile beschäftigt.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor allem ist die Hardware auch anders. Oder hast du ein Programm für 
einen µC, das keinerlei Hardware-Zugriffe hat? schwer zu glauben.

Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich bin ich mir bewusst, das sich das Timing und die Hardware von 
8051 und AVR wesentlich unterscheiden. Es währe nur eine hübsche Sache, 
einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu 
können.
Vieleicht gibt's da eine fertige Lösung, man muss das Rad nicht immer 
neu erfinden wollen...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter X. wrote:
> Es währe nur eine hübsche Sache,
> einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu
> können.

Wenn Du das mit einem Programm automatisch machen lassen willst, 
explodiert die Codegröße und es wird schnarchlahm.

Besser Du machst das händisch, nur so erreichst Du eine ähnliche 
Performance.

Am besten aber, Du schreibst Deine 8051-Programme gleich in C, dann muß 
man nur die Hardwarezugriffe anpassen.
Genau darum ist ja C in der MC-Programmierung so weit verbreitet.


Peter

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es währe nur eine hübsche Sache,
>einige Teile vom 8051-Assembler-Code für den AVR weiterverwenden zu
>können.

Dann nimm doch direkt nen 8051er. Die gibts auch schon sehr günstig mit 
single-cycle core. Rein rechnerisch sind sie somit gleichschnell wie die 
AVRs.

Autor: Patrick Weinberger (seennoob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
besitzen eigentlich AVR's schon pipelinning ? Meines wissens hat das der 
8051er noch nicht. Außerdem du musst es schaffen einen Hardware acces 
Software Interpreter programmieren usw.
Also ich würd einfach einen modernen 8051er nehmen.

MFG Patrick

Autor: Michael Neumayer (neumi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> besitzen eigentlich AVR's schon pipelinning ?
AVRs haben schon eine Phasenpipeline wenn man so will, allerdings ist 
die "nur" 2-stufig. Ich glaub die erste Stufe ist so eine Art "fetch & 
decode" und die zweite dann das eigentliche "execute". Irgendwo hab ich 
sogar mal gelesen, dass die AVRs dafür beide Taktflanken ausnützen, ich 
weiß allerdings nicht ob das stimmt.

>Meines wissens hat das der 8051er noch nicht.
Der "8051er" ist immer ein wenig relativ zu sehen, da es diese 
Architektur schon eine kleine Ewigkeit gibt. Der originale 8051er-Kern 
benötigt 12 Takte für einen Befehl. Es gibt mittlerweile allerdings eine 
Vielzahl von Derivaten von allen möglichen Herstellern, die wesentlich 
schneller sind (1-4 Takte pro Befehl). Ob es auch schon 8051er mit 
pipelining gibt weiß ich persönlich nicht, denkbar wäre es schon.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der C8051F120 von Silicon Labs (www.silabs.com) kann das glaub ich. Es 
gibt noch weitere C8051F-Typen, die es auch können, der F120 ist mir 
halt grad eingefallen.
Kann aber auch sein, dass ich unter Pipelining was anderes verstehe als 
ihr, deswegen einfach Datenblatt lesen :)

Ralf

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und das ist der Grund warum man C nutzen sollte wenn Assembler nciht 
absolut notwendig ist.
In C reichen dann ein paar Anpassungen(zb Portdefines, Interupthandler) 
und ein neuer Compilerlauf.
Die Logic kann dann wiederverwendet werden.
In Asembler, viel spass beim neu Programmieren.

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten ist es immer, wenn man sich auf eine µC-Familie einspielt. 
Dann gibt es auch in Assembler keine Probleme. Denn ein µC Wechsel macht 
auch in C schwieriegkeiten, da man sich in eine komplett neue Hardware 
mit neuer Peripherie einarbeiten muss

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.