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
© Copyright 2024 ExpyDoc