Vous êtes sur la page 1sur 11

TP n1

TSTI2 anne 2010/2011

Dure : 4h00

PROGRAMMATION
FLOWCODE
Structures de base

Prrequis :

fiche "algorithme algorigramme"

Objectifs :

SECTION STI

ELECTRONIQUE

C : traitement programm de
l'information :
structures algorithmiques
de base (linaire,
alternative, itrative) ;
lment de
programmation

On utilise le logiciel Flowcode V3 en mode simulation. Plus tard, il sera possible de transfrer le programme
dans un microcontrleur PIC de chez Microchip.
Le TP va vous permettre de mettre en uvre les diffrentes structures algorithmiques vues en cours puis de
comprendre la notion de masquage.
1. Lancement du logiciel FLOWCODE V3
L'outil de dveloppement utilis est le logiciel FLOWCODE de chez MULTIPOWER. Il permet de programmer
directement en algorigramme.

Pour lancer le logiciel, double-cliquez sur l'icne Flowcode V3

La fentre principale s'ouvre :

Choisir " Cre un nouvel algorigramme FlowCode " puis cliquez sur Ok.
Vous devez maintenant choisir le microcontrleur que vous allez programmer partir de Flowcode.

Choisir le microcontrleur " 16F84 ".


Ce microcontrleur est un circuit intgr de 18 broches. Il intgre
principalement un microprocesseur, de la mmoire RAM, de la mmoire EEPROM, et
des ports d'entres / 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 microcontrleur et tester vos programmes l'aide du
simulateur de Flowcode.
Une aide sur flowcode est fournie par un guide :
guide_flowcode.pdf. Vous trouverez ce fichier sur le site STI2
partie logiciels.

ALGORITHMIQUE ET LANGAGES

{\TP\flowcode\tp_flowcode.odt} - page 2/11

2. Exemple : allumer une led - fichier led.fcf


L'objectif est d'allumer la premire led. L'algorithme est le suivant :
dbut
crire la valeur 1 sur le PORT B
fin
On donne lalgorigramme suivant :

double-cliquez pour
dfinir les proprits

Vous connecterez les leds


entier.

sur le port B du PIC. Cliquer sur la flche puis Connexions et choisir le PORT B

2.1 Quelle est la structure algorithmique employe dans cet exemple ?


.............................

2.2 Saisir l'algorigramme et lancer la simulation en cliquant sur l'icne

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

{\TP\flowcode\tp_flowcode.odt} - page 3/11

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'excuter l'infini.
Vous connecterez 5 switches de type "bascule" au PORT A ( puis Proprits ), les leds tant
connectes sur le PORT B comme dans lexercice prcdent. Vous utiliserez une variable pour
passer de la lecture des interrupteurs vers lcriture sur les leds.
Remarque : rpter 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 vrifier 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 complmenterez la variable utilise 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'excute l'infini.
Il vous faut utiliser le principe du masquage : sur 8 bits en entre, on ne veut tester que le bit 0.

Mot tester

27

26

25

24

23

22

21

20

Bit 0

ET logique
Masque

Rsultat

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 rsultat
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 intgre la notion de masquage dans sa fonction
Entre . Il suffit de cocher loption masquage ainsi que
les bits non masqus.
Exemple : dans la fentre ci-contre la variable INTER prendra la
valeur du bit RA0, peu importe les tats des bits RA1 RA4
puisqu'ils sont masqus (dcochs).

L'algorithme du programme inter2 est le suivant :


dbut
rpter
valeur = tat de linter0
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 vrifier 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 Raliser un programme qui lit en permanence l'tat du bit 4 du port A (indpendamment 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 dfiler sans interruption les leds 0 7. L'interrupteur 0 sert arrter le dfilement.
Algorithme :
dbut
rpter
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 Rpter . Tant que ?


.............................
5.2 Complter l'algorithme.
5.3 crire chenil1.fcf. Complter le programme. Faire vrifier 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 rcrire le mme programme que dans le 5. en utilisant les oprateurs de dcalage.
La fonction dcalage permet de dcaler vers la gauche ou la droite le contenu d'un octet.
<< dcalage gauche
>> dcalage droite
exemple :

2 << 1 = 4

02 = 00000010

dcalage de 1 bit vers la gauche

04 = 00000100

Les bits sortants sont perdus. On rinjecte des 0 par la droite.


Sous Flowcode le dcalage s'crit l'intrieur d'un bloc CALCUL. Exemple : TOTO = TOTO << 1
On donne l'algorigramme :
dbut
Valeur=1

crire valeur sur


les leds

Attendre 0,5s

Dcalage
gauche de
Valeur

Valeur0
?

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 vrifier 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 dfiler les leds dans les deux sens, de gauche droite puis de droite gauche, etc. Vous
utiliserez toujours les oprateurs de dcalage de bit.
7.1 crire l'algorithme de ce programme.
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
.............................
7.2 crire chenil3.fcf. Faire vrifier 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'incrmenter un nombre sur un afficheur 7 segments partir d'appui sur un bouton poussoir.
Le microcontrleur est utilis de la faon 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 Complter le tableau ci-dessous donnant la valeur binaire et dcimale 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 dcimal

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 :


dbut
nombre = 0
rpter
allumer afficheur
lire bp_plus
si bp_plus actif
alors incrmenter 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
.... // complter 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 zro du nombre en cas d'appui sur bp_raz.

ALGORITHMIQUE ET LANGAGES

{\TP\flowcode\tp_flowcode.odt} - page 11/11