Tutoriel d’assembleur AVR 1 (4 / 5 étapes)

Étape 4: Hello.asm ligne par ligne

À la fin de ce tutoriel d’introduction, nous passerons par le hello.asm programme ligne par ligne pour voir comment cela fonctionne.

Tout ce qui suit un point-virgule est ignoré par l’assembleur et donc ces deux premières lignes sont tout simplement des « commentaires » expliquant en quoi le programme.

Cette ligne indique l’assembleur pour inclure le fichier m328Pdef.inc que vous avez téléchargé. Vous pouvez mettre ceci dans un répertoire de semblables incluent des fichiers et puis modifiez la ligne ci-dessus pour indiquer lui il.

LDI signifie « charge immédiate » et raconte l’assembleur à tenir un registre de travail, r16 dans ce cas et charge un nombre binaire, 0b00100000 dans ce cas. Le 0 en face dit que notre nombre est au format binaire. Si nous voulions nous aurions pu choisir une autre base, par exemple en hexadécimal. Dans ce cas notre numéro aurait été 0 x 20, qui est en hexadécimal pour 0b00100000. Ou nous aurions pu utiliser 32 qui est décimale pour le même nombre de base 10.

Exercice 1: Essayez de changer le nombre dans la ligne ci-dessus à hexadécimal, puis en decimal dans votre code et vérifiez qu’il fonctionne toujours dans chaque cas.

Binaire est plus simple mais à cause des Ports de manière et registres de travail. Nous allons discuter les ports et les registres de l’atmega328p en plus en détail à l’avenir tutoriels mais pour l’instant, je vais juste dire que nous utilisons r16 comme nos sens « Registre de travail » que nous allons l’utiliser comme une variable que nous stockons des numéros en. Un « registre » est un ensemble de 8 bits. Ce qui signifie 8 projecteurs qui peuvent être 0 ou 1 (« off » ou « on »). Quand nous chargeons le 0b00100000 nombre binaire dans le registre à l’aide de la ligne ci-dessus, nous avons simplement conservé ce numéro dans le registre r16.

Cette ligne indique au compilateur de copier le contenu de la r16 de Registre dans le registre DDRB. DDRB est synonyme de « Données Direction Registre B » et il met en place les « pins » sur le port. Sur le plan de brochage pour le 328p que vous pouvez voir qu’il y a 8 broches étiqueté PB7 PB0, PB1,.... Ces broches représentent les « bits » de « Port » et quand nous chargeons le nombre binaire 00100000 dans le registre DDRB, que nous disons que nous voulons ensemble PB0, PB1, PB2, PB3, PB4, PB6 et PB7 comme broches d’entrée puisqu’ils ont 0 s en eux, et PB5 est définie comme une tige de sortie étant donné que nous avons mis un 1 à cet endroit.

Maintenant que nous avons fixé les orientations des broches, nous pouvons maintenant régler les tensions sur eux. La ligne ci-dessus copie le nombre binaire même de notre stockage Registre r16 dans PortB. Cela affecte toutes les broches 0 Volt sauf pin PB5 à élevé, qui est de 5 volts.

Exercice 2: Prendre une prise numérique multimètre, le fil noir dans la masse (GND) et ensuite testé chacune des broches PB0 par PB7 avec le fil rouge. Les tensions sont sur chacune des broches exactement celles correspondant à mettre 0b00100000 dans PortB ? Si il y a ceux qui ne sont pas, pourquoi vous pensez que c’est ? (Voir l’axe plan)

Enfin, la première ligne du dessus est un « label » qui marque un point dans le code. Dans ce cas d’étiquetage cet endroit comme « Start ». La deuxième ligne dit « saut relatif à l’étiquette de début. » Le résultat net est que l’ordinateur est placé dans une boucle infinie qui maintient juste cyclisme revient à. Nous avons besoin de cela parce que nous ne pouvons pas avoir le programme juste fin, ou de tomber d’une falaise, le programme doit juste continuer à fonctionner afin que la lumière reste allumée.

Exercice 3: Supprimer les deux lignes ci-dessus à partir de votre code afin que le programme tombe d’une falaise. Que se passe-t-il ? Vous devriez voir quelque chose qui ressemble à du programme « blink » traditionnel utilisé par Arduino comme leur « hello world! ». Pourquoi pensez-vous qu’il s’agit de cette façon ? (Pensez à tout ce qui doit se produire lorsque le programme tombe d’une falaise...)

Articles Liés

Tutoriel d’assembleur AVR 11

Tutoriel d’assembleur AVR 11

Bienvenue au didacticiel 11 !Dans ce bref didacticiel, nous allons enfin construire la première partie de notre projet final.La première chose que vous devriez faire est d'aller à la toute dernière étape de ce tutoriel et voir la vidéo. Puis revenez
Tutoriel d’assembleur AVR 8

Tutoriel d’assembleur AVR 8

Bienvenue au didacticiel 8 !Dans ce bref didacticiel, nous allons prendre un peu d'une déviation de l'introduction de nouveaux aspects de la programmation en langage assembleur pour montrer comment déplacer nos composants de prototypage pour un circu
Tutoriel d’assembleur AVR 6

Tutoriel d’assembleur AVR 6

Bienvenue au didacticiel 6 !Tutoriel d'aujourd'hui sera un court où nous mettrons au point une méthode simple pour transmettre des données entre un atmega328p et un autre à l'aide de deux ports qui les relient. Nous puis prendre dés rouleau de tutori
Tutoriel d’assembleur AVR 9

Tutoriel d’assembleur AVR 9

Bienvenue au didacticiel 9.Aujourd'hui nous allons montrer comment piloter un afficheur 7 segments, mais aussi un affichage à 4 chiffres à l'aide de notre code en langage assembleur ATmega328P et AVR. Ce faisant cela que nous allons devoir prendre de
Tutoriel d’assembleur AVR 2

Tutoriel d’assembleur AVR 2

Ce tutoriel est une continuation de "tutoriel d'assembleur AVR 1"Si vous n'avez pas passé par 1 tutoriel, vous devez arrêter maintenant et faire celui-là en premier.Dans ce tutoriel, nous allons poursuivre notre étude de programmation en langage
Tutoriel d’assembleur AVR 7

Tutoriel d’assembleur AVR 7

Bienvenue au didacticiel 7 !Aujourd'hui nous allons voir la première comment faire pour nettoyer un clavier et ensuite montrer comment utiliser les ports d'entrée analogiques pour communiquer avec le clavier.Nous ferons cela en utilisant les interrup
Tutoriel d’assembleur AVR 10

Tutoriel d’assembleur AVR 10

Bienvenue au didacticiel 10 !Désolé, qu'il a fallu si longtemps pour sortir cette nouvelle tranche mais c'est un moment assez intense de l'année. En tout cas, ici c'est !Nous avons parcouru un long chemin et vous êtes probablement déjà assez compéten
Tutoriel d’assembleur AVR 5

Tutoriel d’assembleur AVR 5

Aujourd'hui nous allons regarder de plus près aux divers emplacements mémoire dans le microcontrôleur Atmega328p et voir si nous pouvons mieux comprendre comment les choses sont stockés, où ils sont stockés et comment les pointeurs et les tables de r
Tutoriel d’assembleur AVR 4

Tutoriel d’assembleur AVR 4

Bienvenue au didacticiel numéro 4 !Dans ce tutoriel, nous allons construire un circuit qui simulera l'enroulement des deux dés. Ensuite, nous allons tout d'abord écrire un programme de force brute qui fait le travail. Puis nous permettra de simplifie
Tutoriel d’assembleur AVR 3

Tutoriel d’assembleur AVR 3

Bienvenue au didacticiel numéro 3 !Avant que nous commencions, je tiens à faire un point philosophique. N'ayez pas peur d'expérimenter avec les circuits et le code que nous construisons dans ces tutoriels. Changer les câbles près, ajouter de nouveaux
MRETV - vidéo, stéréo Sound et beaucoup plus d’un Arduino standard !

MRETV - vidéo, stéréo Sound et beaucoup plus d’un Arduino standard !

MRETV - vidéo, stéréo Sound et beaucoup plus d'un Arduino standard !Maintenant mis à jour pour Arduino 1.6.6 novembre 2015 !Utiliser seulement deux résistances et deux diodes pour générer la vidéo plein écran. Texte 47 x 29 de 8 x 8 caractères, doubl
Comment charger des programmes à un Arduino UNO de Atmel Studio 7

Comment charger des programmes à un Arduino UNO de Atmel Studio 7

Dans ce court Instructable, nous allons apprendre à charger un programme à une carte Arduino UNO utilisant Atmel Studio au lieu de l'IDE Arduino. Cela est utile lorsque vous avez besoin élaborer un programme à l'aide de plusieurs fonctions avancées o
Star Trek sonnette Hack

Star Trek sonnette Hack

J'ai toujours été un fan de la Star Treks et comme tel, j'étais très excité lorsque mon colocataire ramené un panneau la comm série style Star Trek original. Je n'avais jamais vu l'un d'entre eux, mais une recherche rapide nous a pris sur le site de
Carte de développement pour microcontrôleurs Attiny84

Carte de développement pour microcontrôleurs Attiny84

Il s'agit d'une carte de développement pour microcontrôleur Attiny84. Tha Attiny84 puce possède 11 broches adressables avec l'IDE Arduino, 8k de mémoire flash pour le stockage de programme et 512 octets de mémoire vive disponible pour les variables d