mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler vs. C


Autor: Christian Janke (christian_janke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute.

Ich möchte nun bald mit der AVR Programmierung beginnen. Zur verfügung 
habe ich schon ein STK 500 und habe einen Crashkurs in Sachen C hinter 
mir (aus der Uni).

Nun wollte ich gerne wissen, was die Vorteile und Nachteile der beiden 
Sprachen ist und welche davon leichter zu erlernen ist.

Ausserdem habe ich ein Buch "mikrocontroller der AVR-Reihe" oder so ... 
in dem werden beide Sprachen beschrieben.

Was würdet ihr mir empfehlen ??

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was würdet ihr mir empfehlen ??

Die Suchfunktion.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal sehen, wer diesmal gewinnt ;-)

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beides, ist nur von Vorteil wenn man beides kann

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembler am anfang und für "kleine" sachen, für komplexe sachen, die 
nicht zwingend 100% genaues timing erfordern C (kann man ja auch 
assembler einbinden)

Autor: zotti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ASM ist unumgaenglich. Wenn man das kann, hat man den Controller 
begriffen. Irgendwann mag man nicht mehr einfache und weniger einfache 
Math mit 16,24, oder 32 bit in ASM machen. Das wird oede. Auch mit ASM 
Makros. Dann ist man reif fuer C, oder was Praktischeres. Die viel 
gelobte, sogenannte Portierbarkeit auf eine ander Controllerfamilie 
macht man eh nie. Wenn man portiert schreibt man am Besten neu.

Z.

Autor: Christian Janke (christian_janke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann werd ich mal das Buch "Mikrocomputertechnik mit Controllern der 
Atmel AVR-RISC-Familie" bemühen ... dann werd ich hoffentlich bald etwas 
ASM können ...

Das tut werd ich auch mal lesen.

Gruss Christian.

Achso ich will darauf hinaus, dass ich irgendwann (bald) eine Steuerung 
von Temp, Luftfeuchte, Zeit usw programmieren kann.

Autor: Pit Herrmann (pit9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembler - von Anfang bis zum Ende!
Man erreicht das Maximum an Geschwindigkeit bei einem Minimum an 
Platzbedarf; die Assemblerinstruktionen sind einfach erlernbar und man 
behält die totale Kontrolle über Programm & Prozessor. Mir ist das 
wichtiger als weniger Sourcecode in C, der jedoch in in seiner 
Komplexität bei der Vielfalt der C-Syntax und insbesondere bei der 
nötigen Kenntnis benutzter Objekte & Klassenbibliotheken Assemblercode 
bei weitem übertreffen kann!

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> der jedoch in in seiner Komplexität bei der Vielfalt der C-Syntax und
> insbesondere bei der nötigen Kenntnis benutzter Objekte &
> Klassenbibliotheken Assemblercode bei weitem übertrifft.

Soso, und du verwechselst da bestimmt nicht µC mit PC (MFC, ATL, ...) ?
Zumindest ging es in der Frage nicht um C++, sonder C.

Ich programmiere nun seit vielen Jahren beruflich Mikrocontroller
jeglicher Couleur und habe bisher in KEINEM Projekt Assemblercode 
einsetzen
MÜSSEN. Und dabei handelt es sich bestimmt nicht um Pillepalle-Projekte
oder welche wo es "aufs Timing nicht so ankommt".

Es mag Ausnahmen geben, wo es hilfreich sein kann, Assemblercode LESEN
zu können (wenn man dem Compiler mal über die Schulter schauen möchte)
oder mal ein Startup-File eines ARMs z.B. zu erstellen / verändern.

Aber generell in Assembler zu CODEN halte ich bis auf wenige Ausnahmen 
für
überflüssig. Wers kann und versteht, der kann sicher besser mit seinem
Arbeitsmittel umgehen. Aber Voraussetzung ist es sicher nicht.

Es gibt einen schönen Spruch:

"Das Leben ist zu kurz, um in Assembler zu programmieren!"

in diesem Sinne...

Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Pit Herrmann
> ...Mir ist das wichtiger als weniger Sourcecode in C, der jedoch
> in in seiner Komplexität bei der Vielfalt der C-Syntax und
> insbesondere bei der nötigen Kenntnis benutzter Objekte &
> Klassenbibliotheken Assemblercode bei weitem übertreffen kann!

Objekte & Klassen in C? ...da habe ich bisher wohl was übersehen :)

Wie auch immer, C oder Assembler ist z. T. auch eine Geschmackssache. 
Ich persönlich habe vor ca. 2 Monaten mit der Programmierung von 
Mikrocontroller (ATmega8) angefangen. Da ich beruflich viel mit Java zu 
tun habe und nicht runter auf die Assembler-Ebene wollte, war/ist C 
meine Wahl.
Für einen Anfänger ist der Einarbeitungsaufwand, egal ob Assembler oder 
C, wahrscheinlich vergleichbar hoch. Auf jeden Fall muss man eine Menge 
lesen (dieses Forum und das Internet sind hierfür eine wahre Fundgrube) 
und ausprobieren. Beispielcode gibt es jedenfalls für die AVRs zu 
genüge. Jedoch sollte man sich auch die Mühe machen diesen 
nachzuvollziehen und zu verstehen als 'nur' Copy&Paste zu machen und 
sich zu wundern, dass es nicht so funktioniert, wie man sich das 
vorstellt.

Also, viel Spass & gutes Gelingen...
Christoph

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Pit:
Ich glaub Du verwechselst da was. C != C++ (Objekte und Klassen gibts 
nur in C++, es sei denn, Du meinst damit was anderes).

C ist eine noch sehr hardwarenahe (und daher für die µC-Programmierung 
sinnvoll einsetzbare) Hochsprache. Und da C strukturierte Programmierung 
ermöglicht, sind C-Programme (v.a. bei komplexeren Zusammenhängen) 
wesentlich übersichtlicher als Assembler-Listings. Denjenigen, die 
empfehlen, beide Sprachen zu lernen (und zwar in alphabetischer 
Reihenfolge) kann ich nur zustimmen. Habe selbst in Assembler angefangen 
und die Hardware richtig kennengelernt und bin dann auf C umgestiegen. 
Mittlerweile schreibe ich alles was nicht furchtbar zeit- oder 
Ressourcen-kritisch ist in C und habe eigentlich nie Probleme gehabt. 
V.a. können andere meine Programme auch lesen und es ist sehr leicht, 
Änderungen oder Erweiterungen vorzunehmen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> "Das Leben ist zu kurz, um in Assembler zu programmieren!"
Der ist echt schön. Zum Einrahmen...

Autor: Pit Herrmann (pit9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C hin, C++ her, an den Vorteilen von Assembler ändert das freilich 
nichts. Wer beruflich ohne höhere Programmiersprachen nicht auskommt- 
OK, privat lasse ich mir aber Assembler pur nicht nehmen! Damit ist es 
wie mit jedem anspruchsvollen Lernstoff: Je besser man es versteht, 
desto leichter kann es angewendet werden- auch in nur einem Leben :)))

Autor: Benedikt W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn du schon ein stk500 hast bietet sich das avr studio von atmel 
mit assembler ja richtig an. so hat man eine menge 
einstellungsmöglichkeiten und alles in einem programm. erst 
programmierung mit fuses und lock bits und noch einiges mehr.
ansonsten müsstest du mich irgendwelches schnittstellen programmen 
arbeiten wie ponyprog wobei ich nicht weiß welches von den ganzen 
programmen das stk 500 unterstützt.

außerdem ist assembler sehr hardware nahe und man versteht "wie ein avr 
denk". c hingegen ist zwar leichter, z.b. was schleifen und so betrifft 
und auch verständlicher, aber für den einstieg sollte man sich mal mit 
assembler auseinandergesetzt haben.

das tutorial auf dieser seite ist wirklich zu emfehlen !

Autor: Bartholomäus Steinmayr (sam_vdp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss hier mal wieder das Fähnchen für C hochhalten. Wer ein bisschen 
mit Ports wackeln will, Displays ansteuern, was man halt als Hobbyist 
alles so  macht, kommt mit C meiner Meinung nach viel schneller ans Ziel 
und kann sich -zumindest beim gcc- den entstehenden Assemblercode mit 
C-Code als Kommentaren anschauen und so Assembler verstehen lernen und 
gegebenfalls sogar kritische Funktionen auf die richtige Taktzahl 
biegen.

Nur meine 2E-1€.

Beste Grüße,
Bartl

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
imho C, keine frage. ich persönlich mag ASM nicht obwohl ich damit 
durchaus arbeiten kann. argumente wie "hardwarenahe" & "ich weiss was 
der µC macht" ziehen imho nicht, da man bei bedarf den ASM beäugen kann 
(zugegeben dass man dazu ASM lesen können muss). ASM ist einfach nicht 
mehr zeitgemäß - da können die fans gerne hoch und niedrig springen.

pumpkin

Autor: Karl-j. B. (matrixman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich hab auch wie einige zuerst mit Assembler angefangen damit ich besser 
verstehen kann wie so ein AVR arbeitet und aufgebaut ist. Da mich aber 
die ganze umständliche und viele schreiberei nach einiger Zeit ein 
bisschen gestört hat hab bin ich auf C umgestiegen und war begeistert 
wie schnell und einfach man dort Programme schreiben kann!

Ich besitze auch ein STK500. Assembler hab ich mit dem Avr Studio 
gemacht und dann hab ich mir AVR Workpad zugelegt (für 20€) um anfangs 
mit Assembler zu programmieren. Da dieses Programm aber auch C 
unterstützt hab ich mich da mal umgekuckt und festgestellt das C 
garnicht so schlecht ist! Das macht sogar richtig arg Spass zu 
programmieren =) ...

mfg Karl

Ps.: Will jetzt keine Werbung machen aber für Einsteiger empfehl ich mal 
die Demo von AVR Workpad anzuschauen. Da hats ne sehr gute Hilfe wo 
alles erklärt ist (einfach Strg drücken und af einen Befehl klicken 
schon wird der Befehl mit Beispielen auf Deutsch erklärt auch bei 
Registern geht

Wer interresse hat: das)http://www.myavr.de/download.php (myAVR Workpad 
PLUS, Demo)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zotti wrote:

> Die viel
> gelobte, sogenannte Portierbarkeit auf eine ander Controllerfamilie
> macht man eh nie. Wenn man portiert schreibt man am Besten neu.

Da muß ich aber vehement widersprechen.

Ich setze 8051 und AVR ein und ne Menge Code läuft auf beiden.

Und das Portieren klappt wirklich sehr gut.
Man muß nur die direkten Hardwarezugriffe separieren, z.B. über Defines 
(andere Portnamen, andere Timerreloads, andere Initialisationen).

Ich teste sogar Programmabläufe direkt aufm PC und simuliere dann eben 
Porteingaben über die Tastatur usw.


Peter

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Hobbiist C. Assemblerkenntnisse schaden nicht, aber größere 
Anwendungen, mit LCD, Menusteuerung, etc. machen darin einfach keinen 
Spaß.

Die Zeiten, in denen bezahlbare Micros 1 kB oder noch weniger Flash 
hatten, und man um jedes Byte Speicherplatz kämpfen musste, sind zum 
Glück vorbei. Und einen Mega32 oder gar 128 mit C-Code zu füllen, dazu 
braucht es schon eine Weile. Bei kommerziellen Projekten, die auf den 
1/10-Cent in der Hardware schauen müssen, mag das anders sein.

Ist aber nur meine persönliche Meinung. Ach ja, unleserliche und 
unstrukturierte Programme lassen sich übrigends in jeder 
Programmiersprache schreiben. Auch dafür muß man nicht unbedingt 
Assembler verwenden :-)

Oliver

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also an einem Mikrocontroller sollte man mal Assembler programmiert 
haben,wenn man vorhat wirklich richtig in die Thematik einzusteigen.Und 
da bietet sich eine 'einfache' Architektur wie der AVR sehr gut an.Bei 
komplexeren Sachen wie ARM&Co wird statt des Lerneffekts eher ein 
Frusteffekt eintreten.

Wenn es dann an konkrete Entwicklungsaufgaben geht,fällt die Wahl ganz 
klar auf C,da hier kompliziertere Sache wie lange switch/case-Konstruke 
oder Berechnungen einfacher handhabbar und überschaubarer sind.Richtig 
grosse Projekte sind in reinem Assembler schlicht nicht 
beherrschbar.Insofern kann man zu 99% alles in C schreiben,von der 
Initialisierung bis hin zur eigentlichen Anwendung.Einzige Ausnahme sind 
Dinge mit kritischem Timing,wo es auf jeden Maschinentakt ankommt.Hier 
ist Inline-Assembly meiner Meinung nach der schnellere Weg als im vom 
Compiler erzeugten Assembler Code herum zu hantieren.Beim debuggen ist 
das Lesen von selbigen allerdings oft hilfreich.Ein letzter Punkt zum 
Thema Assembler und AVR sind einige Tinys,die von WinAVR nicht 
unterstützt werden.

Einzig Code-Generatoren oder Sachen wie BASCOM sind (meine persönliche 
Meinung) nicht geeignet,da man unter Umständen glaubt,Dinge verstanden 
zu haben und es schlichtweg nicht hat.Etliche Threads hier im Forum 
belegen dies eindrucksvoll.Grundkenntnisse über die zugrundeliegende 
Architektur sind immer von Vorteil.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:

Seh ich genauso.Die Zeit einen einmal geschriebenen TCP/IP-Stack,ein 
kleines RTOS oder eine Mathe-Bibliothek zu portieren kostet etliche 
Mann-Tage.Und wenn man beim 1.Entwurf sauber gearbeitet hat,ist der 
C-Code meist deutlich schneller portiert als neu geschrieben.

Autor: Stefan Gemmel (steg13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde mit Assembler anfangen aber mich nicht lange damit aufhalten. 
Nur ein paar ganz einfache Sachen. Die wichtigsten Befehle mal 
ausprobieren.
Manchmal findet man auch Assembler-Projekte im Netz die man dann leicht 
modifizieren kann ohne Assembler-Spezialist zu sein.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Stichwort, ist C portabel ?

Beitrag "Berechnung Datum + Uhrzeit + Sommerzeit"

Man vergleiche mal TIME.C51 (Keil C51 für 8051) und TIME.C (AVR-GCC).



Peter

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ansonsten hatten wir diese Diskussion hier schon oft - und sie führt 
nie zu einem Ergebniss.
Es gibt immer Assembler-Masochisten, die nur auf diesem Weg Befriedigung 
finden. Und dann gibts eben die, die sich mehr auf das eigentliche 
Problem konzentrieren und auf Zeiteffizienz achten. Muss sich jeder 
selbst irgendwo eintüten.

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist schon eine Zeit lang her, da hätte ich mir lieber einen Finger 
abgeschnitten, als C zu programmieren - Assembler war für mich das 
einzig Wahre. Wegen eines anderen Projektes musste ich mich mit C 
beschäftigen und bin inzwischen von C begeistert - es ist relativ 
hardwarenah (böse Zungen behaupten, es wäre ein Makro-Assembler) und man 
kommt schnell zum Ziel, weil man sich nicht darum kümmern muss, wo man 
Werte abspeichert oder welches Flag bei einem Vergleich gesetzt wird.
Ob C nun portabel ist oder nicht, ist mir reichlich egal- Assembler ist 
überhaupt nicht portabel. Immerhin ist es mir gelungen, eine Anwendung 
in Borland-C auf dem PC zu debuggen und auf einen M16C zu portieren, und 
das mit vertretbarem Aufwand. Zwar muss man sämtliche Ein- und Ausgaben 
umschreiben, aber die eigentlichen Algorithmen lassen sich ohne weiteres 
portieren (wenn man beide Systeme kennt und Fußangeln wie z.B. 
unterschiedliche Größen von Datentypen berücksichtigt). Bei meinem 
Projekt habe ich das von Anbeginn an berücksichtig und somit wenig 
Probleme gehabt.
Allerdings nutze ich C wirklich eher als "Makro-Assembler", denn ich 
abstrahiere nicht bis zum Umfallen sondern sehe zu, dass ich 
Datenstrukturen so definiere, dass man sich vorstellen kann, was 
hinterher im Speicher steht.
Ich würde eindeutig C für den Anfänger favorisieren, weil einfach 
schneller ein Erfolgserlebnis da ist.

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Das Leben ist zu kurz, um in Assembler zu programmieren!"

Ich denke, dem ist nichts hinzuzufügen.

Habe auch meine ersten 8051 noch komplett in Assembler programmiert. 
Diese Programme kann ich heute, obwohl leidlich kommentiert, nicht mehr 
verstehen. Leider habe ich noch ein paar davon laufen.

Was ich danach in C gemacht habe, kann ich auch heute noch lesen, 
verstehen und ggfls. ändern.

Und zur Optimierung schaue ich mir heute den Code an, den der C-Compiler 
generiert hat und ändere dann den C-Code so, dass es passt. Damit kann 
ich die Quellen auch nach Jahren noch lesen, verstehen und evtl. 
anpassen. Und gut geschriebener C-Code ist auch nicht schlechter als 
mittelmässiger Assembler Code. Nur, dass es viel leichter ist, guten 
C-Code zu schreiben als mittelmässigen Assembler.

Beim Umstieg auf AVR habe ich mich mit Assembler gar nicht mehr 
aufgehalten.

Gruss
Axel

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell dir mal eine Kompliziertere Funktion is ASM vor, und dein Bester 
Freund wird die math.h ...

Autor: Thomas Schmidt (segler_tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, genau!!!

Dem möchte ich mich anschließen!!

Ich kenne auch kein Beispiel in wo ich mit C an die Grenzen
gestoßen wäre! Das kann aber auch daran liegen, dass ich ein
gutes Programm verwende. Vielleicht ist es mit Freeware -
Programmen anders??

Ich kann aber nur C empfehlen, man kommt mit viel weniger
Lernaufwand viel schnell zu sehr guten Ergebnissen!!!!

Viel Spaß noch!

Thomas

Autor: Karl-j. B. (matrixman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also was ich auch hinzufügen muss ist das die wo meinen Assembler wäre 
schneller und platzsparender als C. Diese Leute muss ich enttäuschen! 
Vielleicht war es mal vor einigen Jahren so aber heute sicher nicht 
mehr. Durch die hohe Rechenleistung der Programmiergeräte (PCs) kann der 
C-Code gut komprimiert werden besser als die meisten Assembler 
programmieren können. Ein sehr guter Programmier könnte in Assembler 
vielleicht einen etwas schnelleren und kleineren Code erzeugen als ein 
"normaler" Programmierer in C

mfg Karl

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, C ist fein und toll und super und zeitgemäß. Trotzdem programmiere 
ich in ASM. Und wenn es auch nur deswegen ist, das Gleichgewicht in der 
Userschaft zu halten ;-) ;-) ;-) Irgenwann werde ich auch mal in C 
programmieren müssen, man will sich ja nicht selbst im Wege stehen...

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blöde Frage,

Das AVR Studio versteht doch C oder etwa nicht.
Ich bin neugierig geworden es vielleicht doch mal in C zu Versuchen.

Mfg
René

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das AVR Studio versteht doch C oder etwa nicht.

Das AVR-Studio versteht zunächst mal kein C.

Wenn du aber WinAvr nachinstallierst, dann klinkt sich
das in das AVR-Studio ein. Danach kann AVR-Studio auch
mit dem C Compiler vom WinAvr zusammenarbeiten und ihn
aufrufen. Ganz genauso wie es vorher den mitgelieferten
Assembler aufgerufen hat.

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OHAA Danke für die Info.
Gibts denn auch irgendwo eine "C-Erklährung" Programmaufbau, Befehle, 
Initialisierung usw. und ist das WinAvr für den C-Anfänger geeignet oder 
fällt der Umstieg von Assembler zu C schwer?

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

damit die Assembler-Freaks nicht zu sehr in Unterzahl sind... :-)

Auch wenn es die Fragestellung nicht direkt betrifft,

wichtiger als die Frage, ob C oder ASM scheint es mir, die eigenen 
Vorkenntnisse darauf zu prüfen, wo es Voraussetzungen oder Lücken gibt.

@hristian:
>Achso ich will darauf hinaus, dass ich irgendwann (bald) eine Steuerung
>von Temp, Luftfeuchte, Zeit usw programmieren kann.

Beispiele:

Grundlagen der Elektronik - Stromkreis
Ohmsches Gesetz

Widerstand, Kondensator,Relais, Taster, Schalter, LED, Transistor, Quarz 
usw. usw.

Verstehen von Datenblättern
Verstehen von Timing-Diagrammen
Verstehen und Zeichnen von Schaltplänen (-Skizzen)

Das Programm, das ich schreibe, ist speziell beim MC ja kein 
Selbstzweck, das intern vor sich hin klappert.

Es besteht größtenteils aus Interaktion mit angeschlossenen Komponenten.
Ob ich das Portbit in C oder ASM zum Ausgang mache und auf High setze, 
ist ziemlich egal, solange man nicht die Erkenntnis gewinnt, warum man 
für das eigene Projekt überhaupt einen Ausgang braucht, wann dieser auf 
High muß und was dann mit dem angeschlossenen Bauteil passieren soll.

Das ist bei einer LED noch relativ einfach (relativ, wenn ich an die 
endlosen Diskussionen um die Vorwiderstände denke), bei einem I2C-Sensor 
aber schon wesentlich schwieriger.

Nur so als Anmerkungen.

Gruß aus Berlin
Michael




Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gibts denn auch irgendwo eine "C-Erklährung" Programmaufbau, Befehle,
> Initialisierung usw. und ist das WinAvr für den C-Anfänger geeignet oder
> fällt der Umstieg von Assembler zu C schwer?

Es gibt zwar ein C Tuorial auf dieser Site, dass ist aber mehr
für Leute gedacht, die schon ein wenig C können. Da werden
hauptsächlich die Dinge angesprochen, die auf einem µC
anders sind als auf 'normalen' Desktop - C - Systemen.
Es gibt auch eine Unmenge von C-Tutorials auf diversen
Web-Sites, die auf Standard-C eingehen.

Trotzdem würde ich dir empfehlen die allerersten Schritte
auf einem Desktop-Rechner mit einem guten Buch zu machen.
Gute Bücher bringen dir die Sprache in logisch aufbauenden
Schritten bei. Und als Nachschlagewerk ist ein Buch sowieso
unschlagbar.
Wenn du dann die ersten Sporen in C hast, geht der Umstieg
auf µC-C wesentlich leichter, weil du dich nicht mehr mit
den kleinen Anfängerfehlern rumschlagen musst, die auf einem
Desktop-PC mit erstklassigen Debuggern und OS Unterstützung
ein Klacks sind, die einem aber auf einem µC das Leben zur
Hölle machen können.

Autor: .... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich verstehe ehrlich gesagt die Diskussion nicht.

Wenn es jemandem Spaß macht, in Assembler zu programmieren, warum sollte 
er nicht? Es stimmt, daß man so den Prozessor viel besser kennenlernt. 
Und wenn man ordentlich programmiert, sehe ich auch nicht den nachteil 
gegenüber C bei großen Projekten (Funktion ist Funktion, ob in Assembler 
oder C geschrieben).

Anderen Leute sind jedoch andere Sachen wichtiger - vielleicht will man 
gar nicht den Prozessor bis ins letzte Detail verstehen, und möglichst 
schnell zu einem Ergebnis kommen. Dann ist C das Mittel der Wahl, umso 
mehr, wenn man mit unterschiedlichen Prozessoren arbeitet (C ist bis auf 
die I/O-Sachen gleich, die ASM-Befehle unterscheiden sich m.M. nach 
schon stärker).

Gruß,
....

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@....

> Wenn es jemandem Spaß macht, in Assembler zu programmieren, warum sollte
> er nicht? Es stimmt, daß man so den Prozessor viel besser kennenlernt.

Im Hobbybereich ist das egal. Man macht es ja aus Spass an der Freud.
Im professionellen Bereich gehts um Entwicklungszeit und damit Geld. Und 
damit ist Assembler heutzutage auf sehr wenige Dinge beschränkt.

> Und wenn man ordentlich programmiert, sehe ich auch nicht den nachteil
> gegenüber C bei großen Projekten (Funktion ist Funktion, ob in Assembler
> oder C geschrieben).

Nun, dann hast du noch nie grössere Projekte bearbeitet. Der C-Compiler 
nimmt dem Programmierer schon gewaltig Verwaltungsaufwand ab. Variablen, 
Strukturen, Rückgabeparameter, Bibliotheken etc.

MFG
Falk

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sach ma, bis 1kB mag Assembler seine Berechtigung haben, bis 2kB 
gehts noch und ab 8kB (Code ohne konstante Daten) wirds wirklich haarig.


Ich hab einige Asembler-Projekte weggeschmissen, weil sie erweitert 
werden mußten und ich keine Lust mehr hatte, wieder durchzusteigen.

Hab sie dann einfach in C neu programiert, da ich ja noch wußte, was sie 
machen sollen und dann die Erweiterungen eingebaut.


Für Assembler unter C sehe ich nur eine einzige Anwendung: kurze und 
extrem zeitkritische Interrupthandler.
Im Main-Level hat Assembler keinerlei Berechtigung.


Peter

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yeah lets flame, was ist besser Kernigan || Richie, Itchi || Scratchy, 
Laurel || Hardy...

Der Thread aller Threads, Ich programmiere für Kunden und was die wollen 
bekommen sie. Wie an dieser Stelle, von mir schon öfter vorgetragen, 
entscheidet der Kunde. Die Frage ist also nicht was ist besser, eine 
solche Diskussion macht keinen Sinn.

Lern beides, erst ASM dann C.

Wer seine ASM Programme nach einem Jahr nicht mehr lesen oder 
modifizieren kann hat keine strukturierte Arbeitsweise.

Autor: .... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Falk,

> > Wenn es jemandem Spaß macht, in Assembler zu programmieren, warum sollte
> > er nicht? Es stimmt, daß man so den Prozessor viel besser kennenlernt.
>
> Im Hobbybereich ist das egal. Man macht es ja aus Spass an der Freud.
> Im professionellen Bereich gehts um Entwicklungszeit und damit Geld. Und
> damit ist Assembler heutzutage auf sehr wenige Dinge beschränkt.

Stimmt.

> > Und wenn man ordentlich programmiert, sehe ich auch nicht den nachteil
> > gegenüber C bei großen Projekten (Funktion ist Funktion, ob in Assembler
> > oder C geschrieben).
>
> Nun, dann hast du noch nie grössere Projekte bearbeitet. Der C-Compiler
> nimmt dem Programmierer schon gewaltig Verwaltungsaufwand ab. Variablen,
> Strukturen, Rückgabeparameter, Bibliotheken etc.

Auch hier hast Du natürlich recht, ich bin aber immer noch der Meinung, 
daß - wenn man es richtig macht - Assembler was die Modulisierung angeht 
nicht so wahnsinning mehr Aufwand ist.

Ich wollte nur insofern eine Bresche für Assembler-Programmierer 
schlagen, daß ich den Unterton einiger Beiträge hier, die "gegen 
Assembler" gerichtet waren, so interpretiert habe, daß 
"Assembler-Programmierer alle doof sind, weil sie Ihre Zeit vergeuden", 
und das ist - wie ich finde - halt nicht der Fall.

Ich arbeite übrigens nur mit C, denn ich will schnell zum Ergebnis und 
mich interessiert nicht jede funktionelle Kleinigkeit des Prozessors. 
Trotzdem kann ich verstehen, wenn jemand - als hobby - Assembler 
programmiert...

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.