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

BachelierInformatique&Systme 2013

Christophe*****

IEPSCF

CCLE
U

RAPPORTMICROCONTROLEURLABO1

Professeur:Najdi

BachelierInformatique&Systme 2013

Tabledesmatires

PrsentationduProjet.........................................................................................2

SchmaduchenillardavecProteus......................................................................3

Mettre1lebitB2:............................................................................................4

Mettre0lebitB0:............................................................................................4

ModificationdeRC1pourqu'ilclignote:.............................................................5

Chenillardsimplesedplaantdehautenbas:..................................................6

Chenillarddoublesedplaantdehautenbasetdebasenhaut
simultanment:....................................................................................................7

Chenillardentassementsedplaantets'accumulantverslebas:.................8

Professeur:Najdi

P a g e |1

BachelierInformatique&Systme 2013

PrsentationduProjet
Prparation:Soitlecontenud'unregistreBsur8bits.

B7
B6
B5
B4
B3
1

B2

B1

B0

Enpartantduprogrammesuivant:

Voidmain()
{

TRISC=0;

PORTC=0;

While(1)

PORTC=0x01;

Delay_ms(1000);

PORTC=0x00;

Delays_ms(1000);

}
}

Vousdevezmettre1lebitB2sanschangerlesautresbits.Commentfaitesvous?

Vousdevezmettre0lebitB0sanschangerlesautresbits.Commentfaitesvous?

1. Ecrireceprogrammepourl'essayer,lecompilerlechargerl'excuter.Modifierlepourfaire
clignoterlaLedRC1.
2. Ecrireunchenillardsimpleuneledsedplaantsurleportcdehautenbasetenutilisantle
mmetypedetemporisationquedansleprogrammeexemple.
3. Ecrireunchenillarddouble.
Unchenillarddehautenbasetsimultanementunautredebasenhautquisecroisent.
4. Ecireunchenillardentassement.1ledsedplaantets'accumulentenbas.

Professeur:Najdi

P a g e |2

BachelierInformatique&Systme 2013

SchmaduchenillardavecProteus

Lechenillardestcompos:

8LedBiby
1MicrocontrleurPIC16F877afrquencedel'horloge8Mhz
9Rsistancede3k3
1Masse
1Alimentation

Professeur:Najdi

P a g e |3

BachelierInformatique&Systme 2013

Mettre1lebitB2:
PORTC

B7

B6

B5

B4

B3

B2

B1

B0

RC7

RC6

RC5

RC4

RC3

RC2

RC1

RC0

ETAT

HEXA

0x80

0x40

0x20

0x00

0x00

0x00

0x02

0x01

BINAIRE

128

64

32

ETAT

HEXA

0x80

0x40

0x20

0x00

0x00

0x04

0x02

0x01

BINAIRE

128

64

32

16

ETAT

HEXA

0x80

0x40

0x20

0x00

0x00

0x04

0x02

0x00

BINAIRE

128

64

32

Ilsuffitdechangerl'hexadcimaledeB2pourquel'tatpasse1
B2=0x00tat00x04tatpassera1

Mettre0lebitB0:

IlsuffitdereprendreletableaucidessusestdechangerlecodehexadcimaledeB0pour
quel'tatpas0.
B0=0x01tat10x00tatpassera0

Professeur:Najdi

P a g e |4

BachelierInformatique&Systme 2013

ModificationdeRC1pourqu'ilclignote:
PourfaireclignoterRC1ilsuffitdechangerl'tatdanslaprogrammationsachantqueRC1correspond
laLedB1soitenbinaire2etenhexadcimal0x02
PORTC=0x02quicorrespondRC1
Leprogrammeseralesuivant:
voidmain()
{
TRISC=0;
PORTC=0;

while(1)
{
PORTC=0x02;//Etat1pourRC1
Delay_ms(1000);
PORTC=0x00;//Etat0
Delay_ms(1000);

Professeur:Najdi

P a g e |5

BachelierInformatique&Systme 2013

Chenillardsimplesedplaantdehautenbas:
Onmodifieleprogrammeeninitialisantagal1etunebouclequis'incrmentede1chaque
passageinfrieurgal8.PORTCprendlavaleurdea,aauraundcalagegauche.
Lecode:
voidmain(){
shorta=1;
//initialisea
inti;

//initialiseipourlabouclefor
PORTC=0;//InitializePORTC
TRISC=0;//InitializeTRISC

for(i=0;i<=8;i++)
{

PORTC=a;//PORTCprendlavaleurdea
a=a<<1;//As'incrmentede1chaquepassageverslagauche
Delay_ms(1000);//Delaitoutesles1000mslaledchangedeposition

}
}

Professeur:Najdi

P a g e |6

BachelierInformatique&Systme 2013

Chenillarddoublesedplaantdehautenbasetdebasenhaut
simultanment:
OninitialiseapourRC0ledbutduchenillardetbpourRC7lafindeceluici,unebouclequi
s'incrmentede1chaquepassageinfrieuretgal8.as'incrmentede1chaquepassagevers
lagaucheetbsedcrmentede1chaquepassageversladroite.PORTCprendlavaleurdeaetb
cequipermetd'allumerlapremireLedduhautetlapremireLeddubas.
Lecode:
voidmain()
{
inta=0x01;
intb=0x80;
inti;
PORTC=0x81;//InitializePORTC
TRISC=0;//ConfigurePORTCasoutput

for(i=0;i<=8;i++)
{
(a=a<<1)&&(b=b>>1);
Delay_ms(1000);
PORTC=(a+b);
Delay_ms(1000);
}
}

Professeur:Najdi

P a g e |7

BachelierInformatique&Systme 2013

Chenillardentassementsedplaantets'accumulantverslebas:

Lecode:
#defineDELAI_ATTENTE1000
#defineNB_DE_BITS8

voidcourse_chen(void)
{
staticintvaleur=0;
staticintnb_de_bits_actifs=0;

//sivaleurestgalelavaleurcourante
//alorsondcalevaleurde1
//sinonvaleur=1
valeur=(valeur?(valeur<<1):1);

//Affiche
//Onsoustraitoudcaled1bit
//Utilisationde+etnon|pourpermettreaffichageduchenillardteint
PORTC=~((1<<nb_de_bits_actifs)1)+valeur;

//S'iln'yapasdebitsactifsousivaleur=1etdcalage=0
if((!nb_de_bits_actifs)||(valeur==1<<(nb_de_bits_actifs1)))
{
Professeur:Najdi

P a g e |8

BachelierInformatique&Systme 2013

valeur=0;
//s'ilyaencoredesbitsactifsalorsnb_de_bits_actifs1
//sinonnb_de_bits_actifs=NB_DE_BITS
nb_de_bits_actifs=(nb_de_bits_actifs)?(nb_de_bits_actifs1):NB_DE_BITS;
}

intmain(void)
{
TRISC=0x00;

for(;;)
{
course_chen();
delay_ms(DELAI_ATTENTE);
}
}

Professeur:Najdi

P a g e |9

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