Unterschiede Z80, 8051 und 6502/6510

Hallo!

Im Rahmen meines Informatikstudiums werde ich demn=E4chst 8051- Controller zu programmieren lernen, zumindest ansatzweise. Fr=FCher habe ich mal auf einem 6510 (Commodore C64) Assembler programmiert und einen Z80 habe ich auch mal in Maschinensprache w=E4hrend meiner Schulzeit programmiert (man googlele mal nach "LC80").

Jetzt frage ich mich, welche Vor- oder Nachteile bzw. Unterschiede die einzelnen Prozessoren intern haben, welche werden wof=FCr eingsetzt? Mir geht es dabei um die Programmierung (Assembler, Maschinensprache), nicht um die externe Anbindung von Peripherie oder Hardware (IO, etc.). Kurzum: Gibt es irgendwo eine kompakte =DCbersicht mit den Unterschieden von Z80 und 8051 (und vielleicht auch noch 6502/6510)?

Hier in de.sci.electronics schrieb mal jemand, dass man f=FCr Lernzwecke besser einen 8051 nutzt, weil der im Vergleich zu einem Z80 nicht so viel externe Peripherie ben=F6tigt, aber wer einen angeblich einen vollst=E4ndigen Z80 (mit gesamter Peripherie) sein eigen nennt wird jeden 8051 wegschmei=DFen. Warum?

Was spricht eigentlich gegen Simulatoren f=FCr Z80 und 8051, um die Programmierung zu lernen?

Bei einigen Controllern mit 16-Bit-Adressbus wurde Bankswitching eingef=FChrt, um mehr als 64 kByte adressieren zu k=F6nnen. Mir ist sehr wohl klar was Bankswitching ist, nur verstehe ich nicht den Sinn weshalb ich einem Programm pl=F6tzlich den Programmspeicher (RAM) wegschalte um mehr Platz f=FCr was anderes zu haben. Wo ist mein Denkfehler? Oder wird einfach nur ein Teil des gesamten Speichers statt des ganzen Speichers umgeblendet?

Gibt es au=DFer dem Aufwand der externen Hardware-Anbindung (eine CPU kann ja allein gar nichts) noch andere relevante Unterschiede zwischen Microprozessoren und Microcontrollern?

Gru=DF Torsten

Reply to
Torsten Junker
Loading thread data ...

Torsten Junker schrieb:

Damals (TM) gabs immer wieder solche Schwanzvergleiche, du wirst wohl ins Archiv deiner Unibibo schauen müssen, die entsprechenden Zeitschriften sind locker 25 Jahre alt.

Von Neumann vs Harvard, und natürlich einen umfangreicheren Befehlssatz.

Du sollst den Lötkolben und das Zinn ehren! Ansonsten spricht nix dagegen.

Letzteres.

Nicht prinzipiell.

Gruß Dieter

Reply to
Dieter Wiedmann

Ich wundere mich, wieso man sich im Informatikstudium mit 30 Jahre alten Prozessoren beschäftigt? Wieso nix aktuelles? Wieso Homecomputerzeugs?

Das fragt man sich als Informatikstudemt im Jahre 2007?

Was ist denn das für eine seltsame Frage? Ich meine, wenn du Informatik betreibst, hast du doch ganz andere Fragestellungen als die Computerfreaks aus dem Jahre 1980?

Es gibt Simulatoren und Emulatoren ohne Ende. Hier ein Einstieg:

formatting link

Ja, man kann mit digitaler Logik den Adressbus eines Prozessors so decodieren, daß sich alle möglichen Ideen für ein Bankswitching ralisieren lasen.

Das fragst du einfach mal deinen Prof, würde ich sagen. Hmm, grübel...an der Uni Bremen wurden vor rund 17 Jahren oder so die NDR-Bastelcomputer mit dem 68000 aus den Abstellkammern entfernt und ins Recycling gegeben. Und ihr werdet sogar am 6502 ausgebildet? Damit kann man doch null machen, zumal das Ding auch noch schweinelangsam ist. Du kannst auf dem Ding ja noch nicht einmal Linux zum Laufen bringen? Wenn es auch nur um einen Roboter für "Jugend forscht" ginge, in der Liga für die Grundschule, da haben sie schon "Lego Mindstorm" am Ball. Und wenn die Älteren zu Werke schreiten, zum Beispiel für den Robocup, sieht das unter Umständen so aus:

formatting link

Ich sag das mal so: Nostalgie finde ich gut, den 6502 ebenso, auch den Z80, aber modern finde ich die Dinger nicht. Zumal du heute einen kompletten 6502-Rechner in ein FPGA schreiben kannst, und der rennt dann mit ein paar hundert Megahertz Taktrate. Aber für das, was der 6502 kann, ist ein Microcntroller von Atmel und Konsorten sicher die bessere Wahl, zumal es dafür auch Tools gibt, die du nicht in den Museen zusammensuchen mußt.

Viele Grüße, Holger

Reply to
Holger Bruns

Der Z80 ist ein uComputer und der 8051 ein uController. Der 8051 hat soviel im IC, dass er (die neueren jedenfalls) bzw. nur mit externen ROM schon Aufgaben erfüllen kann. Er hat ziemlich viel Periferi an Bord, die man bei einem Z80 extern dazustricken muss SIO, PIO, CTC...

Wenn du das aber alles hast, ist der Z80 besser zu programmieren. Der 8051 hat schon ein paar üble Besonderheiten.

Nicht, wenn Du gute findest, die mit den Hardware Besonderheiten zurecht kommen :-)

z.B. 4 Bänke a 16kB, für Z80, also nur Teile werden umgeschaltet: Bank 0 muss als (E)PROM immer drinbleiben, wegen der IR-Vectoren und Reset... Bank 1 wird wohl auch noch von den Standard routinen benutzt, auch die IRSR sind da gut aufgehoben, also auch PROM Bank 2 als RAM Bank 3 als 16k Fenster in das Riesen PROM/RAM oder was weiss ich.

Wenn man das sauber programmiert, geht es ganz gut. Die Betonung liegt auf SAUBER, damit schließe ich C aus :-) BTDT unter Forth.

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
Wolfgang Allinger   Paraguay             reply Adresse gesetzt !
VoIP  02173 / 99 39 209   ca. 15h00..21h00 MEZ  SKYPE:wolfgang.allinger
Reply to
Wolfgang Allinger

Aber die alten Dinger haben den Vorteil, dass sie relativ übersichtlich und leicht zu begreifen sind und man sie komplett verstehen kann. Von einem Renntwiedum ähem Pentium kann ich das (für mich) nicht mehr behaupten.

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
Wolfgang Allinger   Paraguay             reply Adresse gesetzt !
VoIP  02173 / 99 39 209   ca. 15h00..21h00 MEZ  SKYPE:wolfgang.allinger
Reply to
Wolfgang Allinger

ch =20

Wobei aktuelle Mikrocontroller ebenfalls relativ leicht begreifbar sein k=F6nnen (je nach Architektur und Dokumentation *g*) Vielleicht aber auch=

zu leicht f=FCr ein Informatikstudium ;) oder nicht allgemein genug...

MfG, Heiko

=2E..der mal kurz nacheinander begonnen hat, AVR und Z80 (Taschenrechner)=

in Assembler zu programmieren und mit dem AVR _wesentlich_ besser zurecht kam...

Reply to
Heiko Rossmann

Hallo Holger,

Wir hatten um 1980 an der Uni noch mit Roehren gelernt, ist eben alles ein bischen aelter.

Aber, und das sei besonders Torsten gesagt: Der 8051 wird hier in USA und auch Asien haufenweise in neue Designs gesetzt. Wie es in Europa steht, weiss ich nicht. Der Hauptgrund fuer diesen Dauerlauf a la VW-Kaefer ist die Tatsache, dass es ihn von mehreren Herstellern gibt. Das ist m.W. bei allen anderen uC nicht der Fall. Riesenvorteil, bei meinen Design haeufig sogar Bedingung. Ausserdem findet man erfahrene Programmierer dafuer beinahe in jeder Kleinstadt.

Wenn ich so hier im Haus rumsehe, wuesste ich bis auf den Wohnzimmerthermostaten kein installiertes Geraet, was nicht mit einer Art 8051 arbeitet.

Torsten macht das schon ganz richtig. Praktische Erfahrung unter Einsatz des Loetkolbens ist durch nichts zu ersetzen. Ausser durch noch mehr Loeten.

Lieber den Loetrich einschalten und loslegen. Bringt mehr Wissen.

Der gewiefte Programmierer kommt mit dem vorhandenen Speicherplatz (meist so gerade eben) aus :-)

[...]
--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

Torsten macht aber Informatik und keine Elektrotechnik. Die Anforderungen an den Informatiker sind andere als an den Ingenieur, der natürlich auch löten kann. Wäre der Löter heute noch die erste Geige, hätten wir immer noch keine grafischen Oberflächen wie KDE oder Windows, zum Beispiel, sondern Lochstreifen und Drucker. Informatiker bauen dir Algorithmen, Informatiker rechnen dir die Effizienz deiner Software nach, Informatiker entwickeln dir Systeme für die fehlerfreie Implementierung der Software und die Systemsintegration - automatisiert und zuverläasig vom UML zum Zielcode für dein System unter Einbeziehung harscher Sicherheitsauflagen, das macht dir nicht die Tante Ersa.

Wie gesagt, es kommt auf die Disziplin drauf an.

Mag sein. Aber Informatik ist eben nicht einfach Programmierung.

Grüße, Holger

Reply to
Holger Bruns

Es ist vollkommen belanglos womit du dich beschaeftigst. Man kann von einem Ing erwarten das er sich innerhalb kurzer Zeit in jedem Prozessor einarbeiten kann. Was du aber lernen musst das ist der grundsaetzliche Umgang. (Was sind Zeiger, Parameteruebergabe, Algorythmen, usw)

Waer ich Prof wuerde ich mit Absicht etwas sehr exotisches waehlen damit nicht die Leute die einen bestimmten Prozessor schon kennen einen Vorteil haben. Ausserdem braeuchte ich dann bei Google nur mal schnell nach TMS9900 zu suchen um die Pappenheimer rauszufinden die verzweifelt was zum abschreiben suchen. :-]

Olaf

Reply to
Olaf Kaluza

Es gibt in Heft 2 von

formatting link
eine historische Auflistung:
formatting link
Die ist aber fast 10 Jahre alt, einige Angaben was es noch gibt stimmen schon nichtmehr. a) Viele der Eigentümlichkeiten der Befehlssätze erklären sich daraus, daß die Architektur kompatibel auf Vorgänger aufsetzen muß wie in dem Artikel dargestellt. Am Schlimmsten wohl 68HC12: sourcekompatibel zum 68HC11 der binärkompatibel zum 6800 war. b) der Controller (8051 ) muß den Bus nicht herausgeführt haben kann also Harvard sein. Das bringt Geschwindigkeitsvorteile ( vgl AVR ). Die klassische 8 Bit CPU ( Z80 , 6502 ) ist von Neumann. Von Neumann auf Controller gibts immer noch ( 68HC08 ) hat kleine Kostenvorteile auf Chip, hat kleine Vorteile für Programmierer: man kann auch Code im RAM ausführen. Ist aber eher langsam. c) Klassische 8 Bit CPUs sind historisch, praktisch kein Produktions- volumen mehr. 8 Bit Controller haben weiterhin sehr breite Anwendung. Einige Versionen wie den 68HC12 gibts optional mit herausgeführtem Bus, aber das ist heute eher Ausnahmefall. 16/32 Controller wie M16 oder ARM7 gibts häufiger mit externem Bus.

Solange man keine Anbindung an die Hardware benötigt: kein Problem. Die meisten grafischen Entwicklungsumgebungen haben wohl einen integriert. Wenn man Anbindung an realen Chip will um echte externe Hardware zu testen: hat Motorola/Freescale recht hübsch über BDM gelöst. Gibts für 68HC12 und neuere 68HCS08.

MfG JRD

Reply to
Rafael Deliano

Algorithmen und Programmierung, 1. Semester:

- Ein Algorithmus ist eine terminierende Folge von Anweisungen.

- Zeiger sind Adressen von Speicherzellen.

- Parameter werden als Zeichenkette oder Pointer übergeben.

Wer pfiffig ist, kann sich sehr schnell in eine andere Programmiersprache als "Pascal für den Apple II" reindenken.

Nun ja, ich beschäftige mich rein hobbymäßig mit einem uralten Motorola-DSP, nämlich dem 96002 und dessen Bedehlasatz. Cooles Teil, aber natürlich nicht mehr modern. Und nur dann eine Architektur nach John von Neumann, wenn man Programmspeicher und Datenspeicher zusammenlegt. :-)

Grüße, Holger

Reply to
Holger Bruns

"Torsten Junker" schrieb...

Oh ja, auf dem guten alten LC80 habe ich auch in Maschienencode (in Hex, nichts in Assembler oder so) programmieren gelernt. Das gute stück liegt noch einsatzbereit hier und darf einmal pro Jahr sein Begrüßungslied "Popkorn" (von Hot Butter?) tüteln.

W.

Reply to
Wolfgang Puffe

[...]

Nur eine Frage am Rande, welche Uni ist das?

Gruß Henry

--

---------------------------------------------------------------------- snail mail : Henry Koplien \|/ From the Center of Nowhere o(O O)o

---- eMail : snipped-for-privacy@FamKoplien.de ---------------ooOo---(_)---oOoo-------

Reply to
Henry

Eine kleine Fachhochschule, die zwar einen guten Ruf im Bereich Wirtschaftswissenschaften hat, aber oft auch der NC-Prellbock ist. Zu deutsch: Wer wo anders wegen NC oder =DCberf=FCllung keinen Studienplatz findet kommt hier her (und verschwindet oft auch wieder recht schnell, etwa wenn Studienabbrecher an der "Heimat"hochschule Pl=E4tze frei machen). Wir sind in diesem Jahrgang keine 20 Studenten in Informatik, um die 30 in Wirtschaftsinformatik, Medieninformatik um die 70. Ob diese Zahlen f=FCr mich gut (individuelle Betreuung) oder schlecht (Spekulation: "Wahrscheinlich ist diese Hochschule nicht so gut wenn da niemand Informatik studieren will!") ist wei=DF ich noch nicht. Ich studiere hier weil ich f=FCr die Strecke Haust=FCr - H=F6rsaal nur wenige Minuten zu Fu=DF brauche, aonsonsten h=E4tte ich mir wahrscheinlich auch was anderes gesucht.

Gru=DF Torsten

Reply to
Torsten Junker

Torsten Junker schrieb:

Bei den Mikrokontrollern kommt fast alles auf das timing an im Bereich Milli-Sekunden und Mikro-Sekunden, nicht so sehr auf den Datenfluss pro Sekunde. Bei den Interrupts musst du also extra auf die Parameter-Uebergabe und die Sicherung von Registern achten. Dies erfordert schon eine eigene Konzentration. Du willst anscheinend in Assembler programmieren.

Die 8051-er haben eigene Bitregister im RAM, die man auch gut manipulieren kann. Im Assembler kann man damit uebersichtlich programmieren. Ueberhaupt ist der Befehlssatz bei den 8051-ern der uebersichtlichste, darauf kommt es bei dir wahrscheinlich an. Die Haushaltsdisziplin bei den Kontrollern (nur wenig RAM!) ist halt anders als bei den PC's.

Ansonsten darf man sehr wohl die Frage stellen, was das ausgedehnte Assembler-Programmieren an Effektivitaet bringt. Hardwarenah kann man auch in FORTH oder C programmieren, ich weiss, darueber gab es schon Glaubenskriege in dieser Newsgroup.

Viel Erfolg, Joachim Riehn

Reply to
Joachim Riehn

Wollen ist relativ. Im Rahmen der Vorlesung/ =DCbungen m=F6chte ich mich schon etwas tiefer damit besch=E4ftigen als es die Pr=FCfung vorsieht, aber langfristig glaube ich nicht dass ich mit Microcontrollern viel zu tun haben werde. Eigentlich will ich mal schauen inwieweit sich

6510-Assemblerprogrammierung und Z80-Maschinenspracheprogrammierung vom 8051 unterscheiden, mehr so aus Neugierde.

Man darf auch fragen ob der Himmel gr=FCn ist.

Ich w=FCrde es an der Portierbarkeit festmachen und mich dann auch f=FCr etwas entscheiden, was nicht Maschinensprache/ Assembler ist, aber andererseits sieht man ja wie gut sich 8051-Ausartungen in der industriellen Welt verankert haben und wie sie nachgefragt werden. Und ja, Assembler und Maschinensprache issn geiles Zeugs!

Nur dem Interesse halber: Wo bekommt man eigentlich 8051- Entwicklerboards f=FCr Lehrzwecke (also so was wie den LC80) und was kostet so was? Also so ein Ding mit Netzteilanschluss, LC-Display und Hex-Tastatur.

Torsten

Reply to
Torsten Junker

Wobei hier natürlich die Betonung auf "entwickeln" gelegt werden sollte.

Meines Wissens haben die Informatiker selbst bewiesen, daß es fehlerfreie Software nicht geben kann, sondern man sich diesem Idealzustand nur asymptotisch annähern kann.

Also wäre "fehlerarm" der korrekte Begriff gewesen.

Reply to
Heiko Nocon

Rein garnichts. Daran wird es wohl auch liegen, daß es für alle genannten Prozessorfamilien Simulatoren gibt...

Reply to
Heiko Nocon

Torsten Junker schrieb:

Ich habe nicht gegen dich polemisiert, eher gegen die Hochschuldidaktik, die dahinter steht.

Ich finde es schon lehrreich, zu verfolgen, was ein guter Compiler aus dem Code in der Maschinensprache macht.

Hier gibt es ein paar Hinweise:

formatting link
Gruss, Joachim Riehn

Reply to
Joachim Riehn

Naja, manchmal ist es sogar lehrreich, sich einen Compiler selbst zu schreiben. Hab ich mal gemacht.

Viele Grüße, Holger

Reply to
Holger Bruns

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.