1
Ecole Nationale d’Ingénieurs à Tunis
TP N°1 : Microprocesseurs et Microcontrôleurs
Elaboré par les élèves ingénieurs en 1AGE2:
JELLALI Amal
KALLELA Ichrak
I.INTRODUCTION:
1. Présentation de ST Visual Develop:
ST Visual Develop (STVD) fournit un environnement efficace et facile à utiliser pour le
contrôle de bout en bout du développement d'applications: de la création et du débogage
du code d'application à la programmation du microcontrôleur. STVD est fourni dans le cadre
du jeu d'outils gratuit ST MCU, qui comprend également l'interface de programmation ST
Visual Programmer et ST Assembler Linker.
2. Objectif de TP :
Afin de se familiariser avec la programmation en assembleur d’un microcontrôleur de la
famille STM8 à travers la réalisation d’un programme qui a pour but de faire clignoter une
diode LED connectée à l’un des ports de microcontrôleur.
II. Développement et exécution du code assembleur :
Avant de pouvoir exécuter le code assembleur, il faut tout d’abord créer un workspace dans
l’environnement STVD en suivant des étapes consécutives différentes.
Remarque : avant d’écrire le programme en assembleur de clignotement de diode, on va
tout d’abord tester l’assembleur ainsi que toute la chaine logicielle permettant d’obtenir le
fichier binaire qui sera chargé dans la mémoire du microcontrôleur puis exécuter.
2
1. Test de l’assembleur [8]:
Ouvrir le fichier main.asm
Effacer son contenu et le remplacer par les lignes de code
suivantes :
1 stm 8/
2
3 segment ‘rom’
4
5 boucle_infinie
6 nop
7 jra boucle _infinie
8
9 end
10
- stm8/ indique à l’assembleur qu’il s’agit d’instructions pour le processeur STM8.
- le segment rom : adresses suivantes sur16 bits ; c’est une Mémoire programme.
- boucle_infinie : un label représentant l’adresse de l’instruction qui suit.
- nop : saut vers l’instruction suivante sans réaliser d’opérations.
- jra : sauts inconditionnels dans la même section de la mémoire, vers une adresse
appartenant à autre section de la mémoire.
- la fin de programme doit être indique par la directive end. Toute ligne de code suivant
cette directive est ignorée par l’assembleur.
Dans le menu Build, cliquons sur Build
Le message 0 error, 0 warning(s) s’affiche
Connection de la carte STM8 Discovery à un port USB du PC
Dans le menu Debug, cliquons sur Start Debugging
Une fenêtre nommée Diassembly, reflétant le contenu de la
mémoire programme à partir de l’adresse 0x6000 apparait
Plaçons le curseur de la souris sur l’instruction nop, puis sur le menu
Debug cliquons sur Set PC.
On clique sur Ok à propos le message d’avertissement.
3
Une flèche jaune apparait devant l’instruction nop, tandis que la
même flèche apparait dans la fenêtre Diassembly devant l’adresse
se trouve cette instruction.
C’est en fait l’assembleur [8] a traduit le code source en code machine.
Appuyons plusieurs fois de suite sur les touches Alt-F11 ; on
observe alors l’exécution de la boucle infinie.
2. Allumage d’une diode LED :
D’après le schéma de la carte STM8 Discovery, On a :
Après avoir cliqué sur Stop Debugging dans le menu Debug,
modifiant le code source précédant permettant de configure la
ligne PD0 en sortie avant de rentrer dans la boucle infinie.
4
1 stm8/
2
3 segment ‘rom’
4
5 bset $5011,#0
6
7 boucle_infinie
8 nop
9 jra boucle_infinie
10
11 end
- bset : permet de configurer la ligne PD0 en sortie avant de rentrer dans la boucle infinie.
Il n’est pas nécessaire d’écrire la valeur 0 dans le bit du registre PD_ODR
correspondant à cette ligne puisque ce bit contient déjà la valeur 0 lors de l’initialisation du
MC.
- $ : précédant l’adresse signifie que celle-ci est codée en hexadécimal.
- # : indique une valeur immédiate.
Cliquons sur Rebuild All puis Start Debugging.
Plaçons le curseur sur l’instruction bset, cliquons sur Set PC.
Appuyons plusieurs fois sur les touches Alt-F11.
//vérifions que la LED s’allume.
3. Clignotement de la LED :
Pour faire clignoter la LED, il faut insérer dans la boucle infinie permettant à chaque itération
de complémenter l’état de la ligne PD0 du port D ; il s’agit de l’instruction bcpl (Bit
Complement).
5
1 stm8/
2
3 segment ‘rom’
4
5 bset $5011,#0
6
7 boucle_infinie
8 nop
9 bcpl $500F,#0
10 jra boucle_infinie
11
12 end
13
L’instruction bcpl prend pour valeur 0 comme elle va donner son complément.
Rebuild All puis Start Debugging
Plaçons le curseur sur bset, puis cliquons sur Set PC.
Appuyons sur les touches Alt-F11
//vérifier que la LED change d’état.
4. Exécution autonome du programme :
Au lieu d’exécuter le programme en mode pas à pas, nous allons le laisser s’exécuter de
manière autonome. C’est pour cela il faut ajouter le vecteur Reset à l’adresse 0x8000 de la
moire flash du MC.
Modifions le code source :
1 stm8/
2
3 segment ‘rom’
4
5 debut
6 bset $5011,#0
1 / 8 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 !