Hi, ich muss jemanden etwas Nachhilfe für die Prüfungsvorbereitung (Studiengang Maschinenbau) geben. Konkret geht es um µC-Technik mit Assemblerprogrammierung. Nun suche ich ein Leitfaden bzw. einen Crashkurs für die 8051-Familie, ich selbst habe leider nicht mehr sehr viel Unterlagen was Assembler betrifft. ein schriftliches Dokument würde mir hier etwas helfen. Im web findet man zwar sehr viel Informationen, jedoch fast nur für 80x86, hier sind die Befehlssätze doch etwas anders. Kennt jemand ein gutes Tutorial oder könnte vlt. mit einem PDF aushelfen!? Ich muss (aufgrund des zeitlichen Rahmens) mehr oder weniger nur einen Crashkurs geben und habe selbst leider keine Unterlagen, das Skript des Schülers gibt diesbzgl. leider auch nicht sehr viel her... Mein Schüler kann etwas Java-Programmieren, als Grundlage finde ich das jetzt erstmal nicht schlecht. Hat zwar jetzt erstmal wenig mit Assembler zu tun, aber immerhin kann man so schonmal einen Bezug zum "echten" Programmieren, wie man es dann im späteren Beruf benötigt, herstellen.
Am hilfreichsten fand ich immer das Handbuch zum Siemens SAB80515. Das war meine Referenz, auch wenn ich meistens kleinere Chips aus der MCS51 Serie verwendet hatte (z.B. AT89C1051). http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/infineon/m80515.pdf
Feger und Reith haben auch einiges für Anfänger geschrieben. Es geht da zwar oft um 80515/80535, aber die Grundlagen sind die gleichen.
Schaue mal nach Mikrocontroller Kochbuch. Da ist sowohl die Hardware, als auch die Befehle des 8051 sehr gut beschrieben. Ralph Berres
vielen Dank für die links, da ist glaub einiges an verwertbarem Material dabei! Danke!
@Christoph: > Mein Schüler kann etwas Java-Programmieren, als Grundlage finde ich das > jetzt erstmal nicht schlecht. Das sehe ich anders. In Java und anderen Hochsprachen legt man beim Erstellen einer Variablen den Typ und ggf. gleich noch einen Initialwert fest. Der Programmierer braucht sich nicht um's Speichermanagement etc. kümmern, das macht alles der Compiler/Linker/etc. In Assembler (oder genauer: zumindest in den meisten 8051-Assemblern) ist der Programmierer a) für's Management, b) den Typ und c) das (korrekte) Initialisieren zuständig. Punkt a) bedeutet, dass ggf. manuell die Speicheradressen für temporäre Variablen überlagert werden müssen, wenn's der Assembler nicht automatisch unterstützt (da fällt mir ein, weiss jemand wie das beim originalen Intel-MCS51-Assembler geht?). Hinzu kommt, dass man beispielsweise Bits auf einem 8051 wirklich in einem RAM-Bereich, der extra für einzelne Bits vorgesehen ist, ablegt (sofern man das Teil optimal nutzen will). In Hochsprachen sind binäre Variablen i.d.R. genauso groß wie die Wortbreite der Plattform, also beispielsweise 32-Bit -> 31 Bit "verschenkt". Auf nem PC spielt das kaum ne Geige, weil da genug RAM da ist und eine Plattform, die Bits nicht per se unterstützt mit dem Ansatz besser zurecht kommt. ABER: Auf einem Standard 8051 Controller wird man Bit-Knautschen ab einer gewissen Programmkomplexität lernen und zu schätzen wissen. Für b) wird's schon lauschig, erstens ist der 8051 eine 8-Bit-MCU, d.h. jede Berechnung mit Variablen mit mehr als 8-Bit setzt sich aus 8-Bit-Berechnungen zusammen (viel Spaß bei Divisionen, etc.), und wenn's dann keine Ganzzahlberechnungen, sondern floats etc. sein müssen, dann wird's lauschig². Punkt c) ist je nachdem trivial, aber es muss zu Fuß gemacht werden, über die entsprechenden MCU-Instruktionen. Dein "Lehrling" muss sich also zusätzlich zum anderen Befehlssatz von solchen Sachen verabschieden - oder sich die entsprechenden Grundlagen wirklich in high-speed erarbeiten müssen. Ralf
Wer eine Programmiersprache gelernt hat, aknn sicher auch eine zweite lernen. Damit wird er sicherkein Problem haben.
> Wer eine Programmiersprache gelernt hat, aknn sicher auch eine zweite > lernen. Kein Zweifel. > Damit wird er sicherkein Problem haben. Zwischen den Hochsprachen ist es aber denke ich einfacher als zwischen Hochsprache und Assembler. Ralf
Georg G. schrieb: > Feger und Reith haben auch einiges für Anfänger geschrieben. Es geht da > zwar oft um 80515/80535, aber die Grundlagen sind die gleichen. Die waren sehr gut. Es gab auch einen Teil 1, Einführung in die Software, mit Software-Strategien und einer Menge Beispielsoftware z.B. Mehrbyte-Wandlungen zwischen BCD und BIN, Tastaturen aller Art, Arithmetik in 32 bit, und den Assembler auf Buchdiskette, mit vollständiger Beschreibung im Buch. Das von Ralph Berres genannte Mikrocontroller-Kochbuch ist auch ausgezeichnet, damit begann ich vor 20 Jahren mit dem 8051. Ob in PDF erhältlich, wage ich zu bezweifeln. Ich würde da als erstes meine Hochschulbibliothek ansteuern, da steht bestimmt einiges zum 8051 herum.
Wo kann man eigentlich noch einen 8051 in Deutschland kaufen? Ich habe auf einigen Internetseiten gesucht aber nichts gefunden. 0x01
> Ich habe auf einigen Internetseiten gesucht aber nichts gefunden. oO Dann haste falsch gesucht. > Wo kann man eigentlich noch einen 8051 in Deutschland kaufen? Überall, Reichelt, Conrad, Digikey, Mouser, Avnet, etc. Alle hamse 8051er im Angebot, die originalen mit der 12er-Taktteilung, SiLabs mit 25/50/100MHz single-cycle-core, etc. Auch die Cypress PSoC mit 8051-Core, alles da!!! Ralf
... ... schrieb: > Wo kann man eigentlich noch einen 8051 in Deutschland kaufen? > Ich habe auf einigen Internetseiten gesucht aber nichts gefunden. > > 0x01 Haben Segor und Reichelt nichts? Denn sie haben schon mal noch 8085.
Z.B. CSD: AT89C51RB2-3CSUM 3,8675 EUR Hat Bootloader, man braucht also kein Programmiergerät. http://www.csd-electronics.de/200/cgi-bin/shop.dll?SESSIONID=0240229260642082&AnbieterID=2
Der 8051 war die Version, wo das Programm herstellerseitig in Stein ähm Silizium gemeiselt wurde. Istt also eine Geräteherstellerspezifische Version. Man kann den internen Rom zwar abschalten und ein externes Rom anschließen, um ihn verwenden zu können. Die Allgemein erhältliche Version heist 8031 mit 256MB Ram und 8032 mit 512MB Ram. Dann gab es noch den 8057 das war eine Version mit Eprom , war aber selten und teuer. Später kam dann der 80525 und 80527 raus. Ralph Berres
Ralph Berres schrieb: > Die Allgemein erhältliche > Version heist 8031 mit 256MB Ram und 8032 mit 512MB Ram. Bist du dir bei den Größen des Speichers sicher? Ein 8031 mit 256 MegaByte RAM, wie machst du das???
OH Pardon Ich meinte Byte. Das Interne Ram ist wirklich nicht groß. 256Byte beim 8031 und 512Byte beim 8032 ( oder waren es sogar nur die Hälfte? ). Ralph Berres
Ralph Berres schrieb: > Dann gab es > noch den 8057 das war eine Version mit Eprom , war aber selten und > teuer. Der nennt sich 8751 und wird in Gold aufgewogen. Das dazugehörige Programmiergerät steht im Deutschen Museum in München.
Georg G. schrieb: > Der nennt sich 8751 und wird in Gold aufgewogen. Das dazugehörige > > Programmiergerät steht im Deutschen Museum in München. stimmt! Jetzt wo du es sagst erinnere ich mich auch wieder. Ralph Berres
Gerade im Netz gefunden, vielleicht hilfts, dann wird der Kurs vielleicht etwas praktischer: http://www.edsim51.com/ (Selber nie eingesetzt, noch Ahnung ob es was kostet und was man alles dazu braucht usw.)
Hm. Ich finde ja das es nicht wirklich ausreicht sich den Assembler Befehlssatz ins Hirn zu hämmern. Grundlagen über CPU, Bus, Speicher, etc. sind da viel wichtiger. Und in kürze ist da nicht viel zu machen. Unser Assembler Script (80c535) hatte dezente 600 Seiten (Technikerschule). Ansonsten ist dieses hier nicht schlecht : http://www.vogel-buchverlag.de/product_info.php/info/p57_Elektronik-5--Mikroprozessortechnik.html/XTCsid/1d3e87e32dc75d45305f6ec5589be060
Hi, nochmal danke für Eure Beiträge. Mir ist durchaus bewußt dass auch Grundlagen über CPU, Bus, Speicher, etc. für eine erfolgreiche Klausur notwendig sind. Doch diese Zeit haben wir nicht. der Student dem ich Nachhilfe geben benötigt nur ein "BE" = Bestanden. Er hat schon etwas Grundkentnisse und auch Begriffe wie RAM, Adress-Datenbus und sonstige sind ihm bekannt. Die Klausur ist nur ein Schein und es gibt keine Note, daher zielen wir jetzt auf 60 von 100 möglichen Punkten! Zur allgm. Disskusion (oder dass, was aus meinem Thread wurde): a.) Ich finde es durchaus gut, wenn man schon Java-Kentnisse hat. Das Hex- und Bin-System ist einem geläufig, man kennt schon ein wenig die Art und Weise wie man programmiertechnisch Probleme löst und es ist auch gut wenn man erklären kann dass ein [JNB] sowas ähnliches wie ein if ist und ein [DJNZ] sich hervorragend für Schleifen eignet. b.) Den "Ur-8051" (12er-Taktteilung) gibt es nicht mehr sehr oft. Conrad, Reichelt und Co bieten meist die 50- oder 100MHz-Variante an. c.) ABER: und das muss ich hier jetzt sagen, ich finde es traurig dass Maschinenbaustudenten noch assembler lernen müssen! - Zumal auf einem System das über 30 Jahre alt ist. Ein halbwegs moderner µC (z.B. ein AVR, ein MSP oder ein ARM bzw. Cortex M3-Derivat) zusammen mit einer aktuellen IDE und eine venüftigen Hochsprache (C), würde den Berufsstartern deutlich besser helfen. Bei Informatikern, welche die Materie bis ins kleinste Detail kennen sollten, ist das OK. Aber ein MB sollte doch eher Kentnisse ins SPS, oder C haben. Ich bin der Meinung hier stimmt das Gleichgewicht nicht mehr. Ein Maschinenbauer wird m.E. nie wieder etwas mit Assembler zu tun haben. Viel besser wäre es, sie würden lernen wie man eine SPS programmiert, dass sie den Unterschied zwischen AWL und FUP kennen, dass sie sich im CoDeSys, TwinCat oder im Step7 zurecht finden, und weil es eben doch um µC-Technik geht: dass sie C-Kentnisse oder meinetwegen auch Java können! Auch ein Beispiel: der letzte Student den ich in meiner Firma betreuen musste (1. Praxissemester Maschinenbau) fragt mich wo der Unterschied zwischen "if-" und "for-" liegt!? Eine brauchbare Hochsprache, welche die Studenten dann für ihr späteres Arbeitsleben auch benötigen können, lernen die dort anscheinend nicht!?
Beitrag #4985569 wurde von einem Moderator gelöscht.
Beitrag #4985944 wurde von einem Moderator gelöscht.
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.