année 201/201 Durée : 3h00 PROGRAMMATION FLOWCODE Structures de base On utilise le logiciel « Flowcode V3 » en mode simulation. Plus tard, il sera possible de transférer le programme dans un microcontrôleur PIC de chez Microchip. 1. Lancement du logiciel FLOWCODE V3 L'outil de développement utilisé est le logiciel FLOWCODE de chez MULTIPOWER. Il permet de programmer directement en algorigramme. Pour lancer le logiciel, double-cliquez sur l'icône Flowcode V3 . La fenêtre principale s'ouvre : Choisir " Crée un nouvel algorigramme FlowCode " puis cliquez sur Ok. Vous devez maintenant choisir le microcontrôleur que vous allez programmer à partir de Flowcode. Choisir le microcontrôleur " 16F84 ". Ce microcontrôleur est un circuit intégré de 18 broches. Il intègre principalement un microprocesseur, de la mémoire RAM, de la mémoire EEPROM, et des ports d'entrées / sorties : – le port A de 5 bits : RA0 à RA4 – le port B de 8 bits : RB0 à RB7 Durant le TP, vous allez connecter des leds et des interrupteurs sur ces ports, programmer le microcontrôleur et tester vos programmes à l'aide du simulateur de Flowcode. Une aide sur flowcode guide_flowcode.pdf. ALGORITHMIQUE ET LANGAGES est fournie par un guide : 2. Exemple : allumer une led - fichier led.fcf L'objectif est d'allumer la première led. L'algorithme est le suivant : début Écrire la valeur 1 sur le PORT B fin On donne l’algorigramme suivant : double-cliquez pour définir les propriétés Vous connecterez les leds entier. sur le port B du PIC. Cliquer sur la flèche ↓ puis Connexions et choisir le PORT B 2.1 Quelle est la structure algorithmique employée dans cet exemple ? ………………………………………………..........…………………………...................……………………… 2.2 Saisir l'algorigramme et lancer la simulation en cliquant sur l'icône ou en appuyant sur la touche F5. Faire valider par le professeur. 2.3 Modifier le programme afin d'allumer uniquement la led 4. Faire valider par le professeur. 2.4 Modifier le programme afin d'allumer les leds 3 et 7. Faire valider par le professeur. ALGORITHMIQUE ET LANGAGES 3. Les interrupteurs version 1 – inter1.fcf L'objectif est de recopier l'état de 5 interrupteurs sur les leds. Un interrupteur en position ON allume la led correspondante. Le programme doit s'exécuter à l'infini. Vous connecterez 5 switches de type "bascule" au PORT A ( ↓ puis Propriétés ), les leds étant connectées sur le PORT B comme dans l’exercice précédent. Vous utiliserez une variable pour passer de la lecture des interrupteurs vers l’écriture sur les leds. Remarque : répéter à l'infini est une « Boucle » tant que, sans condition de sortie ou avec une condition de sortie qui ne sera jamais satisfaite (1=1). 3.1 Écrire l'algorithme. ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… 3.2 Écrire le programme inter1.fcf sous Flowcode. Tester et faire vérifier par le professeur. 3.3 Modifier le programme afin d'allumer la led si l'interrupteur est en position OFF. Pour cela vous utiliserez un bloc CALCUL où vous complémenterez la variable utilisée avec l'instruction NOT. Ex : TOTO = NOT (TOTO) Tester et faire valider par le professeur. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 4/11 4. Les interrupteurs version 2 - inter2.fcf L'interrupteur 0 commande toutes les leds. Lorsqu'il est en position ON, elles s'allument ; elles s'éteignent lorsqu'il repasse en position OFF. Ceci peut importe la position des autres interrupteurs. Le programme s'exécute à l'infini. Il vous faut utiliser le principe du masquage : sur 8 bits en entrée, on ne veut tester que le bit 0. Mot à tester 27 26 25 24 23 22 21 20 X X X X X X X Bit 0 ET logique Masque 0 0 0 0 0 0 0 1 Résultat 0 0 0 0 0 0 0 Bit 0 En faisant un ET logique, c'est-à-dire bit à bit, entre le mot de 8 bits à tester et le masque (ici 00000001), le résultat sera nul si le bit0 est 0 et sera non nul si le bit 0 est 1. Ainsi on fait le test du bit 0 sans s'occuper de l'état des autres bits. Flowcode intègre la notion de masquage dans sa fonction « Entrée ». Il suffit de cocher l’option masquage ainsi que les bits non masqués. Exemple : dans la fenêtre ci-contre la variable INTER prendra la valeur du bit RA0, peu importe les états des bits RA1 à RA4 puisqu'ils sont masqués (décochés). L'algorithme du programme inter2 est le suivant : début répéter valeur = état de l’inter0 si valeur = 0 alors écrire 0 sur les leds sinon écrire 255 sur les leds fin Si jusqu'à l'infini fin 4.1 Quel(s) type(s) de structure algorithmique reconnaissez-vous dans l'algorithme ? ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… 4.2 Écrire inter2.fcf. Faire vérifier par le professeur et tester. 4.3 Modifier le programme afin que les leds s'allument si les interrupteurs 0 ou 4 sont en position ON. Tester et faire valider par le professeur. 4.4 Réaliser un programme qui lit en permanence l'état du bit 4 du port A (indépendamment des autres) et recopie son état sur le bit 0 du port B. Tester et faire valider par le professeur. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 5/11 5. Le chenillard version 1 - fichier chenil1.fcf L'objectif est de faire défiler sans interruption les leds 0 à 7. L'interrupteur 0 sert à arrêter le défilement. Algorithme : début répéter Allumer la led 0 Attendre 0,5s Allumer la led 1 Attendre 0,5s tant que interrupteur 0 en position OFF fin 5.1 A quel type de structure algorithmique correspond le Répéter …. Tant que ? ………………………………………………..........…………………………...................……………………… 5.2 Compléter l'algorithme. 5.3 Écrire chenil1.fcf. Compléter le programme. Faire vérifier par le professeur et tester. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 6/11 6. Le chenillard version 2 - chenil2.fcf L'objectif est de réécrire le même programme que dans le 5. en utilisant les opérateurs de décalage. La fonction décalage permet de décaler vers la gauche ou la droite le contenu d'un octet. << décalage à gauche >> décalage à droite exemple : 2 << 1 = 4 02 = 00000010 décalage de 1 bit vers la gauche 04 = 00000100 Les bits sortants sont perdus. On réinjecte des 0 par la droite. Sous Flowcode le décalage s'écrit à l'intérieur d'un bloc CALCUL. Exemple : TOTO = TOTO << 1 On donne l'algorigramme : début Valeur=1 Écrire valeur sur les leds Attendre 0,5s Décalage à gauche de Valeur Valeur≠0 ? Lire état de l'inter0 Inter0 OFF ? fin ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 7/11 6.1 A quel type de structure algorithmique correspond la boucle 1 ? ………………………………………………..........…………………………...................……………………… 6.2 A quel type de structure algorithmique correspond la boucle 2 ? ………………………………………………..........…………………………...................……………………… 6.3 Écrire l'algorithme de ce programme. ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… 6.4 Écrire chenil2.fcf. Faire vérifier par le professeur et tester. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 8/11 7. Le chenillard version 3 - chenil3.c L'objectif est de faire défiler les leds dans les deux sens, de gauche à droite puis de droite à gauche, etc. Vous utiliserez toujours les opérateurs de décalage de bit. 7.1 Écrire l'algorithme de ce programme. ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… ………………………………………………..........…………………………...................……………………… 7.2 Écrire chenil3.fcf. Faire vérifier par le professeur et tester. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 9/11 8. L'afficheur 7 segments – afficheur.fcf L'objectif est d'incrémenter un nombre sur un afficheur 7 segments à partir d'appui sur un bouton poussoir. Le microcontrôleur est utilisé de la façon suivante : RB7 afficheur (PORTB) RB6 cathode dp RB5 RB4 RB3 RB2 RB1 RB0 cathode g cathode f cathode e cathode d cathode c cathode b cathode a RA4 RA3 afficheur - switches (PORTA) RA2 RA1 RA0 bp_raz bp_plus anode afficheur 8.1 Quel doit être l'état du bit RA0 pour allumer l'afficheur ? ......................................................................................................................................................................... 8.2 Compléter le tableau ci-dessous donnant la valeur binaire et décimale à placer sur le port B pour les nombres de 0 à 9. nombre RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 valeur du port B en décimal 0 1 2 3 4 5 6 7 8 9 ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 10/11 On donne ci-dessous l'algorithme du programme : début nombre = 0 répéter allumer afficheur lire bp_plus si bp_plus actif alors incrémenter nombre fin si si nombre = 0 alors afficher '0' sinon si nombre = 1 alors afficher '1' sinon si nombre = 2 alors afficher '2' sinon si nombre = 3 alors afficher '3' sinon .... // à compléter sous Flowcode si nombre = 9 alors afficher '9' sinon nombre =0 fin si fin si fin si fin si fin si attendre 200ms // anti-rebonds à l'infini fin 8.3 Écrire le programme sous Flowcode. Tester et faire valider par le professeur. 8.4 Modifier le programme afin de rajouter une remise à zéro du nombre en cas d'appui sur bp_raz. ALGORITHMIQUE ET LANGAGES {\TP\flowcode\tp_flowcode.odt} - page 11/11