L'essentiel d'Assembleur

Découvrir le jeu de lumière permanent avec une interruption

Testez gratuitement nos 1324 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez implanter une interruption de niveau bas dans votre programme. Il s'agit d'interrompre K2000 sur le front montant de INT1 et d'effectuer un battement des 16 LED.
05:58

Transcription

Dans cette vidéo je vais vous montrer comment effectuer, donc, une interruption non hiérarchisée, donc, de niveau 1. Donc pour cela j'ai créé une équivalence, avec ce mot binaire là, pour faire un jeu de lumière. Et puis j'ai besoin de deux compteur, en fait, qui va être compteur long, on va dire, pour effectuer une temporisation lente qui va servir pour la routine principale K2000 et puis une qui sera plus rapide. Alors d'abord il faut savoir qu'on va devoir déclarer d'autres variables si vous voulez sauvegarder du contexte supplémentaire. Je vous l'ai mis pour info mais nous ne l'utilisons pas dans notre programme. Par contre ici, compteur et puis l'état des ports avant l'interruption, il faut absolument que nous puissions les enregistrer. Donc nous n'avons pas de macro et puis nous allons directement à l'étiquette star. Donc l'étiquette star, ici je fais quoi ? J'autorise comme à l'accoutumée les interruptions, et puis les interruptions périphériques, je les désactive. Par contre j'active INT1 qui ne fait pas partie des interruptions périphériques. Voilà je fais le bit CTF. Et puis dans Intcon 2, on me demande si finalement je veux le faire sur front montant ou front descendant. Là, j'appuie sur front montant, pourquoi pas. Alors après j'effectue en fait une remise à zéro de tous mes registres et puis là en fait je mets tout en sortie. Vous allez dire : oui, mais on vient de déclarer une interruption sur INT, donc il va bien falloir une entrée. En fait ça va se faire automatiquement, dès que vous déclarez l'interruption sur INT et 0, 1, 2, etc. la broche va se mettre en entrée même si vous l'avez configurée en sortie ici dans votre code. Donc après, rien ne change, sauf que j'ai un premier type de délai dans ma boucle principale, je dirais, et puis un délai long comme vous avez pu le voir, en fait, dans l'interruption. Le délai tout court est là et le délai long en fait, c'est le même. Cette fois-ci j'ai mis un 4 au lieu d'un 1, pour avoir environ une seconde. Alors passons tout de suite maintenant à notre interruption, savoir un peu ce qui se passe. Alors là il va falloir faire la même chose que d'habitude, tester si l'interruption est bien en service, si le fly est bien positionné, sinon on sort de l'interruption et puis sinon, en fait il y à la sauvegarde automatique qui se fait des registres vitaux et vous pouvez sauvegarder des registres supplémentaires. Alors il y a une instruction extrêmement importante et puis fort conviviale sur l'EPI 18, c'est le move effet, c'est-à-dire que vous n'êtes plus obligé de passer par le registre de travail pour, en fait, transférer un contenu, ce qui permet d"alléger déjà énormément l'écriture du code. Donc pour cela, en fait, on fait ceci pour toutes nos variables. Donc notre compteur là où délai long je mets la même chose mais avec le mot buffer, et puis pareil pour mes ports, mes ports je les mets dans les buffers. Je fais le call délai pour faire l'anti-rebond lié à mon INT éventuellement Si vraiment notre interruption était très brève, mais là ce n'est pas le cas. et puis je fais d'abord un clear de mes ports D et E pour pouvoir faire mon jeu de lumière. Donc j'appelle le jeu de lumière, je le mets sur le port D, j'appelle ce même jeu de lumière, je le mets sur le port E. Après je fais un call délai long cette fois-ci, et puis après je vais utiliser une nouvelle instruction qui est COM F, donc complément de F. Donc c'est-à-dire que je vais inverser tous les bits que j'avais précédemment sur le port D. De même sur le port E, donc ça va me donner en fait un jeu de lumière qui va être clignotant, donc de 101010 je vais passer de 010101 ; enfin, vous m'avez compris. Donc je fais ça plusieurs fois, et à la fin, donc, restauration de contexte qui va se faire automatiquement quand je vais sortir de mon interruption, par le biais en fait de la commande Fast, et entre deux, par contre, il faut que je restaure manuellement en fait, mes différents registres, qui m'étaient vitaux. Donc buffers cette fois-ci je les remets dans les registres d'origine, et puis voilà, je fais ça pour tous les registres qui m'intéressaient. Pour revenir exactement au même endroit. Et surtout, avant de sortir, on n'oublie jamais d'effacer le flag d'interruption. Vérifions tout de suite sur Prothéus ce que cela nous donne. Donc en fait, ici j'ai INT0, INT1, RB2, RB3, donc INT1 est ici, et puis je vais faire un petit zoom arrière pour voir au niveau des leds ce qui se passe. Donc j'appuie. Donc à partir de là vous voyez j'ai quelque chose d'assez lent J'ai toujours mon petit chenière voilà Et puis là on a dit que dès que j'avais un front montant, tac ! j'ai interruption. Et là, regardez bien le niveau de la LED en fait il revient exactement au même endroit où là où il en était parce que nous avons fait une sauveguarde supplémentaire de nos contextes. C'est-à-dire, ici, de notre port D et de notre port E. Donc évidemment ça fonctionne exactement très très bien.

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 !