Tutoriel d’assembleur AVR 7 (9 / 12 étapes)

Étape 9: Code et vidéo pour la version 1

J’ai joint mon code pour cette première version du pilote du clavier. Dans celui-ci, vous devrez appuyer sur la touche et puis appuyez sur le bouton afin de provoquer l’ADC lire l’entrée à partir du clavier. Ce que nous aurions plutôt ya pas de bouton mais plutôt le signal pour effectuer la conversion vient de la keypress lui-même.

Exercice 3: Assembler et envoyer ce code et essayez-le. Vous devrez peut-être modifier les seuils de conversion différents pour qu’ils correspondent à vos tensions keypress puisqu’elles diffèrent probablement de la mienne. Que se passe-t-il si vous essayez d’utiliser une entrée du clavier pour le ADC0 et pour la broche d’interruption externe au lieu de grâce à un bouton ?

Je vais joindre également une vidéo de l’opération de cette première version de notre chauffeur keypress.

Vous remarquerez que dans mon code il y a une section lors de l’initialisation du pointeur de pile. Il existe des registres différents que nous pourrions vouloir push et un pop de la pile lorsque nous sommes manipuler les variables et ce-pas, et il y a aussi des registres que nous pourrions vouloir sauver et restaurer plus tard. Par exemple, SREG est un registre qui n’est pas conservé à travers des interruptions, ainsi que les différents indicateurs qui sont présentées et effacées à la suite des opérations peuvent être modifiées si une interruption se produit au milieu de quelque chose. Ainsi, il est préférable si vous poussez SREG sur la pile au début d’un gestionnaire d’interruption et ensuite éclater il à nouveau à la fin du gestionnaire d’interruption. Je l’ai placé dans le code pour montrer comment il est initialisé et d’anticiper comment nous en aurez besoin plus tard, mais puisque nous ne se soucient pas qu’advient-il SREG lors des interruptions dans notre code que je n’utilise la pile pour cela.

Notez également que j’ai utilisé l’opération de décalage pour définir différents bits dans les registres lors de l’initialisation. Par exemple dans la ligne:

 ldi temp,(1<<ISC01)|(1<<ISC00) ; comment to fix Instructables formating issues: >>>> sts EICRA,temp 

Le "<<" commande dans la première ligne de code ci-dessus est une opération de décalage. Il faut essentiellement le nombre binaire 1, qui est 0b00000001 et déplacements, qu'il a laissé par le montant de la ISC01 numéro. Il s’agit de la position de l’embout nommé ISC01 dans le registre EICRA. Étant donné que ISC01 est de type bit 1, le numéro 1 est décalé vers la gauche 1 position pour devenir 0b00000010. De même est le second, ISC00, bit 0 de EICRA et le changement du numéro 1 est donc une position zéro à gauche. Si regard prend une autre Regardez le fichier m328Pdef.inc que vous avez téléchargé dans le premier tutoriel et utilisent evrr depuis, vous verrez que c’est juste une longue liste de déclarations « .equ ». Vous y trouverez que ISC01 est égal à 1. L’assembleur remplace chaque occurrence de celui-ci avec 1 avant même de monter quoi que ce soit. Ils sont juste des noms pour les forets de Registre pour nous aider les humains lire et écrire du code. Maintenant, la ligne verticale entre les opérations de deux Maj ci-dessus est un opérateur logique « ou » opération. Voici l’équation :

0b00000010 | 0b00000001 = 0b00000011

et c’est ce que nous sommes (en utilisant « ldi ») un chargement dans temp. La raison de gens utilisent cette méthode pour charger les valeurs dans un registre est qu’il permet d’utiliser le nom de la fraise au lieu d’un simple numéro et cela rend le code est beaucoup plus facile à lire.

Il y a aussi deux autres techniques, nous avons utilisé. Nous utilisons les instructions « ori » et « andi ». Ceux-ci nous permettent d’activer et désactiver les bits respectivement sans changer le quelconque des autres bits dans un registre. Par exemple, lorsque j’ai utilisé

 ori temp,(1<ADC0D) ; comment to fix formating: > 

ce temp s « ou » avec 0b00000001 qui met un 1 dans le bit de zéro et laisse tout le reste inchangé. Aussi, lorsque nous avons écrit

 andi temp,0b11111110 

Cela modifie le bit de zéro de temp à 0 et laisse tout le reste inchangé.

Exercice 4: vous devez passer par le code et assurez-vous de bien comprendre chaque ligne. Vous trouverez peut-être intéressant de trouver les meilleures méthodes pour faire des choses et d’écrire un meilleur programme. Il y a une centaine de façons aux choses de code et je suis assez confiant, que vous pouvez trouver beaucoup mieux que la mienne. Vous pouvez également trouver des omissions et des erreurs (Dieu ne plaise!). Dans ce cas, je voudrais bien entendre à leur sujet, alors ils peuvent être fixés.

Bon, maintenant nous allons voir si nous pouvons nous débarrasser de ce bouton superflu...

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 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