Frage

Ich werde an einem Projekt arbeiten, bei dem ich ein ordentliches Verständnis der Montagesprache für das PIC -Mikrocontroller -des Verhältnisses habe. Ich bin mit C/C ++ vertraut, also weiß ich, wie man zum größten Teil codiert, und ich habe bereits viele Projekte für das Bild gemacht, damit ich die Architektur verstehe, aber all meine Programme dafür in 'C' gemacht habe.

Gibt es ein gutes Buch oder eine gute Website, die einen guten Job erklärt, was alle Versammlungsbefehle bedeuten und wie man ziemlich einfache Aufgaben (Blink LEDs, Basic Mathematik usw.) für den PIC -Mikrocontroller erledigt?

Bearbeiten: Der Hauptzweck dieses Beitrags besteht darin, Ressourcen für die Lernversammlung anzufordern, nicht über die Verdienste von C gegen Assembly im Bild zu diskutieren oder ob das Bild ein „guter“ Mikrocontroller ist. Ich verwende einen PIC18 -Mikrocontroller, wenn dies einen Unterschied macht.

War es hilfreich?

Lösung

Ich würde das versuchen:PIC -Tutorial

Andere Tipps

Es gibt mehr als eine Bildarchitektur mit deutlich unterschiedlichen Anweisungssätzen. Microchip hat beispielsweise nicht die architektonische Konsistenz von Atmel AVR. Sie müssen also angeben, was Sie verwenden - PIC12, 16, 24, 32 zum Beispiel.

Zunächst würde ich vorschlagen, PIC -Assembler zu vermeiden, da das, was Sie auf einem PIC12 lernen, möglicherweise nicht sehr anwendbar für ein PIC24 ist. Zweitens würde ich es vermeiden, ein Bild überhaupt zu verwenden, wenn ich als Softwareentwickler möglicherweise zugänglich sein könnte - obwohl ich zustage, dass es andere Überlegungen gibt, und Sie haben möglicherweise keine Wahl.

Was Sie möglicherweise für die Wahl haben, ist kein Assembler. Während die Bilde der unteren Endung vielleicht nicht am besten für die C -Code -Generierung geeignet sind, ist dies das Problem des Compiler -Schriftstellers. In Bezug auf die Entwicklungszeit ist es immer noch kostengünstiger, C, wo möglich, zu verwenden. Wenn Sie dagegen Produkte mit hoher Volumenprodukte in einen kleineren Teil mit Assembler einfügen können, kann dies ein Faktor sein. Die Entscheidung, dass Sie Assembler benötigen, bevor Sie eine C -Lösung getestet haben, ist häufig eine „vorzeitige Optimierung“. Auch wenn die C -Implementierung die Größe oder Zeitbeschränkungen fehlschlägt, können Sie sie einfach einen Prototyp nennen und sie wiedererlangt, um Einschränkungen zu erfüllen. Tun zu tun, als es immer noch schneller sein kann als das Starten von Assembler -Codierung von Grund auf neu und gleichzeitig mit dem Design- und Befehlssatz zu kämpfen. Teilen Sie Ihrem Chef mit, dass Sie es in C prototypisieren werden. Wenn es dann den Anforderungen erfüllt, möchte niemand Geld verschwenden, um es erneut zu codieren, dass es sich nur um nicht portable, nicht abhachbarer Assembler-Code handelt.

Um Ihre Frage zu beantworten, müssen Sie angenommen, Sie müssen schnell und effizient Arbeiten erledigen, verwenden Sie die Beispiele und App-Notes von Microchip so weit wie möglich und machen sich mit dem Anweisungssatz aus der Anweisungsset-Referenz des Herstellers vertraut. Der Anweisungssatz für die unteren Teile ist nicht groß. Für tägliche Arbeiten verwende ich gerne eine "Befehlssatzreferenzkarte" als Adjutant-Mémoire-sie fasst alle wesentlichen Details jeder Anweisung zusammen, normalerweise auf ein paar Seiten-drucken Sie sie doppelseitig und laminieren Sie sie! ;). Hier ist ein PIC16 Beispiel

Es mag eine lange Antwort sein, aber Sie könnten von diesem Laborkurs profitieren, der hauptsächlich für das Lernen von Pic -Montage durch Anwendungen geschrieben wurde.

Prüfen: http://embeded-ju.ucoz.com/

Überprüfen Sie die Registerkarte Experimente. Sie enthält:

Experiment 0 - (Einführung in MPLAB)

Experiment 1 - (Einführung in den Anweisungssatz für Bildbaugruppen)

Experiment 2 - (Mehr zu Anweisungssatz und modularen Programmierungstechniken)

Experiment 3 - (Grundlegende Systemanalyse und -gestaltung)
3.1. Leitfaden zur Hardware i

Experiment 4 - (LCD - HD44780)

Experiment 5 - (Tastatur)

Experiment 6 - (Mit dem Hi-Tech C-Compiler in MPLAB) 6.1. PIC -Programmierung mit ICD2 -Handbuch.

Experiment 7 - (Timer (Timer0 und Timer2))

Experiment 8 - (USAart)

Experiment 9 - (Software PWM & A/D)


Es basiert auf der PIC 16 -Serie, insbesondere auf 16F84A, 16F877A und 16F917. Die Beispiele werden vollständig kommentiert und die Experimente vollständig erklärt.

Ich glaube daran, einen Disassembler zu schreiben. Beginnen Sie mit einem sehr einfachen ein oder zwei Zeilenprogramm, das ein Register mit einer Konstanten lädt (muss ein Tutorial oder etwas etwas lesen, um diesen Schritt zu lernen). Zusammenstellen. Speichern Sie die Binärdatei in einem Format, das Sie in der Lage oder bereit sind, ein Programm zum Lesen zu schreiben (Intel Hex vielleicht oder Elf, wenn sie dies unterstützen).

Schreiben Sie ein Programm, um die Binärdatei zu lesen und das Programm zu extrahieren. Nehmen Sie diese Bytes und schreiben Sie einen Disassembler (auch wenn der Anbieter einen Disassembler hat, sollten Sie noch einen schreiben).

Beginnen Sie nun mit dem Iterieren des Prozesses, lernen Sie eine neue Anweisung oder eine neue Möglichkeit, diese Anweisung und einen Anweisungen gleichzeitig zu verwenden. Schreiben Sie Code, um diese Anweisung oder Option zu zerlegen. Versuchen Sie, Assembler zu schreiben, um jede der Bits in der Anweisung zu manipulieren.

Wenn Sie den Anweisungssatz durchlaufen, wissen Sie, dass der Anweisungssatz besser ist als die meisten Menschen, die ihn jeden Tag verwenden. Kann nur B -Bytes von seinem Standort an adressieren, und andere können auf irgendetwas zugreifen, oder diese Anweisung kann nur ein nbites unmittelbares Gebrauch verwenden, und andere können jeden Wert verwenden. Diese Art von Ding.

Ich habe diesen Prozess oft verwendet und viele Anweisungssätze gelernt, ymmv. Nach dem ersten zwei. Drei drei oben dauert der Vorgang nur einen Nachmittag.

BEARBEITEN:

Das Ziel hier ist Bildung nicht das nächste große Quellprojekt. Die Ausgabe kann genauso hässlich oder unvollständig sein, wie Sie es mögen, dass Sie sie nur lesen werden.

Hinweis: Ein generischer Disassembler für Befehlssätze mit variabler Länge kann etwas schwierig sein. Sie möchten das Binärer nicht linear zerlegen in diesem Fall, in dem Sie alle Ausführungspfade befolgen möchten. Ich würde es vermeiden. Das Aufnehmen einfacher Programme, die etwas linear zusammenstellen, ist selbst bei einem Befehlssatz variabler Länge nicht schwierig. Sie können einiges über ein Anweisungssatz lernen, indem Sie die Ausgabe eines C -Compilers (oder eine andere Sprache auf hoher Ebene) untersuchen und untersuchen. Um dies zu nutzen (es sei denn, es handelt sich um einen Befehlssatz mit fester Länge).

Beachten Sie auch, dass Sie Assembler für einen Prozessor lernen, der zweite ist viel einfacher und so weiter. Die Dinge, die Sie von eins bis zum nächsten lernen müssen, werden oft, wie groß dieser Sprung sein kann, was sind die Regeln für Unmittelbar, indirekte Adressierung, im Grunde genommen alle Dinge, die direkt an die Untersuchung der Opcodes gebunden sind. Sie können es lernen, ohne sich die Opcodes anzusehen, müssen sich jedoch auf die Dokumentation oder Assembler -Fehlermeldungen verlassen, die von hoher Qualität sind.

Die Picliste: http://piclist.com/ .

Im Speziellen,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top