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

Utiliser le télérupteur à LED sur interruption

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Mettez en œuvre une interruption pour effectuer le même montage que précédemment. Il s'agit aussi de ne plus utiliser de ressources CPU en le mettant en mode veille.
06:05

Transcription

Donc nous voici dans le Lab8. Donc, dans ce lab, l'objectif en fait est d'utiliser un bouton poussoir sur la broche INTE, sur laquelle en fait on va créer une interruption pour allumer et éteindre la LED sur chaque front descendant. Alors, nous allons commencer notre template. Tout d'abord à changer en fait la référence du PIC. Ici nous allons travailler donc avec le 12F1840. Et puis nous allons créer tout de suite des define qui seront pris en charge par le compilateur. Ce ne sont pas des instructions je le rappelle une fois de plus. Et nous allons mettre donc la LED, nous allons la connecter donc à la broche 0 du PORTA, et notre bouton poussoir nous allons le connecter à la broche 2 du PORTA. Après, j'ai décidé de faire une zone de déclaration de variables alors notamment celle qui est visible par toutes les banques donc qui est comprise entre l'adresse 70 et 7F. Alors, on aurait pu mettre aussi les autres banques, mais pour l'instant nous n'en avons pas besoin. Alors nous commençons notre programme forcément à l'adresse zéro. On va à goto START et puis entre deux nous avons la routine d'interruption. Mais là j'y reviendrai plus tard. Je reviens directement de façon séquentielle comme le fait le microcontrôleur lors de sa mise sous tension. Donc nous arrivons à l'étiquette START, et à partir de là, nous allons utiliser banksel, pour pointer sur INTCON. Ce registre INTCON va nous permettre en fait de configurer notre interruption. Alors, d'abord on va mettre le bit GIE de ce registre à 1, bit setf et bit clrf pour mettre le bit PEIE donc ça c'est pour autoriser en fait toute source d'interruption, et ça c'est pour cette fois-ci désactiver les sources d'interruption périphériques. Mais ce n'est absolument pas une obligation. C'est plus par sécurité. Et enfin nous allons autoriser, dans ce registre la source d'interruption qui est cette fois-ci, INTE. Donc, nous aurions pu faire ça en simplement deux instructions en chargeant de façon littérale la valeur binaire équivalent en fait à l'ensemble de ces bits, et puis le mettre dans INTCON, mais bon pour la première fois ici, j'ai trouvé ça un petit peu plus pédagogique. Ensuite, nous allons changer de banque . Alors nous allons pointer maintenant sur OPTION_REG et puis nous allons lui dire : l'interruption aura lieu à chaque fois qu'il y aura un front descendant. Après, il faut configurer notre PORTA. Donc, pour ça on va aller pointer sur TRISA. On va mettre à 0 les broches qui nous intéressent pour les mettre en sortie et puis à 1 en entrée. Sachant que ici ces broches-là n'existent pas sur notre PIC. Donc que vous y mettiez 0 ou 1, ça revient strictement à la même chose. Ensuite, nous allons faire juste un clrf du PORTA, clrf de ANSELA et là je vais aborder un point très important. En effet, ce registre permet en fait de configurer soit en mode analogique soit en mode digital les broches qui ont en leur sein donc un convertisseur analogique numérique. Seulement ici, par défaut lors de la mise sous tension du microcontrôleur, si vous n'exécutez pas cette instruction, et bien toutes les broches comportant un convertisseur analogique numérique, sont en analogique numérique. Or, nous pour l'instant on ne veut travailler qu'en mode digital. Donc tout ou rien. Donc pour ça il faut absolument faire un clrf, pour passer en digital. Puis donc, nous allons effacer notre buffer et puis nous allons regarder notre programme principal où il fait dodo. Très bien, il ne sera activé que lorsqu'il y aura une interruption. Alors justement, cette routine d'interruption on a dit que le vecteur d'interruption venait à l'adresse 4. Alors pour ça on va préciser en fait au compilateur qu'il se branche bien à l'adresse 4, alors ça c'est certain c'est fait de façon hardware, mais qu'il prenne en compte le code qui va suivre. Donc c'est lui après qui va aller le placer là où il le faut dans le plan mémoire. Alors vous allez faire un banksel toujours, INTCON, et puis là vous allez tester deux choses. Déjà vous allez tester si l'interruption est autorisée. Si elle est autorisée, dans ce cas-là vous allez glisser sur l'instruction suivante. Et vous allez regarder si elle est en cours. Ce qui est assez peu probable. Donc si elle est en cours, dans ce cas-là c'est faux vous ne pouvez pas traiter en fait l'interruption en tant que telle. Donc vous allez partir, vous allez sortir de l'interruption. Une fois de plus vous allez pointer donc sur le registre INTCON, et surtout vous n'allez pas oublier d'effacer le bit, de flag d'interruption donc INTF pour INT. Le remettre à zéro sinon vous allez rester bloqués indéfiniment dans votre interruption. Vous ne pourrez pas en sortir. Alors, que va-t-on faire donc dans le programme principal ? Et bien, simplement un OU exclusif, pour faire à chaque fois un 1, un 0, un 1, un 0. Voilà donc j'utilise en fait la même méthode que vu précédemment. Donc voyons un peu ce que cela donne dans Proteus. Donc j'ai préparé, vous voyez ici notre PIC. J'ai fait en fait des raccourcis LED - LED, MASTER CLEAR - MASTER CLEAR, OSCILLATEUR - OSCILLATEUR. Même si l'oscillateur ne sert pas à grand chose une fois de plus puisqu'on peut le configurer ici. Et puis, voilà. On peut lancer l'annulation. Et on voit que je suis sur un front montant et il ne se passe rien. Un front descendant, j'allume. Un front montant il ne se passe rien. Un front descendant, j'allume. Voilà en ce qui concerne donc notre programme qui fonctionne ici, là, parfaitement.

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 !