You are on page 1of 8

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