Tutoriel d’assembleur AVR 4 (4 / 9 étapes)

Étape 4: Subroutines

Quelque chose que vous remarquerez immédiatement sur la façon dont j’écris le code peut être vu en regardant la section après l’étiquette de "principale:"

Notez que tout est contenu entre l’étiquette « principal: "vers le haut et le rjmp « principale » en bas. Cela signifie qu’il n’y a pas d’échappatoire à cette section autrement que par les déclarations de « q » à l’intérieur. Maintenant jeter un oeil à une des instructions q, « q button_push » cela nous saute à la section sous le label « button_push »

Vous voyez que cette section est également contenue entre une étiquette et un « RPE » afin que le PC est également piégé à l’intérieur ici aussi. Cette section de code est appelée une « sous-routine » depuis que je l’appelle du bloc principal, il exécute une tâche, et puis il « reviens » à principal à l’endroit où il était appelé. Ainsi à l’aide de sous-routines comme ceci permet de bloquer le code en morceaux qui exécutent certaines tâches et puis retour à où ils étaient appelés. Les avantages de ce mode de codage sont les suivantes :

  1. Si vous vous trouvez en effectuant la même tâche plusieurs fois vous pouvez seulement appeler la sous-routine plutôt qu’ont le même ensemble de commandes répétées encore et encore. Le résultat est un programme court qui fait la même chose.
  2. Il est plus facile de lire le programme et comprendre ce qu’il fait à la différence du « code spaghetti » que certaines personnes écrivent où tout est une longue section qui saute autour en arrière, çà et là, dans tous les sens jusqu'à ce qu’une personne a besoin d’une cruche de whisky assise à ses côtés lors de la lecture pour conjurer la folie.
  3. Il est beaucoup plus facile à déboguer ! Si votre programme ne fonctionne pas et que vous n’avez aucune idée pourquoi (ce qui est généralement le cas lors de l’écriture en langage assembleur) vous pouvez facilement faire un travail de détective et isoler l’erreur à l’un des sous-routines et puis le comprendre de là. Le résultat est des heures de temps gagné.

Ainsi, vous verrez que j’utilise sous-routines « régulièrement » dans mes programmes;)

Exercice 1: examiner la sous-routine que j’utilise pour afficher les valeurs des dés de divers voyants s’allumant. Vous verrez que je suis réellement renversant en arrière d’un dé à l’autre. Si vous modifiez les retards dans la sous-routine « afficher », vous verrez ce scintillement. Le fait que le œil ne peut voir scintille qui est trop rapides me permet d’alimenter deux LED du même fil et juste flip en arrière très rapidement afin que le œil les voit tous les deux comme étant tout le temps. De cette façon au lieu d’avoir besoin d’un port de sortie pour chaque LED (donc un total de 16 dont le 0V et les ports de 5V) nous avons seulement besoin de 9. Pouvez-vous penser à une meilleure façon de le faire afin qu’il ne faut pas utiliser 7 de nos ports pour alimenter ces dés ? Quant à « Charlieplexing des voyants » comme je le faisais dans mon « instructable » sur Charlieplexing ? ( Que vaudrait la peine à long terme avec seulement 14 LED ?

La prochaine chose que nous allons commencer à utiliser est « Macros ».

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 1

Tutoriel d’assembleur AVR 1

J'ai décidé d'écrire une série de tutoriels sur la façon d'écrire des programmes de langage d'assemblage pour le Atmega328p qui est le microcontrôleur utilisé dans l'Arduino. Si les gens restent intéressées, je vais continuer à mettre un une semaine
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 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