Quelle est la meilleure ressource pour apprendre la langue de l'Assemblée pour des microcontrôleurs PIC de [fermé]

StackOverflow https://stackoverflow.com/questions/1473454

Question

Je vais commencer à travailler sur un projet où je dois avoir une compréhension décente de Assembleur pour microcontrôleur PIC de la. Je suis intimement familier avec C / C ++, donc je sais comment le code pour la plupart, et je l'ai fait de nombreux projets pour le PIC déjà si je comprends l'architecture, mais ai fait toute ma programmation en « C ».

Y at-il un bon livre ou site web qui fait un bon travail pour expliquer ce que toutes les commandes de l'Assemblée veulent dire et comment faire des tâches assez simples (clignotement LED, les mathématiques de base, etc ...) pour le microcontrôleur PIC?

Edit: L'objectif principal de ce poste est de demander des ressources de l'Assemblée apprentissage, et non le débat sur les mérites de C vs Assemblée dans le PIC, ou si le PIC est un microcontrôleur « bon » à utiliser. J'utilise un microcontrôleur PIC18 si cela fait une différence.

Était-ce utile?

La solution

Je voudrais essayer ceci: Pic Tutorial

Autres conseils

Il y a plus d'une architecture PIC, avec des jeux d'instructions très différentes. Microchip ne pas la cohérence architecturale de Atmel AVR par exemple. Donc, vous devez spécifier ce que vous utilisez -. PIC12, 16, 24, 32 par exemple

Alors tout d'abord je conseille d'éviter assembleur PIC sur la base que ce que vous dites LEARN un PIC12, qui ne peut pas être très applicable à un PIC24. En second lieu, je voudrais éviter d'utiliser un PIC du tout si je pouvais peut-être en tant que développeur de logiciels -. Mais je reconnais d'autres considérations, et vous pouvez avoir pas d'autre choix

Ce que vous pouvez avoir un choix plus est de ne pas utiliser l'assembleur. Alors que les PICs extrémité inférieure ne sont pas peut-être mieux adapté à la génération de code C, c'est le problème de l'auteur du compilateur; il est encore plus rentable en termes de temps de développement à utiliser C lorsque cela est possible. D'autre part pour les produits de volume élevé, si vous pouvez adapter le code dans une petite partie en utilisant assembleur, qui peut être un facteur. Décider que vous avez besoin assembleur avant d'avoir testé une solution C est souvent une « optimisation prématurée ». Même si la mise en œuvre de C ne contraintes de taille ou de temps, vous pouvez simplement l'appeler un prototype, et recoder pour répondre aux contraintes. Faire que peut-être encore plus rapide que le démarrage de codage assembleur à partir de zéro et aux prises avec la conception et jeu d'instructions en même temps. Dites à votre patron vous prototyper en C, puis quand il répond aux exigences, personne ne voudra perdre Recodification l'argent est sone code assembleur non-portable inmaintenable.

Enfin, pour répondre à votre question, en supposant que vous avez besoin pour faire le travail rapidement et efficacement, utilisez les exemples de Microchip et app-notes, autant que possible, et vous familiariser avec le jeu d'instructions de la référence du jeu d'instructions du fabricant. L'ensemble d'instructions pour les parties bas de gamme n'est pas grande. Pour le travail au jour le jour, j'aime utiliser une « carte de référence jeu d'instructions » comme un aide-mémoire - il résume tous les détails essentiels de chaque instruction, habituellement en quelques pages - imprimer recto-verso et plastifier! ;). Voici un PIC16 exemple

Il pourrait être tout à fait réponse tardive, mais vous pouvez profiter de ce cours de laboratoire écrit principalement pour l'apprentissage de l'Assemblée PIC grâce à des applications.

Vérifier: http://embedded-ju.ucoz.com/

Vérifier l'onglet expériences, il comprend:

Expérience 0 - (Introduction à MPLAB)

Expérience 1 - (Introduction à l'assemblage PIC de jeu d'instructions)

Expérience 2 - (Plus de détails sur l'instruction Set et techniques de programmation modulaires)

Expérience 3 - (système de base d'analyse et de conception)
   3.1. Guide de matériel I

Expérience 4 - (LCD - HD44780)

Expérience 5 - (clavier)

Expérience 6 - (en utilisant HI-TECH C Compiler en MPLAB)    6.1. PIC Programmation avec le Guide ICD2.

Expérience 7 - (Timers (Timer0 et Timer2))

Expérience 8 - (USART)

Expérience 9 - (Logiciel PWM & A / D)


Il est basé sur la PIC 16 séries, notamment, 16F84A, 16F877A et 16F917 .. les exemples sont entièrement commenté et les expériences expliquées en détail.

Je suis un croyant par écrit un désassembleur. Commencez par un programme très simple une ou deux lignes qui charge un registre avec peut-être constant (dois lire un tutoriel ou quelque chose à apprendre cette étape). Assembler. Enregistrez le fichier binaire dans un format que vous êtes capable ou désireux d'écrire un programme pour lire (hex intel peut-être, ou elfe si elles soutiennent que).

Ecrire un programme pour lire le fichier binaire et 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 un).

Maintenant commencer itérer le processus, apprendre une nouvelle instruction ou d'une nouvelle façon d'utiliser cette instruction, une instruction à la fois. Écrire du code pour démonter cette instruction ou de l'option. Essayer d'écrire assembleur de manipuler chacun des bits dans l'instruction.

Au moment où vous obtenez par le jeu d'instructions que vous saurez l'ensemble d'instructions mieux que la plupart des gens qui l'utilisent tous les jours, vous saurez comment écrire assembleur pour chacune des options pour chacune des opcodes, vous pouvez aussi apprendre pourquoi cette instruction ne peut répondre à N octets de son emplacement et d'autres peuvent accéder à quoi que ce soit, ou que l'instruction ne peut utiliser un bit N immédiat et d'autres peuvent utiliser toute valeur. Ce genre de chose.

Je l'ai utilisé ce processus plusieurs fois et appris beaucoup de jeux d'instructions, YMMV. Après les deux premières trois processus ci-dessus ne peut prendre un après-midi pour terminer.

EDIT:

Le but ici est l'éducation non le prochain grand projet sourceforge. La sortie peut être aussi laid ou incomplète que vous le souhaitez, vous êtes le seul va lire.

Note: Un désassembleur générique pour les jeux d'instructions de longueur variable peut être un peu difficile, vous ne voulez pas démonter linéairement le binaire dans ce cas, vous voulez suivre tous les chemins d'exécution. Je l'éviter. Prendre des programmes simples qui exécutent peu d'assemblage linéaire alors désassemblage est pas difficile, même sur un jeu d'instructions de longueur variable. Vous pouvez apprendre tout à fait un peu un jeu d'instructions en démontant et en examinant la sortie d'un compilateur C (ou autre langue de haut niveau), si le compilateur ne dispose pas d'une option de sortie assembleur ou ne dispose pas d'un désassembleur vous ne pouvez pas obtenir à tirer parti de cette (à moins qu'il soit un jeu d'instructions de longueur fixe).

Notez également une fois que vous apprenez assembleur pour un processeur, le second est beaucoup plus facile, et ainsi de suite. Les choses que vous devez apprendre d'un à l'autre deviennent souvent l'ampleur de ce saut peut être, quelles sont les règles sur immediates, adressage indirect, essentiellement toutes les choses qui sont directement liés à l'examen des opcodes. Vous pouvez apprendre sans regarder les opcodes, mais vous devez compter sur la documentation ou les messages d'erreur assembleur étant de haute qualité.

Le PIClist. http://piclist.com/

En particulier,

  • "check-list pour les débutants PIC Microcontrôleurs" a beaucoup de bons conseils.
  • Mike McLarens Instruction de PIC18F Set Résumé HTML et < a href = "http://www.piclist.com/images/piclist/18Fsum.pdf" rel = "nofollow noreferrer"> PDF a un résumé d'une page de toutes les instructions en langage assembleur du PIC18F "noyau 16-bit".
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top