Quelle est la meilleure ressource pour apprendre le langage assembleur pour PIC du microcontrôleur
Je vais commencer à travailler sur un projet où j'ai besoin d'avoir une bonne compréhension du langage d'Assemblage pour le microcontrôleur PIC. Je suis intimement familier avec le C/C++, donc je sais comment le code pour la plupart, et j'ai fait beaucoup de projets pour le PIC déjà si je comprends l'architecture, mais ils l'ont fait toute ma programmation en "C".
Est-il un bon livre ou un site web qui fait un bon travail en expliquant ce que toute l'Assemblée des commandes de la moyenne et de la façon de faire assez simple des tâches (clignotement de la LED, base de calcul, etc...) pour le microcontrôleur PIc?
Edit: Le but principal de ce poste est de demander des ressources pour l'apprentissage de l'Assemblée, pas en train de débattre des mérites de C vs Assemblée dans le PIC, ou si le PIC est un 'bon' microcontrôleur à utiliser. Je suis à l'aide d'un PIC18 microcontrôleur si cela fait une différence.
OriginalL'auteur Seidleroni | 2009-09-24
Vous devez vous connecter pour publier un commentaire.
Je voudrais essayer ceci:
Pic Tutoriel
Le site dans le lien est en bas!
Il est toujours en baisse. Cette réponse n'a plus de sens de la valeur.
OriginalL'auteur Will Marcouiller
Il n'y a plus qu'un seul PIC de l'architecture, avec sensiblement différents jeux d'instructions. La puce n'ont pas la cohérence architecturale de Atmel AVR, par exemple. Si vous avez besoin de spécifier ce que vous utilisez - PIC12, 16, 24, 32 par exemple.
Alors tout d'abord je voudrais vous suggérons d'éviter l'assembleur PIC sur la base de ce que vous apprenez sur le dire d'un PIC12, qui peut ne pas être applicable à un PIC24. Deuxièmement, je veux éviter à l'aide d'un PIC à tous si je pouvais en tant que développeur logiciel - bien que je le concède il y a d'autres considérations, et vous avez pas le choix.
Ce que vous pouvez avoir un choix plus n'est pas à l'aide de l'assembleur. Tandis que l'extrémité inférieure Photos sont peut-être pas le mieux adapté à la génération de code C, c'est le compilateur de l'écrivain de problème; il est encore plus efficace en termes de temps de développement pour utiliser C si possible. En revanche, pour les produits de volume élevé, si vous pouvez l'intégrer le code dans une moindre mesure, par l'utilisation de l'assembleur, qui peut être un facteur. De décider que vous devez assembler avant d'avoir testé une solution C est souvent un "prématuré d'optimisation'. Même si le C de la mise en œuvre d'échec de la taille ou des contraintes de temps, vous pouvez simplement appeler un prototype, et recode pour répondre à des contraintes. Faire que peut-être encore plus rapide que de partir à l'assembleur de codage à partir de zéro et en proie à la fois à la conception et jeu d'instructions en même temps. Dites à votre patron que vous aurez prototype en C, puis, quand il répond aux exigences, personne ne veut plus perdre de l'argent re-codage, il est sone non-portable, difficile à maintenir du code assembleur.
Enfin pour répondre à votre question, en supposant que vous ayez besoin de travailler rapidement et efficacement, l'utilisation de Microchip exemples et app-notes autant que possible, et de vous familiariser avec le jeu d'instructions des fabricants du jeu d'instructions de référence. Le jeu d'instructions pour le bas de gamme des pièces n'est pas grande. Pour la journée-à-jour de travail, je tiens à utiliser un "jeu d'Instructions de la carte de référence" comme un aide-mémoire - elle récapitule tous les détails essentiels de chaque instruction, généralement en quelques pages - imprimer recto verso et stratifié! ;). Voici une PIC16 exemple
Pour les petits âgés de photos, l'asm est rapide, facile, de meilleurs résultats que C. Le nouveau pic32 est dérivé à partir d'un mips donc une autre bête. L'apprentissage de l'assembleur pic peut vouloir dire deux ou trois différents ensembles d'instructions, donc je suis absolument d'accord vous avez besoin de spécifier quelle image que vous parlez.
Même si vous êtes à la programmation en C, il aide vraiment à savoir le sous-jacent de l'assemblée de sorte que vous pouvez comprendre ce que le compilateur va faire avec ce que vous tapez.
D'accord, l'extrémité inférieure de Photos asre pas grand C plates-formes, et les compilateurs sont sévèrement limités. Ce sont ceux que vous utilisez lorsque les "autres facteurs" (tels que le coût par unité) dominent. Aussi ré. le nom de PIC, il est devenu un outil de marketing plutôt qu'une architecture - le PIC32 portant aucun rapport avec les dispositifs précédents. Je ne suis pas sûr que le PIC32 a beaucoup de chance contre le BRAS de faire de grands progrès à la 32 bits de marché. @Crashworks: Oui dans les systèmes embarqués en particulier c'est vrai, mais être capable de lire l'assembleur ne vous oblige pas à être en mesure de l'écrire.
OriginalL'auteur Clifford
Il pourrait être tout à fait un retard de réponse, mais vous pourriez bénéficier de ce cours de laboratoire écrite principalement pour l'apprentissage de la PIC de l'Assemblée grâce à des applications.
Vérifier: http://embedded-ju.ucoz.com/
Vérifier les expériences onglet, il comprend:
Expérience 0 - (Introduction à MPLAB)
Expérience 1 - (Introduction au PIC de l'Assemblée du Jeu d'Instructions)
Expérience 2 - (en savoir Plus sur le Jeu d'Instructions et Programmation Modulaire Techniques)
Expérience 3 - (Système de Base d'Analyse et de Conception)
3.1. Guide pour le Matériel je
Expérience 4 - ( LCD HD44780 )
Expérience De 5 - (Pavé Numérique)
Expérience 6 - (à l'Aide de HI-TECH C compiler dans MPLAB)
6.1. PIC de Programmation avec l'ICD2 Guide.
Expérience 7 - (Timers (Timer0 et Timer2))
Expérience 8 - (USART)
Expérience 9 - (Logiciel PWM & A/D)
Il est basé sur le PIC 16 de la série, notamment, 16f84A, 16F877A et 16F917 .. les exemples sont entièrement commentée, et les expériences pleinement expliqué.
OriginalL'auteur The Byzantine
Je suis un croyant dans l'écriture d'un désassembleur. Commencer avec un très simple, une ou deux ligne de programme qui se charge d'un registre avec une constante peut-être (il faut lire un tutoriel ou quelque chose à apprendre de cette étape). L'assembler. Enregistrer le fichier binaire dans un format que vous êtes capables ou désireux d'écrire un programme pour lire (intel hex peut-être, ou elfe si ils soutiennent que).
Écrire un programme pour lire le fichier binaire et d'en extraire le programme puis prendre les octets et écrire un désassembleur (même si le vendeur a un désassembleur vous devriez toujours écrire).
Maintenant commencer à répéter le processus, apprendre une nouvelle instruction ou une nouvelle manière d'utiliser cette instruction, une instruction à la fois. Écrire du code pour démonter que l'instruction ou de l'option. Essayez d'écrire en assembleur pour manipuler chacun des bits de l'instruction.
Par le temps que vous passer à travers le jeu d'instructions, vous savez le jeu d'instruction de mieux que la plupart des gens qui l'utilisent chaque jour, vous saurez comment écrire en assembleur pour chacune des options pour chacun des opérateurs, vous pouvez également savoir pourquoi cette instruction ne s'adresse qu'à N octets à partir de son emplacement et d'autres peuvent accéder à quoi que ce soit, ou que l'instruction ne peut utiliser qu'une de N bits immédiate et d'autres peuvent utiliser n'importe quelle valeur. Ce genre de chose.
J'ai utilisé ce processus de nombreuses fois et appris beaucoup de jeux d'instructions, ymmv. Après le premier couple-trois le processus ci-dessus ne peuvent prendre un après-midi pour terminer.
EDIT:
Le but ici n'est pas l'enseignement est le prochain grand projet sur sourceforge. La sortie peut être aussi laid ou incomplet, comme vous, comme vous êtes le seul à aller le lire.
Remarque: Un générique désassembleur pour la longueur variable des jeux d'instructions peut être un peu difficile, vous ne voulez pas de façon linéaire démonter le binaire dans ce cas, vous voulez suivre tous les chemins d'exécution. Je voudrais l'éviter. Prenant de simples programmes qui s'exécutent quelque peu linéaire montage puis le démontage n'est pas difficile, même sur une longueur variable du jeu d'instructions. Vous pouvez en apprendre beaucoup sur un ensemble d'instructions par le démontage et l'examen de la sortie d'un compilateur C (ou un autre langage de haut niveau), si le compilateur n'a pas un assembleur option de sortie ou de ne pas avoir un désassembleur, vous n'aurez pas prendre avantage de cela (sauf si c'est un fixe longueur du jeu d'instructions).
Aussi remarque une fois que vous apprendre l'assembleur pour un processeur, le second est beaucoup plus facile, et ainsi de suite. Choses que vous devez apprendre à partir de l'une à l'autre, deviennent souvent des gros comment cela peut-il sauter, quelles sont les règles sur immédiates, adressage indirect, essentiellement toutes les choses qui sont directement liés à l'examen des opcodes. Vous pouvez les apprendre sans regarder les opcodes, mais vous devez compter sur la documentation ou de l'assembleur messages d'erreur étant de bonne qualité.
De ce que, en un après-midi de sons... rapide.
oui, tout à fait sérieux. la programmation la programmation, c'est une question de syntaxe, de l'apprentissage de la syntaxe de la lecture et de ne pas faire est lent et coûteux. En essayant d'écrire et d'exécuter et de déboguer des programmes que nous venons d'apprendre une instruction est lent et coûteux, c'est un très bon marché et la solution rapide et fiable. Si vous pouvez trouver une façon d'apprendre ISA à l'intérieur et à l'extérieur en quelques heures, sans aucun équipement autre qu'un ordinateur pas cher et gratuit compilateur, d'aller pour elle. (bon lecteur de pdf et assembleur)
Vous pouvez l'apprendre de cette façon, mais l'apprendre "suffisamment bonne" est plus rentable sur un projet commercial. Les développeurs professionnels ne doivent maîtriser, mais en même temps faut comprendre qu'ils sont là pour générer de la richesse, ne sont pas des experts dans les arcanes technologies. Sur un grand projet vous permettra d'apprendre et de devenir plus efficaces tout en étant productif en même temps. Si vous faites cela comme un passe-temps, faire ce que vous aimez. Je ne doute pas que beaucoup d'amateurs sont mieux assembleur programmeurs que de nombreux professionnels, parce que leur motivation est différente.
OriginalL'auteur old_timer
La PICList: http://piclist.com/ .
En particulier,
a beaucoup de bons conseils.
Oui, je vous remercie!
OriginalL'auteur David Cary