Corrigé

ISET GABES
LEAII41
CORRIGE TD
AU 2013/2014 sem 2
MICROCONTROLEURS
Exercices en Langage CCS pour PIC
1) SORTIES :
1. Exercice N°1 :
Afin de tester la chaîne de programmation et la carte PICDEM2, réaliser 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 N°2 :
Réaliser 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 N°3 :
Réaliser 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) Entrées - Sorties :
1. Exercice N°4 :
Réaliser un programme CCS sous MPLAB qui permet d’allumer une led lors de l’appui
sur le bouton poussoir de la carte.
ALLUMER LED0 (RB0) LORS DE L’APPUI 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 N°5 :
Réaliser un programme CCS sous MPLAB qui permet qui permet de faire clignoter
toutes les leds de la carte (ensembles), et lors de l’appui 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 N°6 :
Réaliser un programme CCS sous MPLAB qui permet qui permet de faire un
clignotement différent après chaque appui du bouton poussoir : toutes
alternativement, un quartet puis l’autre, 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 N°7 :
Réaliser un programme CCS sous MPLAB qui permet de faire un affichage binaire de
la valeur de la sortie de l’ADC, sur le port D de la carte, dépendant du réglage du
potentiomètre sur la carte. (montez les 8 diodes sur une plaque a essais)
2. Exercice N°8 :
Réaliser 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 » dépend du réglage du
potentiomètre sur la carte.
3. Exercice N°9 :
Réaliser 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 « déplacement » dépend du réglage
du potentiomètre sur la carte.
5