Was ist die beste Ressource, um zu lernen Assembler für PIC-mikrocontroller ist
Werde ich zu Beginn der Arbeit an einem Projekt, wo ich ein gutes Verständnis für Assembler für den PIC-mikrocontroller ist. Ich bin eng vertraut mit C/C++, damit ich weiß, wie man code für die meisten Teil, und ich habe viele Projekte auf dem PIC schon, so verstehe ich die Architektur, sondern haben alles getan, was in meiner Programmierung in 'C'.
Gibt es ein gutes Buch oder eine website, die einen guten job zu erklären, was alle Montage-Befehle bedeuten und wie Sie zu tun, relativ einfache Aufgaben (blinken, LED ' s, einfache mathematische, etc...) für die PIc-mikrocontroller?
Edit: Der primäre Zweck von diesem post ist der Antrag, Ressourcen für das lernen Montage, nicht über die Vorzüge von C vs Montage im Bild ist, oder ob der PIC ist ein 'guter' mikrocontroller zu verwenden. Ich bin mit einem PIC18 mikrocontroller, wenn das macht keinen Unterschied.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde versuchen, diese:
Pic-Tutorial
Es ist mehr, dass eine PIC-Architektur, mit deutlich unterschiedlichen Befehlssätzen. Mikrochip haben nicht die architektonische Einheitlichkeit der Atmel AVR zum Beispiel. Daher müssen Sie angeben, was Sie verwenden - PIC12, 16, 24, 32 zum Beispiel.
Also zu aller erst würde ich vorschlagen, Vermeidung der PIC-assembler auf der Grundlage, dass das, was Sie lernen, sagen, ein PIC12, das kann nicht sein sehr anwendbar auf einen PIC24. Zweitens würde ich vermeiden, einen PIC zu benutzen, wenn ich nur konnte-als software-developer - obwohl ich zugeben, es gibt auch andere überlegungen, und Sie haben vielleicht keine andere Wahl.
Was Sie haben die Wahl über nicht mit assembler. Während die unteren end-Bilder sind vielleicht nicht am besten geeignet, um C-code-Generierung, das ist die compiler-Schreiber-problem; es ist immer noch kostengünstiger in Bezug auf die Entwicklung der Zeit zu nutzen, C, wo möglich. Auf der anderen Seite für die high-volume-Produkte, wenn Sie können passen Sie den code in einem kleineren Teil durch die Verwendung von assembler, das kann ein Faktor sein. Die Entscheidung, die Sie benötigen, assembler, bevor Sie getestet haben eine C-Lösung ist oft eine "vorzeitige Optimierung'. Auch wenn die C-Implementierung schlägt fehl, Größe oder Zeit-Einschränkungen, Sie können nur nennen es ein Prototyp, und recode, um gerecht zu Zwängen. Tun als können noch schneller gestartet werden als assembler-Codierung von Grund auf und kämpft mit design und Befehlssatz zur gleichen Zeit. Sagen Sie Ihrem Chef, du wirst Prototyp in C, dann, wenn es den Anforderungen entspricht, will niemand Geld zu verschwenden re-Codierung ist es sone non-portable, wartbaren assembler-code.
Endlich um deine Frage zu beantworten, vorausgesetzt, Sie benötigen, um die Arbeit schnell und effizient, die Verwendung der Microchip-Beispiele und app-notes, so viel wie möglich, und machen Sie sich mit dem Befehlssatz von den Herstellern instruction set reference. Die Anleitung für den Low-end teilen, ist nicht groß. Für den Tag-zu-Tag der Arbeit ich mag zu verwenden, eine "Instruction set reference card" als ein aide-mémoire - es fasst alle wichtigen details der einzelnen Anweisungen, in der Regel in ein paar Seiten drucken doppelseitig und Laminat-it! ;). Hier ist ein PIC16 Beispiel
Kann es durchaus eine späte Antwort, aber könnten Sie profitieren von diesem Praktikum in Erster Linie für das erlernen der PIC-Assemblierung bis hin zu Anwendungen.
Check: http://embedded-ju.ucoz.com/
Überprüfen Sie die Experimente Registerkarte enthält es:
Experiment 0 - (Einführung zum MPLAB)
Experiment 1 - (Einführung in die PIC Assembly Instruction Set)
Experiment 2 - (Mehr-Befehlssatz und Modulare Programmierung Techniken)
Experiment 3 - (Basic System Analysis and Design)
3.1. Leitfaden zur Hardware-ich
Experiment 4 - ( LCD - HD44780 )
Experiment 5 - (Tastatur)
Experiment 6 - (Mit HI-TECH C Compiler in MPLAB)
6.1. PIC Programmieren mit dem ICD2 Guide.
Experiment 7 - (Timer (Timer0 und Timer2))
Experiment 8 - (USART)
Experiment 9 - (Software-PWM & A/D)
Es basiert auf dem PIC 16 Serie, vor allem, 16f84A, 16F877A und 16F917 .. die Beispiele sind vollständig kommentiert, und die Experimente vollständig erklärt.
Ich bin ein Gläubiger schriftlich einen disassembler. Beginnen Sie mit einer sehr einfachen ein-oder zwei line-Programm, lädt ein register mit einem Konstanten vielleicht (musst Lesen ein tutorial oder etwas zu lernen, die diesen Schritt). Montieren Sie es. Speichern Sie die Binärdatei in ein format, das Sie sind fähig oder bereit, ein Programm zu schreiben, zu Lesen (intel-hex-vielleicht, oder elf, wenn Sie Unterstützung).
Schreiben Sie ein Programm zum Lesen der Binär-Datei, und extrahieren Sie das Programm, dann diese bytes und schreiben Sie einen disassembler (selbst wenn der Verkäufer ein disassembler, sollten Sie noch eins schreiben).
Nun beginnen, Durchlaufen Sie den Prozess, zu lernen, einen neuen Auftrag oder eine neue Art und Weise zu benutzen, dass die Instruktion, eine Anweisung zu einem Zeitpunkt. Schreiben von code zu zerlegen, die Anweisung oder option. Versuchen Sie zu schreiben, assembler zu manipulieren jedes der bits in der Instruktion.
Durch die Zeit, die Sie sich durch den Befehlssatz kennen Sie die Anweisung set besser als die meisten Menschen, die es verwenden, jeden Tag, werden Sie wissen, wie zu schreiben Sie ein assembler für jede der Optionen, die für jeden der Befehle, können Sie auch erfahren, warum dieser Befehl kann nur Adresse N bytes von seiner Lage und andere können Zugriff auf alles, oder, dass der Unterricht nur verwendet werden kann, ein N-bit-sofortige und andere können einen beliebigen Wert verwenden. Diese Art der Sache.
Ich habe diesen Prozess viele Male und lernte viele Befehlssätze, ymmv. Nach den ersten paar-drei obigen Prozeß kann nur nehmen Sie einen Nachmittag zu vervollständigen.
EDIT:
Das Ziel ist hier die Ausbildung nicht die nächste große sourceforge-Projekt. Die Ausgabe kann als hässlich oder unvollständig ist, da Sie wie Sie sind die einzige, die gehen, um es zu Lesen.
Hinweis: Eine generische disassembler für die variable-Länge-Befehl setzt kann etwas schwierig, wollen Sie nicht zu Linear zu zerlegen das binary in diesem Fall, dem Sie Folgen möchten alle Ausführungspfade. Ich würde es vermeiden. Einfache Programme, die etwas ausführen Linear Montage dann die Demontage ist nicht schwer, selbst auf einem variable length instruction set. Sie erfahren einiges über ein Befehlssatz, der durch die Demontage und Untersuchung der Leistung von einem C-compiler (oder andere high-level-Sprache), wenn der compiler nicht über ein assembler-output-option, oder nicht mit einem disassembler können Sie nicht bekommen, dies zu nutzen (es sei denn, es wird eine Feste Länge instruction set).
Beachten Sie auch, sobald Sie erfahren, dass assembler für einen Prozessor, der zweite ist viel einfacher, und so weiter. Die Dinge, die Sie lernen müssen, um von einem zum nächsten oft werden, wie groß kann der Sprung werden, was sind die Regeln auf immediates, indirekte Adressierung, im Grunde alle Dinge, die direkt mit der Prüfung der opcodes. Sie können es lernen, ohne auf die Befehle, aber Sie haben sich auf die Dokumentation oder assembler-Fehlermeldungen hohen Qualität.
Dem PICList: http://piclist.com/ .
Insbesondere
hat viele gute Tipps.