L'essentiel d'Assembleur

Faire clignoter sa LED

Testez gratuitement nos 1257 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
L'objectif va être de faire clignoter une LED à fréquence de 0,5Hz. Vous allez devoir implanter des variables dans votre code. Abordez également le cadencement et les microcycles.
06:02

Transcription

Dans cette vidéo, nous allons nous attarder au Lab3. Donc, je l’ai ouvert de la façon habituelle et nous allons directement, donc, sur le lien Objectifs. Alors, quel va être l’objectif ici de ce Lab ? Ça va être simplement de faire clignoter une LED. Alors, pour ça il va falloir comprendre comment faire faire perdre du temps en fait à un microcontrôleur et pourquoi est-ce aussi compliqué. Comment va-t-on faire pour alléger en fait un peu notre programme en scindant ici en deux parties notre fichier source ? Comment fait-on aussi pour déclarer une équivalence et déclarer des variables et utiliser des instructions supplémentaires ? Alors par exemple, CLRF, qui est très facile d’utilisation, qui met tous les bits du registre à 0 ; MOVF, qui déplace en fait le contenu d’une variable vers une autre variable ou dans un registre SFR ; XORLW, qui est en fait un OU EXCLUSIF bit à bit, avec comme comparaison le registre de travail. Ensuite, nous avons aussi le Decrement if, skip is zero. Donc, on va faire une décrémentation en pas à pas. Et puis, vous avez aussi l’instruction NOP qui ne sert strictement à rien. En fait, elle sert juste à faire écouler un cycle d’instructions supplémentaires. Puis nous ferons une simulation sous MPLABX avec le STOPWATCH où nous verrons un peu comment l'utiliser et valider notre temporisation, et puis nous ferons en fait une visualisation sous Proteus. Alors, d’abord pourquoi est-ce si compliqué de faire perdre du temps à notre microcontrôleur ? Simplement parce qu'il est cadencé soit par un oscillateur interne, soit par un oscillateur externe, un Quartz, un réseau hertzien, etc. Donc, il est toujours en mouvement. Vous ne l’arrêtez jamais, sauf quand il est en mode SLEEP. Et encore le mode SLEEP, c’est un mode de sommeil, mais il continue encore à travailler sur lui-même. Alors, pour cela, si on fait incrémenter ou décrémenter en fait une variable de 0 à 255, donc parce qu’on fonctionne sur 8 bits, si on travaille avec un quartz de 4 MHz, ça nous fait 250 microsecondes. Ce qui est assez peu quand même. Donc, l’idée c’est d’imbriquer deux variables l’une dans l’autre. Et puis dans ce cas là, ça fait que si on compte donc 256 x (parce que le 0 compte), donc ça nous fait 256 x 256, ça nous fait 65536 microsecondes. Donc, ça reste déjà beaucoup plus abordable, mais ça ne fait jamais que 655,536 millisecondes si toutes les instructions comptent pour un cycle d’instructions. Le contre-exemple notamment c’est le GOTO qui compte deux cycles. Et puis, on se dit : si je le fais 7 fois par exemple, j’arrive donc à 458,752 ms. Et vu que nous aurons des GOTO dans notre boucle, en fait, on va dépasser allègrement les 500ms. Donc, pour ça, il va falloir revoir notre estimation à la baisse, et ça on va faire du STOPWATCH qui va permettre un peu, si je puis dire, de rectifier l’assaisonnement. Et nous ferons que cinq fois une boucle, et non pas sept fois. Alors, la fonction OU EXCLUSIF. Donc, si on rappelle un peu la table de vérité, c’est : si j’ai mes deux entrées qui valent 0 ou mes deux entrées qui valent 1, la sortie vaut 0. Si j’ai une des deux entrées qui vaut 1 et l’autre 0, la sortie vaut 1. Donc, lorsque je vais faire mon premier passage, je vais faire un MOVF avec cette valeur littérale que je vais mettre dans w et puis je vais faire le OU EXCLUSIF. Donc : 1 OU EXCLUSIF 1, ça va nous faire 0. Donc au prochain passage, que va-t-il se passer ? En fait, w sera à 0. On va repasser dans la même instruction évidemment, on ne va pas la charger de façon dynamique, mais cette fois-ci, quand je vais passer au 2ème passage, w sera à 0 non plus là à 1. Donc moralité : 0 OU EXCLUSIF 1, ça va nous donner 1. Parfait ! Donc, au 3ème passage, je vais avoir : 1 OU EXCLUSIF 1, donc vous m’avez compris ça va vous donner 0. Donc, de façon alternative, à chaque fois que je vais passer, je vais pouvoir changer d’état. En ce qui concerne donc la décrémentation, en fait, là, on décrémente de 1 et on vérifie dans la foulée si le résultat vaut 0. Attention, on le fait dans cet ordre là. Alors, c’est ce que permet d’effectuer, donc, cette instruction. Donc, par exemple ici, après décrémentation, ma valeur ne vaut plus celle-ci en binaire mais vaut 1. Donc, c’est faux, si c’est faux, je suis ici, et puis, si c’est vrai dans ce cas là j’arrive ici. Alors, c’est ce qui est indiqué dans le Datasheet ici. Mais bon, c’est marqué de façon un petit peu moins explicite, il faut pouvoir un peu traduire. Mais attention ! Si on prend cette exemple-ci, après décrémentation de 1 on arrive à cette valeur là. Dans ce cas là, ça devient vrai. Mais si je décide de ne rien faire ici, je vais faire un « NOP », et puis après, je vais continuer. Donc, dans tous les cas en fait, je vais me retrouver dans GOTO ailleurs. Puisqu’en fait ça va être vrai et après je vais glisser. Donc la bonne pratique, c’est de dire si je fais un test et qu’il est vrai ou qu’il soit faux, s’il est vrai, je vais là-bas et puis si c’est faux je vais ailleurs. Ça c’est une bonne pratique lorsque vous avez une comparaison à effectuer.

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 !