Vous êtes sur la page 1sur 4

TP2 : Programmation en Assembleur

Module Architecture des microcontrôleurs

Module

Architecture des microcontrôleurs

Enseignant

H. JEDIDI

 

Classes

3Tel B1 & 3 Tel A1

TP 2:Programmation en Assembleur

I. Objectifs :

L’objectif de cette manipulation est d’écrire des programmes en assembleur, les compiler avec MPLAB et les tester sur le simulateur ISIS.

Dans ce TP on va manipuler seulement les ports d’entrée/ Sortie.

Les interruptions et les Timers seront traités dans les TP suivants.

II. Environnement logiciel

On utilise l’IDE MPLAB pour faire la compilation des programmes et la génération des fichiers binaires.

La simulation des circuits sera faite sur ISIS.

III. Mise en marche du microcontrôleur

Le microcontrôleur a besoin d’un circuit d’horloge pour le faire fonctionner. Ce circuit peut être un circuit à base d’un quartz, un circuit RC ou même un générateur externe de signal d’horloge.

Dans cette manipulation on va utiliser un circuit à base d’un quartz.

Le circuit d’horloge sera branché comme le montre la figure suivante.

1

TP2 : Programmation en Assembleur

TP2 : Programmation en Assembleur Le choix des valeurs des capacités C1 et C2 doit être

Le choix des valeurs des capacités C1 et C2 doit être fait en se basant sur le tableau suivant

C1 et C2 doit être fait en se basant sur le tableau suivant Partie A: Commander

Partie A: Commander une LED

Dans cette parie on va commander une LED via un interrupteur.

1. Ouvrir MPLAB et créer un nouveau projet.

2. Ajouter le fichier LED.ASM donné par l’enseignant.

3. Lire ce programme et répondre aux questions suivantes :

Expliquer le rôle de la directive de config.

Quel est le rôle de l’instruction suivante : bsf STATUS,RP0.

Quel est le rôle du registre TRISB ?

2

TP2 : Programmation en Assembleur

Pourquoi on a mis dans ce registre la valeur binaire 00000001 ?

Expliquer le rôle de la commande bsf PORTB, 1.

Faite un organigramme pour expliquer le fonctionnement de ce programme.

4. Compiler le programme et corriger les erreurs.

5. Ouvrir ISIS et créer un nouveau design.

6. Insérer un PIC 16F84 et ajouter le circuit d’horloge.

7. Réaliser le montage suivant

C1 U1 16 17 OSC1/CLKIN RA0 15 15 18 OSC2/CLKOUT RA1 SW1 1 RA2 4
C1
U1
16
17
OSC1/CLKIN
RA0
15
15
18
OSC2/CLKOUT
RA1
SW1
1
RA2
4
2
MCLR
RA3
3
SW-SPST
RA4/T0CKI
X1
6
R1
RB0/INT
7
CRYSTAL
RB1
8
RB2
0R1
9
D1
RB3
10
LED-RED
RB4
11
C2
RB5
12
RB6
13
RB7
15
PIC16F84A

8. Lancer la simulation et modifier la position de l’interrupteur.

9. Que remarquer vous ?

10. Comparer le resultat de la simulation avec l’organigramme que vous avez réalisé dans la question 3.

11. Moifier le circuit pour avoir 3 LEDs de RB1 jusqu'à RB7. La commende des LEDs se fait par l’interrupteur connecté à RB0.

12. Faire les modifications necessaires au programme pour pouvoir commender les 7 LEDs ( utiliser 2 methodes différentes).

13. Ecrire une Macro LedON qui permet d’allumer les LEDs et une deuxiéme Macro LedOFF qui permet de les eteindre.

Partie B: Temporisation

On utilise un signal d’horloge avec une fréquence de 10 MHZ, donc la periode est eegal à 0,1µs et le cycle Machine est egal à 0,4µs ( 4 * Periodes). Donc par seconde on peut executer 2500000 instructions. On veut réaliser un programme qui permet d’allumer une lampe (connectée à une entrée du port B) pendant une seconde et l’eteindre pendant 2 secondes. On vous donne la fonction wait0 qui permet d’attendre 0.25 seconde.

3

TP2 : Programmation en Assembleur

wait0

movlw 0x0A movwf cmpt3 movlw 0xFF movwf cmpt1 d1 movlw 0xFF movwf cmpt2 d2 decfsz cmpt2,1 goto d2 ; si différent de zero decfsz cmpt1,1 goto d1 d3 decfsz cmpt3,1 goto d1

1. Expliquer le rôle des variables cmpt1, cmpt2 et cmpt3.

2. Expliquer commet la fonction wait0 peut réaliser une attente de 0.25 seconde.

3. Ecrire un programme qui permet de commander une LED pour l’allumer pendant une seconde et l’eteindre pendant 2 secondes.

4. Tester le programme et le compiler avec MPLAB.

5. Réaliser le circtuit avec ISIS et simuler sonc fonctionnement.

6. Ajouter une deuxiéme LED et modifier votre programme pour avoir le cycle suivant :

LED1 allumée et LED2 eteinte pendant une minute.

LED2 allumée et LED1 eteinte pendant une minute.

LED1 et LED2 sont les deux eteintes puis allumées pendant une minute.

4