Вы находитесь на странице: 1из 14

MICROCONTROLEUR ET PROGRAMATION

COMPTE RENDU DU TP N01 Gestion des afficheurs


Microcontr#$eur % &ic 1'f()A Pro!ra""ation % asse"*$eur sur MPLA+

se!"ents

P$an
I, Afficha!e he-a d.une /aria*$e ( *its sur 1 afficheur II, Afficha!e he-a d.une /aria*$e ( *its sur 0 afficheur III,Afficha!e he-a d.une /aria*$e ( *its sur ) afficheur I1, un co"&teur *inaire se!"ent se!"ent se!"ent

Grou&e % E,I,0,0,0
LOU22I3 MOU4AMED AMINE 5A6ID 4AIT4EM C4A78I 6GUIDER

I, Afficha!e he-a d.une /aria*$e ( *its sur 1 afficheur


Description

se!"ent

Le code suivant permet dincrmenter et dafficher une variable hexadcimale de 8 bits sur un afficheur 7 segment. Un bouton poussoir lie au pin R+0 est programm comme tant une interruption, lappui sur ce bouton permet dincrmenter cette variable.

!"c#$rer une v$ri$%#e compteur Compteur = 0 Conversion Hex 7seg

Afficheur

NON RB0=0?

OUI

Compteur

NON RB0=0?

OUI

Code assembleur

list p=16F84A ; list directive to define processor #include <p16F84A.inc ; processor specific variable definitions !!C"#F$% !C&!"FF ' !(D)!"FF ' !&(*)+!"# ' !*C!",C var +-. /0/C c1 +-. /0/D c1 +-. /0/+ c2 +-. /0/F or3 //4 3oto 5A$# of pro3ram 4e6!1!7se3 andl8 /6/F ;5,9 D+ ( =/ add8f &C:;f ;&C:=&C:<( retl8 9=/111111/= retl8 9=////11//= retl8 9=1/11/11/= retl8 9=1//1111/= retl8 9=11//11//= retl8 9=11/11/1/= retl8 9=11111/1/= retl8 9=////111/= retl8 9=1111111/= retl8 9=11/1111/= retl8 9=111/111/= retl8 9=11111///= retl8 9=/111//1/= retl8 9=1/1111//= retl8 9=1111//1/= retl8 9=111///1/= tempo movl8 1 AFF1 "# AFF/ "FF "FF "# debut ; 3o to be3innin3 5A$#

3oto r2 decfs> c1 3oto r1 decfs> c1 3oto r1 return bsf ,)A).,;*&/ bcf ,)A).,;*&1 movl8 /6/1 mov8f )*$,9 clrf )*$,A bcf ,)A).,;*&/ clrf var

;conversion et affic4a3e du :,9 movf8 var call 4e6!1!7se3 bsf &"*)A;/ ; *A/=1 AFF/ bcf &"*)A;1; *A1= / AFF1 mov8f &"*)9 call tempo ;conversion et aff de 5,9 s8apf var ; 5,9<? :,9 movf8 var s8apf var call 4e6!1!7se3 bcf &"*)A;/ bsf &"*)A;1 mov8f &"*)9 call tempo ; *A/=/ ; *A1=1

5onta3e sur $,$,

I, Afficha!e he-a d.une /aria*$e ( *its sur 0 afficheur


Description

se!"ent

&e progr$mme suiv$nt permet '(incr"menter et '($fficher un v$ri$%#e hex$'"cim$# 'e ) %its sur 'eux $fficheurs 7 segments *$ffich$ge mu#tip#ex"+, #es 'eux $fficheurs sont $ c$tho'e commune te#s -ue #es 'eux c$tho'es sont #i"s #(un $u pin *A/ et #($utre $u pin *A1.Un %outon poussoir #i"e $u pin *9/ est progr$mm" comme "t$nt une interruption, #($ppui sur ce %outon permet '(incr"menter cette v$ri$%#e. On suit #(org$nigr$mme suiv$nt /

Initi$#is$tion 0OR1 *234+ Init*56+ Convertir #e &4B*56+ Hex7seg Activer Afficheur 0 Afficheur sur 0OR1 B

1emporis$tion *78ms3s+

Convertir 94B*56+ Hex7seg

Activer $fficheur 6

1emporis$teur

Code assembleur
= #ist 'irective to 'ecfsK c7 goto r7 'ecfsK c6 goto r6

#ist p=6:;)<A 'efine processor

>inc#u'e ?p6:;)<A.inc@ = processor specific v$ri$%#e 'efinitions

AACON;IB AC0AON C AD!1AO;; C A0DR12AON C ARCAO4C

return m$in %sf 41A1U4,R00 = %$scu#er vers %$nL6

v$r 2EU 0F0C = 0x0C #G$''resse 'u v$ri$%#e compteur c6 2EU 0F0! c7 2EU 0F02 cH 2EU 0F0; ORB 0 goto m$in conversion $n'#I 0x0f =*94B 'e D +=0 $''If 0C&,f = 0C&=0C& D ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I tempo mov#I 6 movIf c6 BG06666660G BG00006600G BG60660660G BG60066660G BG66006600G BG66066060G BG66666060G BG00006660G BG66666660G BG66066660G BG66606660G BG66666000G BG06660060G BG60666600G BG66660060G BG66600060G =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e 0 6 7 H < 8 : 7 ) J A B C ! 2 ;

c#rf 1RI4B = configur$tion 'u 0OR1B en sortie *Output+ %sf 1RI4B,0 = RB0 *input+ c#rf 1RI4A = 0OR1A *output+ %cf 41A1U4,R00 = %$scu#er vers %$nL0 c#rf v$r = v$r=0 retour =conversion et $ffich$ge 'u &4B movfI v$r c$## conversion %sf 0OR1A,0 =RA0=6 A;;0 ON %cf 0OR1A,6 =RA6=0 A;;6 O;; movIf 0OR1B c$## tempo =conversion et $ffich$ge 'u 94B sI$pf v$r = 94B ?M@&4B movfI v$r = I=v$r sI$pf v$r = 94B ?M@&4B c$## conversion %cf 0OR1A,0 =RA0=0 A;;0 O;; %sf 0OR1A,6 =RA6=6 A;;6 ON movIf 0OR1B

r6

mov#I )8 = :N788N788 cOc#es movIf c7

c$## tempo %tfss 0OR1B,0 goto retour incf v$r goto retour $ttente6 %tfss 0OR1B,0 goto $ttente6 $ttente7 %tfsc 0OR1B,0 goto $ttente7 incf v$r goto retour

r7

mov#I 0xff = 788N788 cOc#es movIf cH

rH

'ecfsK cH = 788 cOc#es goto rH

2N!

5onta3e sur $,$,

I, Afficha!e he-a d.une /aria*$e ( *its sur ) afficheur

se!"ent

Description &e progr$mme suiv$nt permet '(incr"menter et '($fficher un v$ri$%#e hex$'"cim$# 'e 6: %its sur < $fficheurs 7 segments*$ffich$ge mu#tip#ex"+ ,#es < $fficheurs sont $ c$tho'e commune te#s -ue #es < c$tho'es sont #i"s $ux pins *A/ ,*A1;*A1 et *A2.Un %outon poussoir #i"e $u pin *9/ est progr$mm" comme "t$nt une interruption ,#($ppui sur ce %outon permet '(incr"menter cette v$ri$%#e.

Code

5onta3e sur $,$,

II, UN COMPTEUR +INAIRE

Description
c(est un compteur %in$ire sur ) %its -ui compte 'e %(00000000( Pus-uGQ %(66666666( , Q #($i'e '(un pic 6:f)<A, 'eux %outonMpoussoir, #(un re#i" Q #$ pin RA0 *B06+ et #($utre Q #$ pin RA6 *B07+ / M B06 #$nce #e progr$mme MB07 stoppe #e compt$ge &e r"su#t$t est $ffich" sur 'eux $fficheur 7 segments

Code

LIST

p=16F84 #include <p16F84.inc>

; Dfinition de processeur ; Dfinitions de !ri!"les

##$%&FI'

#$(#%FF ) #*DT#%& ) #(*+T,#%& ) #-S#%S$

;definitions

#D,FI&,

"p1 (%+T./0

;dfinir le (%+T./0 p!r "p1

#D,FI&,

"p1

(%+T./1

;dfinir le (%+T./1 p!r "p1

#D,FI&, ;decl!r!tion des

por" (%+T2 !ri!"les

;dfinir le (%+T2 p!r por"

c"loc3

040c

; d"ut de l! 5one ; le pre7ier

!ri!"les

ret!rd#1 61 ret!rd#1 61 endc

re8istre pour l! te7poris!tion.

; le deu4i97e re8istre pour l! te7poris!tion. ; fin de l! 5on5 !ri!"le

;confi8ur!tion des ports

or8 "sf

0400 ST.T:S/+(0

; .dresse de dp!rt !pr9s reset ; !cceder en "!n31 ; confi8urerle (%+T. en entr.

7o l; "<11111<

7o ;f T+IS. clrf "cf clrf T+IS2 ST.T:S/+(0 por" ; confi8urerle (%+T2 en sortie ; !ccder en "!n30 ; eff!cer le (%+T2 =initi!lis!tion>

de"ut "tfsc 8oto st!r c!ll incf te7po por"/f ;ret!rder le 5ero. ;incri7enter "p1 de"ut ;controler le "p1/ s!uter si c<est le ?0? =!ppui> ;"oucler si c<est "p1=1 =c<est p!s !ppui>

"tfsc "p1 8oto 8oto st!r de"ut

;controler le "p1/ s!uter si c<est le ?0? =!ppui> ;continu!it le co7pt!8e. ;si on cli@ue sur "p1 on !rrete l! co7pt!8e.

te7po clrf ret!rd#1 clrf ret!rd#1

;eti@uette de l! te7pors!tion ;initi!liser ret!rd#1 ;initi!liser ret!rd#1

te7po#1 incfs5 ret!rd#1 8oto te7po#1 ;incr7enter et tester le d"orde7ent de re!rd#1 ;"oucler s<il n<est p!s encor d"order. ;incr7enterle ret!rd#1 si le t!rd1 est d"rd. ;ref!ire si le r!t!rd#1 n<est p!s encor d"order. ;retourne de l! te7poris!tion.

incfs5 ret!rd#1 8oto return te7po#1

end

5onta3e sur $,$,

Вам также может понравиться