Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

L'essentiel d'Assembleur

Faire clignoter une LED sur interruption

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Ici, vous allez passer à la mise en pratique. Mettez en œuvre le timer 0 pour faire clignoter votre LED à fréquence de 0,5Hz.
05:25

Transcription

Donc dans notre programme, mais pas grand-chose ne change sur l'entête, et ici donc nous n'allons garder que la LED. Toujours connectée donc sur la broche 0 du PORTA. Nous nous sommes débarrassés du bouton poussoir. Parce que là pour le coup, on n'en a plus besoin. Et puis nous allons déclarer deux équivalences plutôt que de mettre une valeur 95 et puis une valeur 8 comme nous l'avons calculé précédemment. J'ai mis, chargement_TMR0 et compteur. À partir de là il va falloir aussi créer une variable qui sera compteur de passage. Alors, je vais en profiter pour la mettre en zone visible depuis n'importe quelle banque donc à l'adresse 70 là par défaut. Alors après il faut savoir aussi qu'on peut créer des macros. Donc avec ces noms qui sont attribués, MACRO et ENDM. Là pour l'instant nous n'allons pas les utiliser, mais elles nous serviront un petit peu plus tard. Donc goto START. Là je passe sur ma routine d'interruption et je vais directement à la configuration de l'interruption. Donc là pour l'instant rien ne change sur ces lignes-là, comparé à notre programme précédent. Mais cette fois-ci, au lieu de mettre INTE donc à 1, et bien c'est timer0 interrupt enable que nous allons mettre à 1 pour l'autoriser à fonctionner en interruption. Et puis après nous avons OPTION_REG. Alors, c'est ce que je vous ai montré dans la précédente vidéo. Là j'ai fait un « copier-coller » du datasheet pour bien savoir ce que l'on met à 1, ce que l'on met à 0. Donc on retrouve bien 1, 1 OK. Ici, peu importe hein, donc on avait dit 0, 0. Et puis, encore un 0 ici. Le prescaler, on veut l'assigner au timer. Pas de soucis. Donc encore un 0. Et puis le prescaler on veut qu'il soit mis à fond. Donc compter, 256 instructions pour être incrémenté de 1. Et donc c'est au bout de 256 x 256 qu'il y aura débordement en fait de ce timer, donc interruption. Donc concernant les différents registres, je n'ai strictement rien changé. Et par contre, je suis passé sur l'initialisation du timer. Donc j'ai chargé movlw avec la valeur littérale que j'ai mis dans ma variable qui s'appelle compteur de passage. Et puis j'ai préchargé mon timer. Mon timer donc, j'ai mis movlw donc chargement de timer, ici c'était 95, et je le mets, dans timer. Donc voilà alors, le programme principal ne fait rien. Sauf ici. Il faut absolument retirer le « sleep » parce que sinon, comme je vous l'ai dit le timer est gelé. Donc si on repasse maintenant à l'intérieur de notre code d'interruption, nous allons refaire la même batterie de test. Alors, toujours avec code 004 et puis cette fois-ci on va travailler sur le timer0 donc qui se trouve toujours au sein du registre INTCON. Donc, on voit si l'interruption est autorisée, si elle est en cours. Si elle est en cours, on sort de l'interruption sans oublier de mettre notre flag à 0. J’insiste très très très très très lourdement. Parce que c'est vraiment totalement indispensable, sinon votre microcontrôleur est condamné vraiment à rester bloqué à l'intérieur de cette routine. Donc là il faudra simplement le mettre hors tension il n'y a pas d'autres solutions. Alors, une fois que tout ceci est vrai en fait, je vais décrémenter mon compteur de passage. Et puis s'il vaut 0 et bien je vais à la sortie donc de mon interruption. Si c'est vrai, dans ce cas-là je change d'état. Donc, j'aurais pu très bien mettre le movlw directement derrière, mais je trouve que c'est beaucoup plus pédagogique de le faire comme ceci. Si c'est faux je vais là, si c'est vrai je vais là. Donc, je vais là. Donc, le movlw, je fais comme à l'accoutumée avec mon OU exclusif. Et donc je vais à chaque fois changer d'état. Je ne vais pas oublier une fois que je serai rentré dans cette interruption, dans cette phase où j'aurai compté huit fois avant de passer ici en fait, j'aurai huit fois l'interruption et au bout de la huitième fois, il faut que je réinitialise le tout, évidemment. Comme je l'ai fait ici au tout début de mon programme principal, voilà, pour retrouver en fait le même état au départ que l'état durant l'interruption. Donc voilà, et après naturellement donc, j'efface mon flag. Ça c'est systématique : quoi qu'il arrive, il faut l'effacer. Donc voyons un petit peu dans Proteus ce que ça peut nous donner. Donc cette fois-ci je me suis débarrassé des boutons poussoirs, j'ai toujours laissé donc mes pastilles, pour éviter de mettre des fils partout. Et puis là on vérifie. Donc, j'ai chargé le Lab9. Toujours à 4 MHz et puis j'envoie. Voilà, et vous voyez que ça clignote assez bien. En regardant ici le timer, vous voyez que l’on est plutôt précis. On est même beaucoup beaucoup plus précis qu’à faire des temporisations dirais-je plus manuelles. Donc, laissons faire le périphérique. Et là vous voyez que si j'appuie sur le master : rien, évidemment, tant que je ne suis pas au niveau haut, je suis en reset. Voilà concernant donc, l'interruption sur le timer0.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !