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
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.
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
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+
Activer $fficheur 6
1emporis$teur
Code assembleur
= #ist 'irective to 'ecfsK c7 goto r7 'ecfsK c6 goto r6
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
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
rH
2N!
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
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
##$%&FI'
;definitions
#D,FI&,
"p1 (%+T./0
#D,FI&,
"p1
(%+T./1
c"loc3
040c
!ri!"les
or8 "sf
0400 ST.T:S/+(0
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>
;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#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.
end