Implanter un algorigramme avec le logiciel EditAlgo

1. Définir la fonction de l’algorithme.

Exemple a : On souhaite faire clignoter une diode à la période 2s.

Exemple b : On souhaite compter les impulsions produite par le mouvement d’une roue d’entée entre les bras d’un photocoupleur en fourche (codeur incrémental)

Exemple c : On souhaite réaliser un dé magique : l’utilisateur appuie sur un bouton un instant puis le lâche. Aussitôt un résultat s’affiche sur un afficheur 7 segments.

2. Définir les entrées sorties du microcontrôleur et les variables internes utiles.

Exemple a: Une seule sortie, B0 qui sera relié directement à la diode. B0=1 : Diode allumée. B0=0 : Diode éteinte.

Exemple b : A0 en entrée, reçoit l’information du capteur. Bien que ce ne soit pas demandé on peut sortir sur le port B la valeur courante du comptage. Il s’agit donc d’un nombre de 8 bits. On a intérêt a stocker la valeur courante dans une variable interne COMPTEUR.

Exemple c : A0 en entrée reçoit l’information sur l’état du bouton : 1 pour appuyé et 0 pour pas appuyé. L’afficheur 7 segments peut être piloter via un transcodeur BCD 7 segments. Il faut donc seulement 4 bits pour indiquer la valeur du dé de 0 à 6. On utilisera pour cela les bits B4 (poids fort) à B0 du Port B. On a intérêt à utiliser un variable interne DE pour stocker la valeur courante du dé.

3. Dessiner l’algorigramme sur feuille.

La représentation des algorigramme est normalisée. Elle comporte différents éléments de base. Nous n’utiliserons que les éléments suivants.

Entrée et sortie d’un algorigramme. Le programme commence toujours par le Début. Un algorigramme a forcément un début et un seul. Par contre il peut n’avoir aucun élément Fin ou plusieurs. Début et Fin peuvent être utilisés pour définir un sous programme. Ils sont alors les points d’entrée et de sortie du sous programme.

Symbole général pour tout type d’action : faire uns opération arithmétique (+, -) (remarque : * et / ne sont pas prévus dans EditAlgo) ou logique (OU, XOR, NON ? ET) sur des variables, incrémenter un nombre, le déclaer à droite ou a gauche…

Appel de sous programme. Lors d’une procédure souvent répétée, par exemple utiliser des compteurs comptant ‘dans le vide’ pour faire passer le temps et faire ainsi une temporisation. Au lieu de réécrire sans arrêt le programme effectuant cette temporisation, on en fait une fonction que l’on appelle quand on en a besoin. Dans EditAlgo cet élément est représenté par le symbole général.

Entrée – Sortie. Dans la mesure du possible, on récupère les informations en entrées, on les stocke dans des variables internes, on fait tous les calculs sur des variables internes, puis on met à jour les sorties en fonction des résultats obtenus. Cet élément représente les lecture en entrée et écriture en sortie. Cependant, dans le cas de variables simples (informations TOR) de telles complications sont inutiles. Dans EditAlgo, ce symbole est représenté par le symbole général.

Condition. Cet élément représente un test effectué dont on peut dire que le résultat est vrai ou faux. Le test peut être effectué sur un bit (bit=1 ? ; bit=0 ?) ou sur des nombres (nombre 1<nombre2 ? nombre1=nombre 2 ?)

Exemple a :

Cet exemple ne pose pas de difficultés. Remarquez seulement la notation ‘ B0 <-- 0’ qui signifie que l’on place la valeur 0 dans B0.

Exemple b :

Ici, remarquez les deux blocs de condition. Le premier attend que A0 passe à 1 et le second attend que A0 repasse à 0. On détecte ainsi les impulsions de A0. Il faut cependant être sûr que le microcontrôleur ait le temps d’incrémenter avant l’impulsion suivante.

Exemple c :

Cet algorigramme est plus complexe. -On place 0x0F dans DE. C’est une notation hexadécimale, elle est utilisée dans EditAlgo. Habituez-vous à n’utiliser que de l’hexadécimal lorsque vous programmez le microcontrôleur. -Seuls les 4 bits de poids faibles de DE ont une importance. Ils doivent être recopiés dans les 4 bits de poids faibles du port B si possible sans toucher aux 4 bits de poids fort du Port B. C’est la raison d’être de la variable Tampon. Tampon recopie Port B. Le ET 0xF0 est ce qu’on appelle un masque qui place les 4 bits de poids faibles de Tampon à 0 et laisse intact les 4 bits de poids fort. Ensuite le OU permet de recopier les 4 bits de poids faibles de DE sur les 4 bits de poids faibles de Tampon. Les 4 bits de poids forts de DE étant toujours à 0, cela ne pose pas de problème. Au démarrage, on envoie donc 1111 sur l’afficheur, il n’affiche donc rien, c’est ce qu’on veut. -Remarquez que l’on a mis plusieurs opérations dans un même bloc. On peut se le permettre pour simplifier l’organigramme à condition que cela ne nuise pas à la lisibilité. -On attend que l’utilisateur appuie (et donc que A0 passe à 1) -Dès qu’on appuie, DE est initialisé à 0x01 (c’est à dire que le dé est à 1) -Tant que A0 reste à 1 on incrémente la valeur de DE. Si DE devient supérieur à 0x06, on repasse par l’initialisation de DE à 0x01. -Quand l’utilisateur relâche le bouton, on retourne au moment de l’affichage.

Dans ce dé, le hasard est produit par le fait que l’utilisateur ne peut pas maîtriser suffisamment précisément la durée de sa pression pour décider de la valeur du dé.

3. Utilisation de EditAlgo.

Pour lancer EditAlgo, double-cliquez sur EditAlgo.exe La fenêtre ci-contre s’affiche.

La fenêtre se compose d’une barre de menu ; d’une grille de 8x15 éléments sur laquelle vous pourrez représenter votre algorigramme ; Une fenêtre et une commande en bas de la fenêtre dont la signification sera donnée plus loin.

Les étapes suivantes peuvent être effectuées dans n’importe quel ordre.

>

Première étape : Décider des entrées / sorties.

Sur la bande du haut, cliquez sur PortA . Cliquez simplement sur les boutons pour changer les bits du portA en entrée (E) ou en sortie (S) Le bit de poids fort est à gauche. Idem pour le PortB .

Deuxième étape : Définir les variables utilisateur.

Sur la troisième partie de la bande supérieure, vous pouvez définir des variables utilisateur. Tapez simplement le nom de votre variable, sans espace puis tapez Entrée. Vous pouvez également supprimer des variables. Ne laissez pas de ligne vide entre les variables.

Troisième étape : Dessiner l’algorigramme.

Vous pouvez choisir n’importe quelle case en cliquant dessus avec le bouton gauche de la souris. Chaque cas a un numéro qui apparaît si vous laissez la souris immobile un instant au-dessus.

En cliquant-droit, vous faites apparaître ce menu. Il vous permet de choisir entre les différents types d’éléments possibles. Vous avez le choix entre

Elément condition.

Le choix de condition fait apparaître la fenêtre cicontre. Vous pouvez laisser cette fenêtre ouverte ou pas. Vous pourrez toujours la rouvrir grâce au menu Fenêtre .

Quand vous appuyez sur le bouton du haut , les options ci-contre apparaissent. C’est une condition sur un bit. Il faut préciser le nom du registre et le numéro du bit en question. Vous pouvez choisir l’un des registres système (dont Port A et Port B) ou un registre utilisateur. Vous devez préciser quel état vous souhaitez tester : 0 ou 1. Quand vous avez terminé, appuyez Valider .

Quand vous appuyez sur le bouton du bas , les options ci-contre apparaissent. C’est une condition sur un registre. Il faut préciser le nom du registre à tester. Vous pouvez choisir l’un des registres système (dont Port A et Port B) ou un registre utilisateur. Vous devez choisir le test ( =, <>, <, > ) et la valeur de comparaison (à droite), soit un registre soit un nombre. Attention : Si vous entrez un nombre à droite, utilisez une notation hexadécimale. Exemple : pour 28, tapez 0x1C. Quand vous avez terminé, appuyez Valider .

 

Remarque : Chaque fois que vous tapez Valider , vous écrasez l’ancienne programmation de l’élément par la nouvelle.

>

Elément opération.

Le choix de Opération fait apparaître la fenêtre cicontre. Vous pouvez laisser cette fenêtre ouverte ou pas. Vous pourrez toujours la rouvrir grâce au menu Fenêtre .

Très important : Pour gagner de la place, on peut mettre plusieurs opération en un seul élément. Le bouton Ajouter permet d’ajouter des opérations. Si vous avez fait une erreur il faut recommencer avec Effacer ou bien utiliser la fenêtre code (voir plus loin)

Le bouton du haut donne accès aux opérations sur un bit, c’est à dire Mise à 1 ou Mise à 0.

Le deuxième bouton permet de faire des opérations à deux opérandes, c’est à dire +, -, ET, OU, XOR. Attention : Si vous entrez un nombre à droite, utilisez une notation hexadécimale. Exemple : pour 28, tapez 0x1C.

Le troisième bouton donne accès à des opérations à une opérande : NOT, OUI, SHIFTL et SHIFTR (décalage à gauche et à droite) Incrémenter, Décrémenter, SWAP (inversion des 4 bits de poids forts avec les 4 bits de poids faibles) Attention : Si vous entrez un nombre à droite, utilisez une notation hexadécimale. Exemple : pour 28, tapez 0x1C. Remarque : Pour affecter une valeur, par exemple x=0x35, il suffit de faire x=OUI 0x35.

Le bouton du bas donne accès à des commandes particulières :

o Pause 0,1s ?? : Permet de faire une pause de ?? · 0,1s où ?? est un nombre hexadécimal (noter 0x..)

o Pause 5us ?? : Permet de faire une pause de ?? · 5ms où ?? est un nombre hexadécimal (noter 0x..)

o CALL et RETURN sont des instructions assembleur.

o ROUTINE permet d’inclure un sous programme réalisé au préalable : Réalisez le sous programme et enregistrez-le en tant que programme. Le Début et le Fin du sous programme seront sont entrée et sa sortie. Les entrées/sorties du sous programme doivent être les mêmes que celles du programme principal. Les variables utilisateur du sous programme sont automatiquement ajouté au programme principal. Le sous programme est

Les branchements ordinaires.

Ils vous permettent de relier entre eux les éléments. Vous devez d’abord sélectionner la direction du branchement (vers le haut, vers la droite, vers le bas)

Quand vous avez sélectionné le branchement, doublecliquez sur l’élément pour lui donner la courbure souhaitée.

Remarque : Vous pouvez aussi double-cliquer sur un élément opération pour changer sa forme.

Les branchements vers.

Lorsque vous avez besoin de remonter ou bien que dessiner les branchements complexifie trop l’algorigramme, vous pouvez représenter un saut, c’est à die un branchement vers une destination.

Quand vous avez sélectionné Branchement vers, choisissez le numéro de la cellule de destination. Sélectionnez le numéro de l’élément sur lequel vous souhaitez vous brancher, puis appuyez sur Valider . Remarque : Branchez vous directement sur l’élément souhaitez. Inutile de représenter une arrivée pour le saut (élément Branchement depuis . Cet élément est inutile)

Remarque 2 : Tout comme pour les branchements ordinaires, vous pouvez double cliquer sur l’élément Branchement vers pour lui donner la forme souhaitée.

Modification du code.

A chaque élément correspond une portion de code (c’est à dire de programme) Vous pouvez l’afficher grâce à la commande Code du menu Fenêtre .

Vous pouvez modifier ce code. Cliquez sur Modifier , l’écran devient bleu. Faites vos modifications. Quand vous en avez fini, Cliquez sur Valider ou bien Annuler . Remarque : Un fichier résumé est créé automatiquement quand vous enregistrez le programme. Il porte l’extension *.RSU. Pendant la programmation vous pouvez aussi, en laissant le curseur immobile sur un élément, voir un résumé de ce qui a été programmé dans l’élément (le carré représente une tabulation) Par contre, si vous utilisez la fenêtre code pour modifier un élément, la fonction résumé indiquera ‘code modifié’ pour cet élément.

Quatrième étape : Fichier *.ASM.

Grâce à la commande Programme du menu Fenêtre , vous pouvez visualiser le programme assembleur qui sera généré. Vous pouvez réactualiser ce code assembleur grâce à la commande Fichier Asm du menu Programme.

Outils ou bien en fermant et en rouvrant la fenêtre

Vous pouvez voir le résultat grâce à la fenêtre programme. Dans le menu fenêtre , cliquez sur Programme .

Vous pouvez modifier ce code. Cliquez sur Modifier , l’écran devient bleu. Faites vos modifications. Quand vous en avez fini, Cliquez sur Valider ou bien Annuler . Vous pouvez sauvegarder ce fichier en cliquant Sauvegarder .

Cinquième étape : Sauvegardes.

Dans le menu Fichier vous devez sauvegarder le fichier *.ASM. Attention : Le fichier *.ASM n’enregistre pas la structure graphique de votre algorigramme. Si vous voulez la conserver, enregistrez-là avec Enregistrer programme sous… Vous pourrez ensuite la rouvrir avec Ouvrir programme ou même l’utiliser comme sous programme grâce à la commande Routine de l’élément opération.

Sixième étape : Compilation.

Dans le menu Outil, choisissez la commande MPASMWIN. Il s’agit d’un utilitaire Microchip.

La fenêtre ci-contre apparaît. Cliquez sur Browse . Choisissez votre fichier Asm. Cliquez sur Assembl .MPASMWIN lance la compilation.

Si vous obtenez ce genre de message, alors votre programme ne contient pas d’erreur. Il a été compilé avec succès sous forme d’un fichier *.HEX. Vous pouvez passer à l’étape suivante.

 

Si vous obtenez ce genre de message, alors la compilation a échoué. Votre programme contient des erreurs et il vous faut les corriger.

Pour connaître les erreurs que MPASMWIN a rencontré, dans le menu Fenêtre de EditAlgo, cliquez sur Erreur et sélectionnez le fichier *.ERR correspondant à votre programme. La fenêtre, en bas à gauche, apparaît. Généralement, les erreurs sont clairement explicitées. Il suffit de lire attentivement le fichier *.ERR.

Remarque : Les deux messages indiqués ci-contre sont seulement des avertissements et n’empêchent pas la compilation. En fait vous aurez toujours ces deux messages. Ne vous en préoccupez pas.

Quand vous avez corrigé votre programme, enregistrez de nouveau le fichier *.ASM puis réessayez de le compiler.

Septième étape : Transfert du programme sur le PIC16F84 (Microcontrôleur)

Tout d’abord, reliez un programmateur au port série COM1 de votre ordinateur et branchez le programmateur à une carte Microcontrôleur PIC. Le PIC ne doit pas être alimenté et les bits 6 et 7 du Port B doivent être débranchés.

Quand le branchement est fait, lancez I CPROG . ICPROG est un logiciel gratuitement mis à disposition par Bonny Gijzen.

La fenêtre ci-contre apparaît. Vérifiez que en haut à droite, le microcontrôleur sélectionné est bien le PIC 16F84.

Dans Fichier , sélectionnez Open File et choisissez le fichier *.HEX correspondant à votre programme. Si à droite, Oscillator n’est pas XT , il y a un problème. Peut-être vous êtes vous trompé de fichier.

Pour lancer le transfert cliquez sur l’icône représentant un circuit frappé par un éclair. Confirmez votre choix en cliquant OK . Le transfert commence.

Il ne vous reste qu’à tester votre programme avec le microcontrôleur !

cours

Révisé le :07-11-2017| © www.technologuepro.com