ACTIVITES MICROCONTROLEUR 16F84A
Activit 1 : Comparateur binaire de deux nombres un bit (A=a0, B=b0)
1- Complter un algorithme.
2-Ecrire un programme en MikroPascal.
a-Complter le tableau des affectations :
Entres /sorties
Entre : a0
Entre : b0
Sortie H0 (A>B)
Sortie H1 (A=B)
Sortie H2 (A<B)
Broches du PIC16F84A
b- Complter la table de vrit du comparateur
binaire et dterminer les quations des sorties :
a0
0
0
1
1
b0
0
1
0
1
H0
H1
H2
H0 = ..
H1 = ..
H2 = ...
1re Mthode
1- Complter lalgorithme ainsi que le programme relatif au comparateur binaire.
Algorithme
Algorithme Comparateur ;
Programme en MikroPascal
Program Comparateur;
DEBUT
.............
TrisA ...; {RA0, RA1 : entres}
TrisA .. ;
TrisB ...; {RB0, RB1 et RB2:Sorties}
TrisB ...;
Port B ..... ; {Initialisation}
PortB .. ;
TANT QUE (1=1) FAIRE
..
DEBUT
BEGIN
SI (((porta.0 = .) ET (porta.1 = .)) OU
If (((porta.0=.....................
((porta.0 =.) ET (porta.1 =...)))
....................
ALORS
Then portb.1.............;
portb.1 1 SINON portb.1 0 ;
SI ((porta.0 = .....) ET (porta.1 = ..))
ALORS portb.2 1 SINON portb.2 0 ;
If ((porta.0 .....................
FIN FAIRE ;
then portb.2................................;
if ((porta.0 ................
then portb.0..... ;
;
FIN.
2- Saisir ce programme avec le logiciel MikroPascal et faire la compilation.
3- Simuler le fonctionnement avec le logiciel ISIS
ACTIVTES : PIC16F84A
4SC.TECH.
M.JEMIL
Page 1 /8
2me Mthode
1 -
Complter un algorithme et Ecrire un programme en MikroPascal.
2 -
Utiliser les oprateurs de comparaison.
1- Complter lalgorithme ainsi que le programme relatif au comparateur binaire.
Algorithme
Programme en MikroPascal
Algorithme Comparateur2;
Program Comparateur2;
DEBUT
TrisA .;
TrisA .. ;
TrisB .;
TrisB ...;
PortB .;
.. ;
TANT QUE VRAI FAIRE
....
Dbut
SI portA.0 ... portA.1 ALORS portB.0 .
if portA.0 ..................
SINON portB.0...; FIN SI
else
SI portA.0 ... portA.1 ALORS portB.1 .
if portA.0 ...... ....
SINON portB.1...; FIN SI
else
SI portA.0 ... portA.1 ALORS portB.2 .
if portA.0 ..........................................
SINON portB.2...; FIN SI
else .... ;
FIN FAIRE;
..;
FIN DU PROGRAMME
port..... ;
port...... ;
2- Saisir ce programme avec le logiciel MikroPascal et faire la compilation.
3- Simuler le fonctionnement avec le logiciel ISIS
3me Mthode
1 - Modifier un programme en utilisant les fonctions adaptes aux microcontrleurs.
2 - Utiliser les instructions suivantes : Setbit et Clearbit.
Partie modifier du programme
Nouvelle partie du programme
if portA.0 > portA.1 then portB.0:=..
If portA.0 > portA.1 then Setbit(portB, 0)
else portB.0:= ;
else
if portA.0 = portA.1 then portB.1:=.
if . ... then ...................................
else portB.0:=.. ;
else ................................;
if portA.0 < portA.1 then portB.2:=..
if .. then...................................
else portB.2:=.. ;
else ..............................;
ACTIVTES : PIC16F84A
4SC.TECH.
Clearbit(portB, .....);
M.JEMIL
Page 2 /8
Activit 2 : Commande dun moteur dans un seul sens de rotation
1 - Ecrire un programme en MikroPascal.
2 - Amliorer un programme en utilisant la notion de procdure.
Circuit de commande du moteur (mmoire arrt prioritaire) :
S1
S2
KM1
KM1
Schma ISIS:
1- Trouver la valeur du registre TrisA:
PORT A
RA4
RA3
RA2
RA1
RA0
TrisA =
TRIS A
2- On va associe KM1 une variable X de type Octet et dont l'quation est :
X RA0.( RA1 X )
Proposer un programme en MikroPascal traduisant le fonctionnement de cette quation.
Programme MikroPascal
Program act2;
Var .................. : ....................... ;
// Dclaration de la variable X du type Octet
..
Trisa:=%..........................; // RA0, RA1:Entres et RA3:Sortie et les non utilises comme
Entres
X:=............................;
// Initialisation de la variable X
While ...................................
Begin
if ((porta.0..........) .. ((........................)...(................... ))) then X:=...... Else X: =......;
........................................................................................................................; // RA3 = X
End;
...
2- Saisir ce programme avec le logiciel MikroPascal et faire la compilation.
ACTIVTES : PIC16F84A
4SC.TECH.
M.JEMIL
Page 3 /8
3- Simuler le fonctionnement avec le logiciel ISIS
2me Partie
Un afficheur 7 segments cathode commune branch sur le port B signale ltat du moteur :
Etat du moteur
Etat de X
Etat de l'afficheur
Valeur du port[B] en Hexadcimal
Arrt
Marche
A
F
1- Trouver la valeur affecte au port B traduisant les diffrents tats de lafficheur. (Dans le
menu Tools choisir la commande Seven segment convertor).
Remarque: Cet outil nest valable que si les segments
de lafficheur sont connects au port B comme suit:
Seven segment convertor
2- Modifier le programme en faisant les actions suivantes :
Complter la procdure ETAT qui permet de commander lafficheur 7 segments
selon ltat logique de X
Trouver la configuration des ports A et B.
Appeler la procdure ETAT dans le programme principal.
Program act2A;
Var X: .;
Procedure ETAT;
Begin
If
X=.......... then
// Dclaration de la variable X du type OCTET
// Procdure ETAT
portb:=$ ............
else
portb:=$ ............;
.;
BEGIN
trisa:= $ ...................;
//Configuration du port A
trisb:= $.....................; // Toutes les broches du port B sont des Sorties
Portb:=0;
// Initialisation du port B
X:=0;
// Initialisation de la variable X
While . Begin
....................................; // appel de la procdure ETAT
if ((porta.0=0) .. ((.......................) .. (...................... ))) then X:=..... Else X: =.....;
.............................................................................................................; //RA3 = X
End;
ACTIVTES : PIC16F84A
4SC.TECH.
M.JEMIL
Page 4 /8
Activit 3 : Compteur/dcompteur modulo 10
Cahier des charges :
Afficheur 7segments
... commune.
Remarque :
Le temps dattente entre deux
tats successifs est de 0.5s.
1) Trouver la valeur du registre TrisB:
2) Utiliser loutil SEVEN SEGMENT CONVERTOR pour complter le tableau suivant :
Nombre afficher
0 1 2 3 4 5 6 7 8 9
Valeur du port[B]
en dcimal
1re Mthode (structures itratives ou rptitives)
Ecrire un programme en MikroPascal utilisant les instructions suivantes : Repeat..until
1-Complter le programme relatif au compteur.
Program Compteur ;
BEGIN
TrisB:=. ;
Repeat
if portb.7= then
portb:=63
begin
; delay_ms(500); portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= ; delay_ms(500);
portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= ; delay_ms(500);
portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= ; delay_ms(500);
End
else
begin
portb:= ; delay_ms(500);
portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= ; delay_ms(500);
portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= ; delay_ms(500);
portb:= ; delay_ms(500); portb:= ; delay_ms(500);
portb:= 63
end;
; delay_ms(500);
Until .................;
ACTIVTES : PIC16F84A
END.
4SC.TECH.
M.JEMIL
Page 5 /8
2- Saisir ce programme avec MikroPascal , le compiler et simuler le fonctionnement avec
ISIS .
2me Mthode (notion des variables, Tableaux, procdures, structures itratives ou
rptitives)
Ecrire un programme en MikroPascal utilisant les instructions suivantes :
Forto et/ou For .downto
Repeat . until
Array[.] of ..
const
On va utiliser une variable i de type entier et un tableau nomm chiffre contenant 10
constantes de type entier relatives aux diffrentes valeurs affectes au port B.
1- Complter le programme suivant traduisant le fonctionnement du compteur.
Programme MikroPascal
Program compteur1;
Var
i: integer;
Const
chiffre : array[10] of .= (........, ....... , .........., .........., ........., .......,
......., ......, ......, 111);
Procedure affichage ;
Begin
portb:= ......;
BEGIN
delay_ms (....);
end;
trisB:=%......................;
repeat
if portb.7=1 then begin for i:=0
Else begin for i:=9
........
do
......................;
end
............. 0 do
.....................;
end;
.................. .
..
2- Saisir ce programme avec le logiciel MikroPascal et faire la compilation.
Activit 4 : Commande dun convoyeur bande avec le microcontrleur.
Traduire Le Grafcet PC en un programme MikroPascal
Le cycle raliser avec le convoyeur bande est dcrit par le Grafcet ci-dessous :
0
S1
AV
S3
T=5s
t/2/5s
EJ
S3
ACTIVTES : PIC16F84A
4SC.TECH.
M.JEMIL
Page 6 /8
Affection
Entres
PIC 16F84A
Sorties
PIC 16F84A
S1
RA1
EJ: Ejection
RB1
S2
RA2
AV: Avance
RB2
S3
RA3
Configuration des ports A et B (une broche non utilise sera configure comme entre).
TrisA :=
TrisB :=
1- Complter lalgorithme ainsi que le programme relatif au convoyeur.
2-Saisir ce programme avec le logiciel MikroPascal puis compiler.
3- Simuler le fonctionnement avec le logiciel ISIS .
Grafcet
cod microcontrleur.
X0
RA1
..
X1
.
X2
t
X3
.
Complter le programme en MikroPascal.
Programme MikroPascal
Commentaire
Program convoyeur;
Nom du programme
Var X . ;
Dclaration des variables
BEGIN
...;
Configuration : RA1, RA2, RA3 entres
...;
Configuration : RB1, RB2 sorties
.;
Initialement toutes les sorties sont 0
X0:=.; X1:=.; X2:=.; X3:=..;
Initialement seule l'tape initiale est active.
boucle infinie
begin
if ((X0=) and (..)) then
begin X0:=;
Activation de l'tape 1 et dsactivation de l'tape 0
X1:=.; end;
if ((X1=.) .. (..)) then
Activation de l'tape 2 et dsactivation de l'tape 1
begin X1:=; ....; end;
if ((X2=) ..(t=)) then
Activation de l'tape 3 et dsactivation de l'tape 2
begin X2:=.; ..; end;
if ((X3=) . (porta.3=.)) then
Activation de l'tape 0 et dsactivation de l'tape 3
begin X3:=.; .; end;
ACTIVTES : PIC16F84A
4SC.TECH.
M.JEMIL
Page 7 /8
if X1= then portb.2:= else portb.2:=0;
Programmation de la sortie AV (avance tapis)
if X3=. then . else ;
Programmation de la sortie EJ (Ejection)
if X2=0
then
t:=0 else
begin
Programmation du temporisateur T
t:=0; ...(5000);
t:=1;
;
End;
FIN TANT QUE
. .
FIN du programme
Activit 5 Commande dun moteur : Daprs le GRAFCET cod microcontrleur complter le
programme en langage volu (Mickropascal).
X0
RB0
RA0
RB1
X1
T1
t1/300s
X2
RA1.t4
Program_MT ;
Var X0, , ;
Begin
TrisA :=
TrisB :=
portB
X0 :=1 ;
While . ;
Begin
if....then
Begin
X0 :=0 ; X1 :=1 ;
;
if.then
Begin
;
End ;
if.then
..
;
.
...then
..
;
. ;
ACTIVTES : PIC16F84A
4SC.TECH.
T4
NotRA1.t4
if X0=1 ;
if X1=1 then
Begin
portb.1 :=1 ; t1 :=0 ;
Vdelay_ms(..) ; t1 :=. ;
End
Begin
Portb.1 :=0 ; t1 :=0 ;
End ;
if X2=1 then
Begin
;
.. ;
End
.. ;
;
M.JEMIL
Page 8 /8