Vous êtes sur la page 1sur 6

Matière: Examen Microcontroleur Date : 07/04/2015

ère
Filière/Classe : 1 Année Ingénieurs Mécatroniques Durée : 1h30
Enseignants :Y. Lahbib, F. Salem, W. Hakimi, M. Ferchichi Nbre de page :5
Documents et calculatrice: non autorisés Barème :

Exercice 1 :

1) Que désigne l'opérande de l'instruction GOTO ?


2) Combien de bits sont nécessaires pour adresser la mémoire FALSH du PIC 16F77? quels sont les
registres utilisés pour cet adressage?
3) Le PIC 16F84 possède 1k de mémoire programme, comment peut-on réaliser un saut de la première
adresse vers la dernière ?
4) Donner le nom des composants numérotés de (1) à (6) de la figure suivante:

5) Quelles sont les trois familles des PICs ? Donner la taille en bits d'une instruction appartenant à
chaque famille.

Exercice 2 :
Nous proposons de vous guider pour écrire un programme en assembleur permettant de calculer le produit de deux
nombres (A et B) codés sur 8 bits et considérés comme non signés et fournit un résultat sur 16 bits (PH sur 8 bits
et PL sur 8 bits), tel que:
Registre Signification
PL Partie du produit de poids faible
PH Partie du produit de poids fort
A Multiplicande
B : Multiplicateur
Count Compteur de nombre d'itérations

1
A7 A6 A5 A4 A3 A2 A1 A0
* B7 B6 B5 B4 B3 B2 B1 B0
PH7 PH6 PH5 PH4 PH3 PH2 PH1 PH0 PL7 PL6 PL5 PL4 PL3 PL2 PL1 PL0

=
L'organigramme utilisé est donné par la figure 1.

1- Définir dans la RAM du PIC16F877 les variables nécessaires pour ce programme en utilisant EQU ou
CBLOCKS.

2- Écrire le reste de ce programme, en initialisant les variables A et B aux valeurs suivantes : A=(11001101) 2 et
B=(10001011)2.

3- Calculer le nombre de cycles nécessaires pour l'exécution de ce programme.

2
Figure 1 : Organigramme de la multiplication 8 bits par 8 bits

Début

Count=8

PL=PH=0

W A

RAZ de la retenue
STATUS,C  0

Rotation à droite du B

STATUS,C
=1

PH=PH+W

Rotation à droite de PH

Rotation à droite de PL

Count= Count-1

Count=0 ?

Début

3
Exercice 3 :

On donne le code hexadécimal suivant provenant du désassemblage d’un code assembleur du PIC 16F877. On
définit les registres suivants :
 N EQU 70h
 M EQU 75h
 L EQU 7Ah

On propose d’utiliser les deux documents en annexe pour répondre aux questions suivantes.
1. Régénérez le code assembleur équivalent dans la colonne 2 du tableau ci-dessous?
2. Que fait ce programme
3. Quelle est la directive du préprocesseur qui a permis de placer l'instruction de la ligne 16 à l'adresse A.

Numéro de ligne Adresse de l’instruction Code hexadécimal code Assembleur


dans le code
assembleur
10 0000 3035

11 0001 00F0

12 0002 0AF0

13 0003 0103

14 0004 200E

15 0005 0AF0

16 000A 307A

17 000B 00F5

18 000C 03F5

19 000D 2800

20 000E 01F0

21 000F 0103

22 0010 0008

23 2007 220C

4
Liste des instructions

5
Annexe2 : Plan de la RAM (Memory Map)

Vous aimerez peut-être aussi