Vous êtes sur la page 1sur 5

ISET GABES

LEAII41 CORRIGE TD AU 2013/2014 sem 2

MICROCONTROLEURS
Exercices en Langage CCS pour PIC

1) SORTIES :
1. Exercice N1 :
Afin de tester la chane de programmation et la carte PICDEM2, raliser un
programme en CCS sous MPLAB qui permet de faire clignoter toutes les leds de la
carte.(bits 0,1,2et3 du port B)

solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
set_tris_b(0x00);
while(true)
{
output_b(0x0f);
delay_ms(500);
output_b(0x00);
delay_ms(500);
}
}

2. Exercice N2 :
Raliser un programme en CCS sous MPLAB qui permet de faire un chenillard sur les
4 leds de la carte.
solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
set_tris_b(0x00);
while(true)
{
output_b(0x0f);
delay_ms(100);
output_b(0x00);
delay_ms(500);
}
}

1
3. Exercice N3 :
Raliser un programme en CCS sous MPLAB qui permet de faire clignoter
alternativement les deux premiers bits puis les deux seconds bits sur les 4 leds de la
carte

solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
int8 i;
set_tris_b(0x00);
while(true)
{
for(i=0;i<10;i++)
{
output_b(0x03);
delay_ms(500);
output_b(0x00);
delay_ms(500);
}
for(i=0;i<10;i++)
{
output_b(0x0C);
delay_ms(500);
output_b(0x00);
delay_ms(500);
}
}
}

2) Entres - Sorties :
1. Exercice N4 :
Raliser un programme CCS sous MPLAB qui permet dallumer une led lors de lappui
sur le bouton poussoir de la carte.

ALLUMER LED0 (RB0) LORS DE LAPPUI SUR BOUTON RA5

solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
set_tris_a(0xFF); //PORT A en entr
set_tris_b(0x00); //PORTB en sortie
output_b(0x00); // eteindre PORTB
while(true)
{
if(input_state(pin_A5)==0)
output_high(PIN_B0);
else
output_low(PIN_B0);
}

2
}

2. Exercice N5 :
Raliser un programme CCS sous MPLAB qui permet qui permet de faire clignoter
toutes les leds de la carte (ensembles), et lors de lappui sur le bouton poussoir de la
carte, elles clignotent 1 sur 2 alternativement.

solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
set_tris_a(0xFF); //PORT A en entr
set_tris_b(0x00); //PORTB en sortie
output_b(0x00); // eteindre PORTB
while(true)
{
if(input_state(pin_A5)==1)
{
output_b(0x0F);
delay_ms(500);
output_b(0x00);
delay_ms(500);
}
else
{
output_b(0x0F);
delay_ms(100);
output_b(0x00);
delay_ms(500);
}
}
}

3
3. Exercice N6 :
Raliser un programme CCS sous MPLAB qui permet qui permet de faire un
clignotement diffrent aprs chaque appui du bouton poussoir : toutes
alternativement, un quartet puis lautre, 1 sur 2, ....

solution:
#include "16f877A.h"
#use delay (clock=20000000)
main()
{
int8 etat=0;
set_tris_a(0xFF); //PORT A en entr
set_tris_b(0x00); //PORTB en sortie
output_b(0x00); // eteindre PORTB
while(true)
{
if(input_state(pin_A5)==0)
{
delay_ms(100);
if(input_state(pin_A5)==1)
{
etat++;
if(etat==4) etat=0;
}
}
switch(etat)
{
case 0 : output_b(0x0F);
delay_ms(500);
output_b(0x00);
delay_ms(500);
break;
case 1 : output_b(0x0F);
delay_ms(500);
output_b(0xF0);
delay_ms(500);
break;
case 2 : output_b(0x03);
delay_ms(500);
output_b(0x0c);
delay_ms(500);
break;
case 3 : output_b(0x01);
delay_ms(500);
output_b(0x02);
delay_ms(500);
output_b(0x04);
delay_ms(500);
output_b(0x08);
delay_ms(500);
break;
}
}
}

4
A. Conversions :

(cette partie sera abord le semestre prochain inchaallah)


1. Exercice N7 :

Raliser un programme CCS sous MPLAB qui permet de faire un affichage binaire de
la valeur de la sortie de lADC, sur le port D de la carte, dpendant du rglage du
potentiomtre sur la carte. (montez les 8 diodes sur une plaque a essais)

2. Exercice N8 :

Raliser un programme CCS sous MPLAB qui permet de faire un clignoter les 8 leds
du port D de la carte, mais dont la vitesse de clignotement dpend du rglage du
potentiomtre sur la carte.

3. Exercice N9 :

Raliser un programme CCS sous MPLAB qui permet de faire un chenillard sur les 8
leds du port D de la carte, mais dont la vitesse de dplacement dpend du rglage
du potentiomtre sur la carte.