Vous êtes sur la page 1sur 20

Rpublique tunisienne

Ministre de l'ducation et de la formation


Direction gnrale des programmes et de la formation continue
Module de formation
Technologie (gnie lectrique)
3me et 4me annes secondaire
Section sciences techniques
La programmation
A
V
E
C
La programmation en mikropascal . Page 1/20
Fentre des
erreurs
Analyseur statistique
Prsentation du Mikropascal
I) Introduction :
Conu par la socit !ikroelektronika"# le compilateur PA$CAL nou%elle gnration
&!ikroPA$CAL& pour microcontr'leurs P(C )n*icie d+une prise en main tr,s intuiti%e et
d+une ergonomie sans *aille. Ces tr,s nom)reu- outils intgrs .mode simulateur# terminal de
communication# gestionnaire / segments# analyseur statistique# correcteur d+erreur#
e-plorateur de code...0 associ 1 sa capacit 1 pou%oir grer la plupart des prip2riques
rencontrs dans l+industrie .3us (2C"# 14ire"# $P("# 5$678# 3us CA9"# cartes compact
Flas2# signau- P4!# a**ic2eurs LC: et / segments...0 on *ont un outils de d%eloppement
II) escription du logiciel Mikropascal :

Le compilateur !ikropascal nous permet de d%elopper rapidement des applications
comple-es ;
<cri%e= %otre code source de Pascal en utilisant le rdacteur intgr de code .les aides
de code et de param,tre# Accentuer de synta-e# correction automatique# etc.>0
?mploye= les )i)liot2,ques !ikropascal incluses pour acclrer nettement le
d%eloppement ; acquisition de donnes# mmoire# a**ic2ages# con%ersions.
$ur%eille= %otre structure de programme# %aria)les# et *onctions dans l+e-plorateur de
code.
(nspecte= l+coulement de programme et corrige= la logique e-cuta)le a%ec le
programme de mise au point intgr.
@)tene= les rapports et les grap2iques dtaills ; Carte de 5A! et de 5@!# code= les
statistiques# impression d+assem)lage# etc.>
La programmation en mikropascal . Page 2/20
Aestionnaire / segments
Assistant de code
Fentre des
erreurs
Analyseur statistique
?-plorateur de code
!diteur de code
I II) "es #arres d$outils
%I) Manipulation :
$ur %otre PC lancer le compilateur mikropascal &
Premi,re tape 'ration d$un nou(eau pro)et : ProBect 9eC ProBect
:eu-i,me tape 'hoi* des paramtres du pro)et :
La programmation en mikropascal . Page D/20
nou%eau proBet
$au%egarder le programme
en cours
C2arger un proBet e-istant et c2anger
ses param,tres .e- ; 2orloge# son nom #
..>
Annuler le derni,re action
@u%rir un proBet 5ta)lir la derni,re action
Fermer un programme (mprimer
$au%egarder les programmes en cours Ene nou%elle page
$au%egarder un *ic2ier e-istant sous un
autre nom .
compilation
A**ic2er le *ic2ier .asm apr,s
compilation
1F Gaper le nom de %otre proBet
2F c2oisir un dossier pour
l+enregistrement
D F C(P el risio2C
ed ecneuqr* al repat F6
egolro2+l
H F I@ rus reuqilc
C$@JGK te FF@JG:4 sesac sel re2coC F8
Groisi,me tape Saisi du programme
Comme application saisir le programme ciFdessous .*aire attention au- sym)oles de
ponctuation et d+galit (
Program led_clignotantes;
Begin
TRISB :=$ 00;
PORTB :=$ 00;
While true do
Begin
PORTB := 0;
Delay_ms(000!;
PORTB :=$0";
Delay_ms(000!;
End;
End.
Luatri,me tape : 'ompilation; ProBect FFFFF )uild .ou cliquer sur 0
La )arre de progr,s sem)lera %ous in*ormer au suBet du statut de compilation. $+il y a des
erreurs# on %ous annoncera dans la *entre dMerreur.
$i aucune erreur n+est produite#
Cinqui,me tape : Simulation
La simulation du programme peut se *aire *acilement a%ec le logiciel ($($.
La programmation en mikropascal . Page 6/20
C2arger le programme dans le microcontr'leur
$i-i,me tape ; 'hargement du programme dans le PI'+,-.4/
A%ec le logiciel (cprog
La programmation en mikropascal . Page 8/20
"a programmation en langage (olu :
Lue ce soit par la mt2ode grap2ique ou en langage %olu# lMcriture du programme ainsi
que sa mise au point doi%ent sui%re le diagramme sui%ant ;
(l *aut traduire le ca2ier des c2arges en une suite ordonne dMactions que doit raliser le
processus de commande# cette suite dMoprations sera dcompose en actions lmentaires ou
instructions cMest lM/lgorithme. Par la suite il su**it de trans*ormer cet algorit2me en un
langage %olu tel que le langage PA$CAL ou le langage C.
:ans la suite de ce module on sMintressera au langage MIKROPASCAL.
I0+0 Structure d$un programme ;
En programme est un te-te que le compilateur %a traduire en *ic2ier 2e-adcimal. Alors il
doit a%oir une structure particuli,re.
Le te-te d+un programme contient au moins trois parties.
"1ent2te
9e contient qu+une ligneN commence par le mot rser% O Program P et donne un nom au
programme.
"es dclarations
?lles permettent de d*inir les lments utiliss dans le programme.
?n e**et on de%ra dclarer les %aria)les utilises pour permettre au compilateur d+e**ectuer les
rser%ations de mmoire ainsi que les sousFprogrammes .Procdures et *onctions0.
"e corps du programme
Commence par le mot rser% O 3egin P et se termine par le mot rser% &!nd & sui%i d+un
point *inal& Ce qui suit ce &!nd& n+est pas pris en compte par le compilateur.
?ntre &3egin& et &!nd& se trou%ent les instructions 1 e**ectuer par le programme.
/lgorithmique "angage P/S'/"
/lgorithme 9omAlgorit2me N
%aria#les 9om%aria)le ; type N
'onstantes
9omconstante ;GypeQ%aleur N
#ut
##$
##
-in&
Program 9omProgramme N
%ar 9om%aria)le ; Gype N
'onst
9omconstante ; Gype ;Q %aleur N
3egin
>>.
>>.
!nd&
I040 "es 5gles de #ases ;
R Goutes instructions ou actions se terminent par un point %irgule 6
R Ene ligne de commentaires doit commencer par &7& et se terminer par &8& ou commence
par &99&.
R En )loc dMinstructions commence par &3egin& et se termine par &!ndN&
I030 "es t:pes de (aria#les utilises en Mikropascal ;
T:pe taille Plage Array ... Aestion de
ta)leau
$tring ... Aestion de c2aSne
de caract,res
3yte .octet0 7 )its 0 .. 288
C2ar .caract,re0 7 )its 0 .. 288
4ord .mot0 1H )its 0 .. H88D8
$2ort .@ctet sign0 7 )its F127 .. 12/
(nteger .?ntier0 1H )its FD2/H7 .. D2/H/
longint .?ntier long0 D2 )its F216/67DH67 .. 216/67DH6/
La programmation en mikropascal . Page H/20
I040 "es #ases du compilateur Mikropascal ;
Le dcimal ; AQ2H N
LM2e-adcimal AQT1A N ou AQ0-1A N
Le )inaire AQU00011010 N
Vous pou%e= utiliser la commande ;'on(ertor pour con%ertir un entier dcimal en )inaire
ou en 2e-adcimal
I0< 'on=iguration des registres en entres9 sorties
Pour con*igurer les )roc2es d+un port en sorties ou en entres on utilise la commande Gris
?-emple
GrisaQ8 QGrisaQ .001010
2
donne les )roc2es 5A0 et 5A2 sont des entres et les autres
)roc2es sont en sorties
Gris)Q0 Gris).000000000
2
toutes les )roc2es du port 3 sont en sorties
Gris)Q260 Gris)Q.F00
1H
Gris)Q.111100000
2
les )roc2es 530#531#532 et 53D sont en
sorties et les autres )roc2es . 536#538#53H et 53/0 en entres
Les =ros con*igurent les )roc2es en sorties et les uns les con*igurent en entres
I0,0 les oprateurs arithmtiques et logiques :
@prateurs arit2mtiques @prateurs de comparaison @prateurs logiques
O%&rateur O%&ration O%&rateur O%&ration O%&rateur O%&ration
W Addition Q ?galit A9: ?G
F $oustraction XY :i**rent @5 @E
R !ultiplication Y $uprieur K@5 @E e-clusi*
/ :i%ision X (n*rieur 9@G 9@9
di% :i%ision enti,re XQ (n*rieur ou gale $ZL :calage 1 gauc2e
mod 5este de la
di%ision enti,re
YQ $uprieur ou gale $Z5 :calage 1 droite

I0>0 "es structures usuelles :
a) La!!e"tation :
CMest lMaction dMattri)uer une %aleur 1 une %aria)le.
Langage algorit2mique Langage PA$CAL
aXQQ )Wc a ;Q)Wc
#) Le$ $tr%"t%re$ alternati&e$ :
Langage algorit2mique Langage PA$CAL
SI condition /"?5S
!3@T
Traitement ;
#####
-IASI 6
I- condition TB!A
3!CIA
Traitement ;
####$
!A6
SI condition /"?5S
!3@T
I- condition TB!A
3!CIA
La programmation en mikropascal . Page //20
Traitement ;
#####
-IA
SIA?A
!3@T
Traitement ';
#####
-IASI 6
Traitement ;
####$
!A
!"S!
3!CIA
Traitement ';
####$
!A6
S!"?A e(%ression
)aleur_ : action_ ;
#####$$$
)aleur_n : action_n ;
autrement : action_0 ;
-IAS!"?A 6
'/S! e(%ression ?-
)aleur_ :action_;
>>>>>>
)aleur_n : action _n ;
!"S! action_0 6
!AN
") Le$ $tr%"t%re$ it'rati&e$ o% r'p'titi&e$ ;
Langage algorit2mique Langage PA$CAL
( ; entier N
>>>>
P?@5 I X%ariant de )aleur initiale*
D@S;@1/ +aleur ,inale
-/I5!
!3@T
Traitement ;
#####
-IA-/I5! 6
(; integerN
>>>..
-?5 (;Q -+aleur initiale*
T? -)aleur ,inale*
?
3!CIA
Traitement ;
####$
!A6
T/A;@! condition -/I5!
!3@T
Traitement ;
#####
-IAT/A;@! 6
EBI"! condition ?
3!CIA
Traitement ;
####$
!A6
d) Le$ pro"'d%re$ et le$ !on"tion$
Ene suite d+instructions peut tre rassem)le en un )loc qui peut tre appel depuis plusieurs
endroits d+un programme. Ceci donne lieu au- notions de sous programme appel aussi
procdures ou *onctions.
R Procdures
Ce sont des groupes d+instructions qui %ont *ormer une nou%elle instruction simple utilisa)le
dans un programme. ?n Pascal il *aut les d*inir a%ant de les utiliser. Ceci se *ait en utilisant
une structure similaire 1 celle d+un programme.
!nt2te
Procedure (denti*icateur .Param1;Gype1# Param2;Gype2#...0N
(denti*icateur est le nom de la procdureN Param1# Param2 ... sont des param,tres que le
programme *ournit 1 la procdure sous *orme de constantes# de %aria)les ou d+e-pressionsN
Gype1# Gype2 ... sont les types de ces param,tres.
clarations
:clarations de constantes# types# %aria)les utiliss 1 l+intrieur de la procdure
La programmation en mikropascal . Page 7/20
'orps de la procdure
3egin
(nstruction1N (nstruction2N>>..
?ndN
(l s+agit des instructions e-cutes par le programme 1 l+appel de la procdure. Ene procdure
peut appeler d+autres procdures d*inies a%ant elle. L+appel d+une procdure se *ait en
cri%ant son nom sui%i des param,tres ncessaires entre parent2,ses.
R -onctions
Ene *onction est une procdure qui de%ra *ournir un rsultat de type numrique ou c2aSne de
caract,res. La d*inition se *ait en utilisant une structure similaire 1 celle de la procdure.
!nt2te
Function (denti*icateur .Param1;Gype1# Param2;Gype2#...0;GypeJ5N
(denti*icateur est le nom de la procdureN Param1# Param2 ... sont des param,tres que le
programme *ournit 1 la *onction sous *orme de constantes# de %aria)les ou d+e-pressionsN
Gype1# Gype2 ... sont les types de ces param,tresN GypeJ5 est le type du rsultat *ourni par la
*onction.
clarations
:clarations de constantes# types# %aria)les utiliss 1 l+intrieur de la *onction.
'orps de la =onction
3egin
(nstruction1N (nstruction2N>>..
(denti*icateur;QrsultatN
?ndN
I0>0 "es =onctions adaptes au* microcontrFleurs PI' :
Le compilateur mikropascal apporte une large )i)liot2,que de procdures et *onctions
adaptes au- microcontr'leurs de la *amille P(C de !(C5@CZ(P. Ces *onctions sont
accessi)les dans lMaide du logiciel nanmoins on %a citer quelque une.
-onctions 9 Procdures !*emple
$et)it.port # )it0 N $et)it.port3#20 N mettre la )roc2e 532 1 1
Clear)it.port # )it0 N Clear)it.port3#80 N mettre la )roc2e 538 1 0
Gest)it.port # )it0 A ;Qtest)it.port3#/0 Na**ecter 1 la %aria)le A lMtat de 53/
3utton.port#)it#temps
dMappui #tat logique acti*0
(* 3utton.portA#2#10#10 t2en XAction 1Y N
@n teste lMappui sur un )outon poussoir reli 1 la )roc2e
5A2 pendant 10 ms pour *aire lMAction 1
La programmation en mikropascal . Page [/20
/pplications
/pplication +:
Clignotement d+un %oyant tous le 1 s
A**ectation
?ntres/$orties 3roc2e du \ contr'leur
Z1 5AD
H1
1re mt2ode . notion de la %ause 0
!ikroPascal *ournit une procdure pour crer des temporisations.
:elayJus :elayJus.const timeJinJus ;
Cord0N
Cre un retard dont la
dure en microsecondes
:elayJus.100N
:i-
microsecondes
:elayJms :elayJms.const timeJinJms
; Cord0N
Cre un retard dont la
dure en millisecondes
:elayJms.10000
une seconde
VdelayJms VdelayJms.timeJinJms ;
Cord0N
Cre un retard dont la
dure en millisecondes est
timeJinJms .une %aria)le0
:elayJCyc :elayJCyc.cyclesJdi%J)yJ
10 ; )yte0N
Cre un retard dont la dure
est *onction de l+2orloge du
microcontr'leur
:elayJCyc.100N

La programmation en mikropascal . Page 10/20
Algorit2me Programme commentaire
Programme ?K1a
:)ut
Grisa0N
Porta0N
Gant que %rai *aire
:)ut
porta.D0
Pause d+une seconde
Porta.D1N
Pause d+une seconde
Fin tant que
Fin programme
program ?K1aN
#egin
trisa;Q0N

porta;Q0N
Ghile true do
#egin
porta.DQ0
delayJms.10000N
porta.D;Q1 N
delayJms.10000N
end6
end.
nom du programme
d)ut du programme
toutes les )roc2es du port A sont con*igures
en sorties
Goutes les )roc2es du port A sont 1 =ro
)oucle rptiti%e sans limite
instructions 1 e-cuter
durant la )oucle

2me mt2ode . notion du test 0
Algorit2me Programme commentaire
Programme ?K1)
:)ut
Grisa0N
Porta0N
Gant que %rai *aire
:)ut
$i porta.DQ0 alors
Porta.D1 si non porta.D0N
Pause d+une seconde
Fin tant queN
Fin programme
program ?K1)N
#egin
trisa;Q0N

porta;Q0N
Ghile true do
#egin
i= porta.DQ0 then
porta.D;Q1 else porta.D;Q0N
delayJms.10000N
end6
end.
nom du programme
d)ut du programme
toutes les )roc2es du port A
sont con*igures en sorties
Goutes les )roc2es du port A
sont 1 =ro
)oucle rptiti%e sans limite
// instructions 1 e-cuter
durant la )oucle

/pplication 4
L+action sur un )outon poussoir $1 entraSne l+allumage d+une lampe Z
H1
S1
A**ectation
?ntres /sorties 3roc2es du microcontr'leur
?ntre; $1 5A0
$ortie; Z 5AD
:ans le programme de l+?K1)
F 5emplacer l+instruction trisa;Q0 par trisa;Q1 pour con*igurer la )roc2e 5A0 en entre et les
autres )roc2es en sortie
F 5emplacer i= porta.DQ0 then porta.D;Q1 else porta.D;Q0N par i= porta.0Q0 then
porta.D;Q1 else porta.D;Q0N pour *aire un test sur 5A0 au lieu de 5AD
F $upprimer delayJms.10000 . @n ne plus )esoin d+une pause
F Compiler et simuler en aBoutant une entre sur la )roc2e 5A0
/pplication 3
H1
S1
S2
A**ectation
?ntres /sorties 3roc2es du microcontr'leur
?ntre; $1 5A0
?ntre; $2 5A1
$ortie; Z 5A2
La programmation en mikropascal . Page 11/20
1,re mt2ode
Algorit2me Programme mikropascal
Algorit2me ?KDN
:)ut
Grisa T0DN
Porta 0N
Gan que %rai *aire
$i porta.0Q1 alors porta.2;Q0 sinon
:)ut
$i porta.1Q0 alors porta.2;Q0 sinon
porta.2;Q1N
Fin sinonN
Fin du programme
program ?KDN
)egin
trisa;QT0DN
porta;Q0N
C2ile true do
i* porta.0Q1 t2en porta.2;Q0 else
)egin
i* porta.1Q0 t2en porta.2;Q0 else
porta.D;Q1N
endN
end.
2,me mt2ode .notion des %aria)les0
@n utilise une %aria)le K qui prend l+tat logique 1 si et seulement si .$1Q0 ?G $2Q10
Cette %aria)le commande la sortie Z1
Algorit2me Programme mikropascal
Algorit2me ?KDaN
Varia)le K de type octet
:)ut
K0N
Grisa T0DN
Porta 0N
Gan que %rai *aire
d)ut
$i .porta.0Q 0 ?G porta.10 Q1 alors K;Q1 sinon
K;Q0N
$i KQ0 alors porta.2;Q0 si non porta.2;Q1N
Fin tant que
Fin du programme
program ?KDaN
%ar K;)yteN
)egin
K;Q0N
trisa;QT0DN
porta;Q0N
C2ile true do
)egin
i* ..porta.0Q00 and .porta.1;Q100 t2en
K;Q1 else K;Q0N
i* KQ0 t2en porta.2;Q0 else porta.2;Q1N
endN
end.
/pplication 4: commande d+un moteur a%ec deu- )outons poussoirs . 1 seul sens de rotation0
S1
S2
KM1
KM1
A**ectation
?ntres /sorties 3roc2es du microcontr'leur
?ntre; $1 .arrt0 5A0
?ntre; $2 .marc2e0 5A1
$ortie; I! 1 5AD
@n %a associe 1 I!1 une %aria)le K dont l+quation est 0 1 .. 0 . R/ R/ . + =
La programmation en mikropascal . Page 12/20
L+instruction i* ..porta.0Q00 and .porta.1Q100 t2en K;Q1 else K;Q0N de%int
i* ..porta.0Q00 and ..porta.1;Q10 or .KQ1000 t2en K;Q1 else K;Q0N
/pplication < (notion de %roc&dure0
Commande d+un moteur .2 sens de rotation0 a%ec %errouillage lectrique
S1
S2
KM1
S3
KM2
KM1
KM1
KM2
KM2
A**ectation
?ntres /sorties 3roc2es du microcontr'leur
?ntre; $1 .arrt0 5A0
?ntre; $2 .marc2e sens 2oraire ou gauc2e0 5A1
?ntre; $D .marc2e sens trigonomtrique ou droite0 5A2
$ortie; I! 1 .rotation sens 2oraire ou gauc2e0 5AD
$ortie ; I!2 .rotation sens trigonomtrique ou droite0 5A6
@n associe une %aria)le d 1 I!1 et un autre g 1 I!2
Programme mikropascal Commentaire
program ?K8N 9om du prgramme
%ar d#g;)yteN :claration des %aria)les
procedure droiteN
)egin
i* ..porta.0Q00and..porta.1Q10or .dQ100 and .gQ000
t2en
d;Q1 else d;Q0N
i* dQ1 t2en porta.D;Q1 else porta.D;Q0N
endN
Procdure droite
procedure gauc2eN
)egin
i* ..porta.0Q00and..porta.2Q10or .gQ100 and
.dQ000 t2en g;Q1 else g;Q0N
i* gQ1 t2en porta.6;Q1 else porta.6;Q0N
endN
Procdure gauc2e
)egin
trisa;QU00111N
C2ile true do
)egin
droiteN
gauc2eN
endN
end.
Programme principal
Appel de la procdure droite
Appel de la procdure gauc2e
La programmation en mikropascal . Page 1D/20
9ous %oulons signal l+tat du moteur par un a**ic2er / segment 1 cat2ode commun )ranc2
sur les )roc2es du port 3
?tat du moteur ?tat de l+a**ic2eur Valeur a**ecte au port 3
!oteur 1 l+arrt ?n dcimal11[
?n 2e-adcimalQ
5otation sens 2oraire ?n dcimal;
?n 2e-adcimal
5otation sens
trigonomtrique
?n dcimal;
?n 2e-adcimal
Pour retrou%er les codes correspondants au-
di**rents tats de l+a**ic2eur dans le menu
tools c2oisir la commande se(en segment
con(ertor
ABouter au programme la procdure sui%ante
procedure a**ic2ageN
)egin
i* ..dQ00 or .gQ000 t2en port);Q11[N
i* dQ1 t2en port);Q>>N
i* gQ1 t2en port);Q>>NN
endN
Appeler la procdure a**ic2age dans le programme principal
9ous %oulons remplacer l+a**ic2eur / segments par un a**ic2eur LC: 2-1H .2 lignes et 1H
colonnes0
Le compilateur !ikroPascal *ournit une )i)liot2,que pour communiquer a%ec l+a**ic2eur
LC: utilis gnralement en mode 6F)it
$ynta-e :escription ?-emple
LcdJCon*ig LcdJCon*ig .%ar port ; )yteN
const. 5$# ?9# 45# :/# :H# :8#
:6 ; )yte0N
(nitialiser
l+a**ic2eur LC: et
d*inir les )roc2es
du microcontr'leur
1 relier 1 l+LC:
LcdJCon*ig
.P@5G3#1#2#0#D#8#6#
H0N .
LcdJ@ut LcdJ@ut .roC# col ; )yteN %ar
te-t ; array]288^ o* c2ar0N
?crire un Ge-te
sur l+a**ic2eur LC:
en indiquant sa
position .ligne et
colonne0.
?crire &Ali& sur
LC: sur la ligne 1#
colonne D;
LcdJ@ut.1# D# +Ali+0N
LcdJ@utJCp
;
LcdJ@utJCp.%ar te-t ; array]288^
o* c2ar0N
?crire le te-te sur
l+a**ic2eur LC: 1
la position actuelle
A**ic2er & salut & 1 la
position actuelle de
curseur ;
La programmation en mikropascal . Page 16/20
de curseur LcdJ@utJCp.+salut+0N
LcdJC2r ; LcdJC2r.roC# col# c2aracter ;
)yte0N
?crire un Caract,re
sur l+LC: en
indiquant sa
position .ligne et
colonne0.
?crire &i& sur LC:
sur la ligne 2#
colonne D;
LcdJC2r.2# D# +i+0N
LcdJC2rJCp LcdJC2rJCp.c2aracter ; )yte0N ?crire un caract,re
sur l+a**ic2eur
LC: 1 la position
actuelle de
curseur.
LcdJC2rJCp.+e+0N
?crire &e& 1 la
position actuelle du
curseur.
LcdJCmd ; LcdJCmd .command ; )yte0N
Liste de commande;
LC:JF(5$GJ5@4
LC:J$?C@9:J 5@4
LC:JGZ(5:J5@4
LC:JF@E5GZJ5@4
LC:JCL?A5
LC:J5?GE59JZ@!?
LC:JCE5$@5J@FF
LC:J!@V?JCE5$@5JL?FG
LC:J!@V?JCE5$@5J5(AZG

LC:JGE59J@9
LC:JGE59J@FF
LC:J$Z(FGJL?FG
LC:J$Z(FGJ5(AZG
?n%oie une commande 1 l+a**ic2eur LC:
:placer le curseur 1 la 1,re ligne
:placer le curseur 1 la 2 ,me ligne
:placer le curseur 1 la D ,me ligne
:placer le curseur 1 la 6 ,me ligne
?**acer le contenu de l+a**ic2eur LC:
5etour du Curseur 1 la position initiale
Arrter le curseur
:placer le curseur 1 gauc2e
:placer le curseur 1 droite Acti%er
l+a**ic2age sur l+a**ic2eur LC: Arrter
l+a**ic2age sur l+a**ic2eur LC: :calage de
l+a**ic2age 1 gauc2e
:calage de l+a**ic2age 1 droite
5emplace la procdure a**ic2age par celuiFci
procedure a**ic2ageN
)egin
i* dQ1 t2en )egin
lcdJout.1#1#+5otation sens +0 N //a**ic2er sur la 1ere ligne et la 1ere colonne de l+LC:
lcdJout.2#1#+trigonometrique+0N
endN
i* gQ1 t2en
)egin
lcdJout.1#1#+5otation sens +0 N
lcdJout.2#1#+2oraire +0N
endN
i* ..gQ00 and .dQ000 t2en
)egin
lcdJout.1#1#+!oteur a l arret +0N
lcdJout.2#1#+ +0N
endN
endN
aBouter le 6 lignes sui%ant dans le programme principal
tris);QT00N
port);Q0N
lcdJcon*ig.port)#1#D#2#/#H#8#60N // lcdJcon*ig.le port# 5$# ?# 54# :/# :H# :8# :60
La programmation en mikropascal . Page 18/20
lcdJcmd.lcdJcursorJo**0N // teindre le curseur
/pplication ,
La ca)ine tant initialement au 1,re tage#
L+action sur un )outon m0 entraSne la descente
de la ca)ine au re=FdeFc2ausse puis sa mont
au 1,re tage apr,s une pause de 2s
L+action sur un )outon m2 entraSne la mont de
la ca)ine au 2,me tage puis sa descente au 1,re
tage apr,s une pause de 2s

$ 2
$ 1
$ 0
! o t e u r 1 C C 2 6 V
I ! 1 ; ! o n t
I ! 1 e t I ! 2 ; : e s c e n t e
m 2
m 0
A**ectation 3roc2e
m 2
I ! 1
I ! 1
$ 2
$ 1
0
1
2 G Q 2 s
t / 2 s / 2
$ 0
t / 2 s / 8
m 0
D
H
8
6
$ 1
I ! 2
I ! 2 I ! 1
G Q 2 s
I ! 1
?ntre ; s0 5A0
?ntre ; s1 5A1
?ntre ; s2 5A2
?ntre ; m0 5AD
?ntre ; m2 5A6
$ortie ; I!1 530
$ortie ; I!2 531
@n associe 1 c2aque tape une %aria)le Ki
Le programme ;
program gra*DN
%ar -0#-1#-2#-D#-6#-8#-H#t2#t8 ; )yteN
const pause;Cord Q8000 N
)egin
-0;Q1N -1;Q0N -2;Q0N -D;Q0 N-6;Q0N -8;Q0N
-H;Q0N
//(nitialement seule l+tape initiale est acti%
trisa;QT**N //Le port A est con*igur en entres
tris);QT00N //Le port 3 est con*igur en sorties
port);Q0N //(nitialement toutes les sorties sont 1 0
C2ile true do
)egin
i* ..-0Q10 and .porta.DQ10and
.porta.6Q000 t2en
)egin
-0;Q0N -1;Q1N
//Acti%ation de l+tape 1 et dsacti%ation de
l+tape 0
La programmation en mikropascal . Page 1H/20
end
i* ..-1Q10 and .porta.2Q100 t2en
)egin
-2;Q1N -1;Q0N
endN
//Acti%ation de l+tape 2et dsacti%ation de
l+tape 1
i* ..-2Q10 and .t2Q100 t2en
)egin
-2;Q0N -D;Q1N
endN
//Acti%ation de l+tape D et dsacti%ation de
l+tape 2
i* ..-DQ10 and .porta.1Q100 t2en
)egin
-D;Q0N -0;Q1N
endN
//Acti%ation de l+tape 0 et dsacti%ation de
l+tape 2
i* ..-0Q10 and .porta.DQ00and
.porta.6Q100 t2en
)egin
-0;Q0N -6;Q1N
end N
//Acti%ation de l+tape 6 et dsacti%ation de
l+tape 0
i* ..-6Q10 and .porta.0Q100 t2en
)egin
-8;Q1N -6;Q0N
endN
//Acti%ation de l+tape 8 et dsacti%ation de
l+tape 6
i* ..-8Q10 and .t8Q100 t2en
)egin
-8;Q0N -H;Q1N
endN
//Acti%ation de l+tape H et dsacti%ation de
l+tape 8
i* ..-HQ10 and .porta.1Q100 t2en
)egin
-H;Q0N -0;Q1N
endN
//Acti%ation de l+tape 0 et dsacti%ation de
l+tape H
i* ..-1Q10or.-DQ10or.-6Q10or.-HQ100 t2en
port).0;Q1 else port).0;Q0N
//Programmation de la sortie I!1
i* ..-DQ10 or .-6Q100 t2en port).1;Q1 else
port).1;Q0N
//Programmation de la sortie I!2
i* -2Q0 t2en t2;Q0 else
)egin
t2;Q0N %delayJms.pause0N
t2;Q1N
endN
//Programmation du temporisateur G2
i* -8Q0 t2en t8;Q0 else
)egin
t8;Q0N %delayJms.pause0N
t8;Q1N
endN
// Programmation du temporisateur G8
endN //*in tant que
end. //Fin du programme

La programmation en mikropascal . Page 1//20
/pplication >; Aestion d+un cla%ier matriciel par le microcontr'leur P(C1HF76A.
A
3
C
:
? 1 ? 2 ? D
G 1 G 2
G D
G 6 G 8 G H
G / G 7 G [
G R G 0 G _
$c2ma de simulation a%ec ($($ $c2ma structurel d+un cla%ier 12 touc2es
:ans un premier lieu on s+intressera au cla%ier.
Le principe de ce type de cla%ier est simple en e**et l+appui sur une touc2e ralise un contact
direct entre la ligne et la colonne de cette touc2e.
Pour pou%oir lire une touc2e appuye par le microcontr'leur on proc,de comme suit;
@n *ait un )alayage sur les colonnes c+estF1Fdire on en%oie les squences sui%antes .100# 010#
0010.
@n lit l+tat des lignes sur 6 )its .A# 3# C# :0
@n aura le ta)leau de correspondance sui%ant ;
530F531F532 53DF536F538F53H P@5G3.en dcimal0 Gouc2e appuye
1 0 0
1 0 0 0 .0000100102Q[
G11
0 1 0 0 .0001000102Q1/
G22
0 0 1 0
0 0 0 1
0 1 0
1 0 0 0 .0000101002Q10
0 1 0 0 .0001001002Q17
0 0 1 0
0 0 0 1
0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1 .0100010002QH7
G_F0
@n dsire a**ic2er le code )inaire correspondant 1 la touc2e appuye sur le portA
program cla%ierN
Var G#K ; )yte N
)egin
G;Q 0 N
K;Q0N
G5($A ;Q TF0 N
La programmation en mikropascal . Page 17/20
portA;Q0N
G5($3 ;QTF7 N
C2ile .1Q10 do
)egin
Port3 ;Q 1 N
delayJms.100 N
G ;Q Port3 N
i* GQ[ t2en -;Q 1N
i* GQ1/ t2en -;Q 6N
i* GQDD t2en -;Q /N
i* tQH8 t2en -;Q 10N
PortA;Q- N
Port3 ;Q2 N
delayJms.100 N
G ;Q Port3 N
i* GQ10 t2en - ;Q 2 N
i* GQ17 t2en - ;Q 8 N
i* GQD6 t2en - ;Q 7 N
i* GQHH t2en - ;Q 0 N
PortA ;Q - N
Port3 ;Q 6 N
delayJms.100 N
G ;Q Port3 N
i* GQ12 t2en - ;Q D N
i* GQ20 t2en - ;Q H N
i* GQDH t2en - ;Q [ N
i* GQH7 t2en - ;Q 11 N
PortA ;Q - N
end N
end.
@n peut utiliser aussi les commandes de la li)rairie Ieypad
$ynta-e :escription ?-emple
IeypadJ(nit IeypadJ(nit.%ar
port ; Cord0N
(nitialiser et prciser le port
sur le quel est )ranc2 le
cla%ier
IeypadJ(nit.P@5G30
N
IeypadJ5ead ; IeypadJ5ead ;
)yteN
Vri*ier si une touc2e est
appuye. La *onction
ren%oie 1 1 18# selon la
touc2e appuye# ou 0 si
aucune touc2e n+est
actionne.
?-emple
kp ;Q IeypadJ5eadN
IeypadJ5eleased IeypadJ5elease
d ; )yte
L+appel de
IeypadJ5eleased gn,re
une attente Busqu+1 ce
qu+une touc2e soit appuye
kp ;Q
IeypadJ5eleasedN
La programmation en mikropascal . Page 1[/20
et li)re. Ene *ois li)re#
la *onction ren%oie 1 1 1H#
selon la touc2e

program cla%ier6-6N
%ar kp#-#y ; )yteN
procedure cla%ierN
)egin
kp ;Q 0N
C2ile kpQ0 do
)egin
kp ;Q IeypadJ5ead.0N
endN
-;QkpN
endN
)egin
IeypadJ(nit.P@5G)0N
trisa;Q0N
repeat
cla%ierN
porta;Q-N
until *alse
end.
La programmation en mikropascal . Page 20/20