Programmation en C d’un microcontrôleur - page 1
Lycée LACHENAL - M. BERNARD - édité le 13/11/2008
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 µC PIC avec CCS - C compiler
Programmation en C d’un microcontrôleur - page 2
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 3
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 inter-
rupteur 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 4
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 5
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 :
PortB0
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.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !