Programmation en C d’un µC PIC avec CCS - C compiler Exercice 1 : Objectif : Allumer la led rouge connectée sur le bit 0 du port B. Question 1. Créer un projet avec le fichier modèle (suivre la procédure du cours) Conception du programme : Question 2. Définir un BIT nommé RB0 pointant vers le bit O du port B Question 3. Définir le bit B0 du port B comme une sortie (les autres bits du port B en entrées). (Modifier la valeur de TRISB dans la fonction init(); Question 4. Compléter le programme pour faire s’allumer la led associée à RB0. Question 5. Compiler / vérifier qu’il n’y a pas d’erreurs / Télécharger sur la carte / Tester Exercice 2 : Objectif : Faire clignoter la LED RB0 Note : Nous n’allons pas créer de nouveau projet pour cette modification. Question 1. Modifier le programme pour faire clignoter la led au rythme de 500ms allumée; 500ms éteinte. On utilisera la fonction delay_ms(). Question 2. Compiler / vérifier qu’il n’y a pas d’erreurs / Télécharger sur la carte / Tester Exercice 3 : Objectif : Faire clignoter toutes les leds Note : Nous n’allons pas créer de nouveau projet pour cette modification. Question 1. Modifier le programme pour faire clignoter toutes les 8 leds en même temps au rythme de 500ms allumée; 500ms éteinte. Question 2. Compiler / vérifier qu’il n’y a pas d’erreurs / Télécharger sur la carte / Tester Exercice 4 : Objectif : Faire clignoter toutes les leds Note : Nous n’allons pas créer de nouveau projet pour cette modification. Question 1. Modifier le programme pour faire clignoter toutes les 8 leds par paquet de 4 au rythme de 500ms allumée; 500ms éteinte. Question 2. Compiler / vérifier qu’il n’y a pas d’erreurs / Télécharger sur la carte / Tester Exercice 5 : Objectif : Tester l’état d’un interrupteur (broche RC2), allumer des leds. Note : Créer un nouveau projet (suivre la procédure du cours). Question 1. Créer un programme qui teste l’état de la broche 2 du port C. (inter) En présence d’un état bas : Placer la valeur 153 sur le port B En présence d’un état haut : Eteindre les leds. Question 2. Compiler / vérifier qu’il n’y a pas d’erreurs / Télécharger sur la carte / Tester Retrouve t’on la valeur 153 sur le port B en fonction de l’état des Leds ? Programmation en C d’un microcontrôleur - page 1 Lycée LACHENAL - M. BERNARD - édité le 13/11/2008 Exercice 6 : Objectif : Ecrire un message sur le port série Note : Créer un nouveau projet (suivre la procédure du cours). Ce nouveau programme doit tester l’état de la broche 2 du port C. (inter) En présence d’un état bas : Allumer la led RB0; Ecrire sur le port série : « Interrupteur ouvert » (instruction Printf(); En présence d’un état haut : éteindre la led RB0. Ecrire sur le port série : « Interrupteur fermé » (instruction Printf(); Question 1. Faire l’algorithgramme de ce programme (en utilisant une structure alternative). Question 2. Coder cet algorigramme en langage C. Compiler et tester le résultat. Exercice 7 : Objectif : Recopier l’état des interrupteurs du Port C sur le port B. Note : Créer un nouveau projet (suivre la procédure du cours). Créer une variable Inter de type Int8 Soit l’Algorithme suivant : faire toujours Inter PORTC PORTB Inter Ecrire le contenu de Inter sur le port Série Temporiser pendant 100ms fin de faire toujours Question 1. Coder cet algorithme en langage C. Compiler et tester le résultat. Que constatez vous ? Question 2. En utilisant un ET LOGIQUE bit à bits, masquer les bits de poids forts (non utilisés pour les inter) du port C avant de les stocker dans la variable Inter. -> Rappel (BitNonVoulu ET 0 = 0) => Voir exemple du cours sur le ET LOGIQUE bit à Bit Exercice 8 : Objectif : Effectuer un décalage à droite puis a gauche Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : faire toujours Placer la valeur $80 dans une variable Decal POUR compteur i variant de 0 à 7 par pas de 1 Afficher Decal sur le port B, Envoyer le contenu de la variable Decal par le port série, Décaler à droite de 1 le contenu de la variable Decal Patienter 500 ms Fin de POUR POUR compteur i variant de 0 à 7 par pas de 1 Afficher Decal sur le port B, Envoyer le contenu de la variable Decal par le port série, Décaler à gauche de 1 le contenu de la variable Decal Patienter 500 ms Fin de POUR fin de faire toujours Programmation en C d’un microcontrôleur - page 2 Lycée LACHENAL - M. BERNARD - édité le 13/11/2008 Question 1. Coder cet algorigramme en langage C. Compiler et tester le résultat. Question 2. Décrire ce que réalise la fonction décalage et l’effet sur les sorties du portB Exercice 9 : Objectif : Effectuer un décalage à gauche pour décaler des bits. Question 1. Reprendre l’exercice 7 dans le but d’afficher cette fois ci l’état des 4 interrupteurs sur les 4 bits de poids forts du port B (on utiliser la fonction décalage à gauche). Exercice 10 : Objectif : Effectuer un décalage à gauche pour décaler des bits. Question 1. Reprendre l’exercice 7 dans le but d’afficher le complément logique bit à bit de chaque interrupteur sur les 4 bits de poids forts du port B Exercice 11: Objectif : Boucle de type Alternative SI - ALORS - SINON Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : faire toujours Inter (portC & %00001111) si (Inter = 0) alors allumer la led0 (RB0) sinon allumer la led7 (RB7) fin de si fin de faire toujours Question 1. Coder cet algorigramme en langage C. Compiler et tester le résultat. Question 2. Etablissez un algorithme puis un programme en faisant un test de différence au lieu d'un test d'égalité. Programmation en C d’un microcontrôleur - page 3 Lycée LACHENAL - M. BERNARD - édité le 13/11/2008 Exercice 12: Objectif : Boucle de type Alternative- Choix multiples Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : faire toujours Inter (portC & %00001111) si (Inter = 1) alors allumer la led 0 si (Inter = 2) alors allumer la led 1 si (Inter = 4) alors allumer la led 2 sinon allumer toutes les leds fin de si fin de faire toujours Question 1. Coder cet algorigramme en langage C. Compiler et tester le résultat. Observez le mauvais fonctionnement. Exercice 13: Objectif : Boucle de type Alternative- Choix multiples ( switch /case ) Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : faire toujours Inter (portc & %00001111) selon Inter cas 1 allumer la led 0 cas 2 allumer la led 1 cas 4 allumer la led 2 autre cas : allumer toutes les leds fin de selon fin de faire toujours Note : Créer un nouveau projet (suivre la procédure du cours). Question 1. Coder cet algorigramme en langage C. Compiler et tester le résultat. Programmation en C d’un microcontrôleur - page 4 Lycée LACHENAL - M. BERNARD - édité le 13/11/2008 Exercice 14: Objectif : Réaliser un comptage binaire sur le port B commençant à 0. Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : PortB 0 faire toujours PortB PortB +1 Ecrire PortB sur le port série en binaire. Delai 100ms fin de faire toujours Question 1. Coder cet algorigramme en langage C. Compiler et tester le résultat. Que se passe t’il à la fin du comptage ? Exercice 15 : Objectif : Utiliser la boucle While Question 1. Créer un programme qui permet de réaliser un comptage binaire sur le portb (leds) : 1 vers 255 (toutes les leds allumées). Le programme se “fige” à cette dernière valeur. Note : On utilisera l’instruction While(x), attention au format de la variable. Question 2. Modifiez le programme précédent de façon à utiliser la structure répéter ... jusqu'à (do while) pour réaliser la même fonction que précédemment. Exercice 16 : Objectif : Utiliser une boucle pour compter Note : Créer un nouveau projet (suivre la procédure du cours). Soit l’Algorithme suivant : Éteindre toutes les leds du portb faire toujours pour Indice de x à y faire afficher Indice sur les leds du portb afficher Indice sur le port série patienter 1000ms fin de pour fin de faire toujours Question 1. Déterminez les valeur de x et y permettant de compter de / -> 0 à 7, -> de 0 à 8, -> de 10 à 18. -> de 127 à 201 Question 2. Coder cet algorithme en langage C (pour le cas 10 à 18). Compiler et tester le résultat. Programmation en C d’un microcontrôleur - page 5 Lycée LACHENAL - M. BERNARD - édité le 13/11/2008